Knowledge Graphs on the Web
are a multifaceted story
        
            - Publication APIs
- Access patterns
- Query languages
- ...
Difficulties for app developers
        
            - 
              Distinguishing APIsWhat kind of API is this?
- 
              Interacting with APIsHow to efficiently get data from this API?
- 
              Combining APIsHow to combine data across different APIs?
Queries as abstraction layer
      SPARQL, GraphQL, ...
      
          - 
          	  Say what needs to happen, not howDeclarative queries hide complexities of data retrieval
- 
          	  Queries are reusableQueries are not API-specific
- 
          	  Execution via a generic, reusable query engineAbstracts away complexities for executing queries
 New optimisations can be used by merely updating query engine
Heterogeneity and Federation
      
          - 
          	  Understanding any sourceGive it any URL, and Comunica will aim to query it as efficient as possible
 Linked Data documents, Triple Pattern Fragments, SPARQL endpoints, ...
- 
          	  Combining multiple sourcesData can be spread over multiple sources
- 
          	  Future: source discoveryAll relevant sources may not always be known beforehand
 For fully decentralised data (Solid)
Flexible and Modular Meta-Query Engine
      
          - 
          	  Collection of building blocks160+ independent modules implement specific functionality
- 
          	  Combining building blocksBuilding 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 engineconst myEngine = new QueryEngine(); 
- 
          	  Running a SELECT querymyEngine.queryBindings(`SELECT...`, { sources: [ 'http...' ]});
      Learn more: https://comunica.dev/docs/query/getting_started/query_app/
    
    
    
      
      
          - 
          	  Getting started guidesTutorials on how to use Comunica in different ways
- 
          	  Modification guidesTutorials on how to modify and configure custom query engines
- 
          	  Internal detailsIn-depth documentation on the internals and architecture
The Comunica Association
        
            - 
              A non-profit for the sustainability of ComunicaOpen to anyone
- 
              Receives funding from members and sponsorsPays developers for bugs and features on the roadmap
 Members collectively determine the long-term roadmap
- 
              Management of bountiesCompanies 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 queriesSPARQL, GraphQL, ...
- 
          	  Runs anywhereCLI, client-side (browsers), server-side (Node.js), ...
- 
          	  OpenAnyone can use it and contribute