📬 Comunica is a highly modular and flexible meta query engine for the Web (JSdoc: https://comunica.github.io/comunica/)



Greenkeeper badge Build Status Coverage Status DOI Gitter chat

Comunica is a highly modular and flexible query engine platform for the Web.

As Comunica is a query engine platform, various configurations can be built for it, each leading to a different query engine. One example of such a configuration is Comunica SPARQL, which is an engine that is preconfigured to execute SPARQL queries over heterogeneous interfaces.

This repository should be used by Comunica module developers as it contains multiple Comunica modules that can be composed. This repository is managed as a monorepo using Lerna.

If you want to use Comunica, have a look at the manual or at Comunica SPARQL if you want to execute SPARQL queries.

If you want more background information about the motivations of this work, be sure to have a look at our article.

Browser scripts of all engines in this repo are automatically built and made available via a CDN: https://github.com/rdfjs/comunica-browser

Development Setup

If you want to develop new features or use the (potentially unstable) in-development version, you can set up a development environment for Comunica.

Comunica requires Node.JS 8.0 or higher and the Yarn package manager. Comunica is tested on OSX, Linux and Windows.

This project can be setup by cloning and installing it as follows:

$ git clone git@github.com:comunica/comunica
$ cd comunica
$ yarn install

Note: npm install is not supported at the moment, as this project makes use of Yarn's workspaces functionality

This will install the dependencies of all modules, and bootstrap the Lerna monorepo. After that, all Comunica packages are available in the packages/ folder and can be used in a development environment, such as querying with Comunica SPARQL (packages/actor-init-sparql).

Furthermore, this will add pre-commit hooks to build, lint and test. These hooks can temporarily be disabled at your own risk by adding the -n flag to the commit command.


If you want to do benchmarking with Comunica in Node.js, make sure to run Node.js in production mode as follows:

> NODE_ENV=production node packages/some-package/bin/some-bin.js

The reason for this is that Comunica extensively generates internal Error objects. In non-production mode, these also produce long stacktraces, which may in some cases impact performance.


This code is copyrighted by Ghent University – imec and released under the MIT license.