Knowledge Graphs on the Web
are a multifaceted story
- Publication APIs
- Access patterns
- Query languages
- ...
Difficulties for app developers
-
Distinguishing APIs
What kind of API is this?
-
Interacting with APIs
How to efficiently get data from this API?
-
Combining APIs
How to combine data across different APIs?
Queries as abstraction layer
SPARQL, GraphQL, ...
-
Say what needs to happen, not how
Declarative queries hide complexities of data retrieval
-
Queries are reusable
Queries are not API-specific
-
Execution via a generic, reusable query engine
Abstracts away complexities for executing queries
New optimisations can be used by merely updating query engine
Heterogeneity and Federation
-
Understanding any source
Give it any URL, and Comunica will aim to query it as efficient as possible
Linked Data documents, Triple Pattern Fragments, SPARQL endpoints, ...
-
Combining multiple sources
Data can be spread over multiple sources
-
Future: source discovery
All relevant sources may not always be known beforehand
For fully decentralised data (Solid)
Flexible and Modular Meta-Query Engine
-
Collection of building blocks
160+ independent modules implement specific functionality
-
Combining building blocks
Building custom query engines with specific functionality and settings
Using a flexible configuration system
Presets: Comunica SPARQL, Comunica Solid, ...
Query in the browser
-
Client-side querying of sources using SPARQL or GraphQL
Query on the command line
-
Installing Comunica SPARQL globally
$ npm install -g @comunica/query-sparql
-
Running a SELECT query
$ comunica-sparql https://fragments.dbpedia.org/2016-04/en \
"SELECT * WHERE { ?s ?p ?o } LIMIT 100"
-
Running a CONSTRUCT query
$ comunica-sparql https://fragments.dbpedia.org/2016-04/en \
"CONSTRUCT WHERE { ?s ?p ?o } LIMIT 100"
Learn more: https://comunica.dev/docs/query/getting_started/query_cli/
Query in an JavaScript/TypeScript app
-
Installing Comunica SPARQL locally
$ npm install @comunica/query-sparql
-
Creating a new engine
const myEngine = new QueryEngine();
-
Running a SELECT query
myEngine.queryBindings(`SELECT...`, { sources: [ 'http...' ]});
Learn more: https://comunica.dev/docs/query/getting_started/query_app/
-
Getting started guides
Tutorials on how to use Comunica in different ways
-
Modification guides
Tutorials on how to modify and configure custom query engines
-
Internal details
In-depth documentation on the internals and architecture
The Comunica Association
-
A non-profit for the sustainability of Comunica
Open to anyone
-
Receives funding from members and sponsors
Pays developers for bugs and features on the roadmap
Members collectively determine the long-term roadmap
-
Management of bounties
Companies place bounties on bugs/features, claimed by developers
https://comunica.dev/association/
Bounty program
Connecting companies with experienced developers
Members and sponsors
Determine the roadmap, and finance its development
Comunica abstracts access
to Knowledge Graphs
-
Via declarative queries
SPARQL, GraphQL, ...
-
Runs anywhere
CLI, client-side (browsers), server-side (Node.js), ...
-
Open
Anyone can use it and contribute