A knowledge graph querying framework for JavaScript
Flexible SPARQL and GraphQL over decentralized RDF on the Web.
Learn more about Comunica on our website.
Comunica is an open-source project that is used by many other projects,
and is being maintained by a group of volunteers.
If you would like to support this project, you may consider:
Supported by
Comunica is a community-driven project, sustained by the Comunica Association.
If you are using Comunica, becoming a sponsor or member is a way to make Comunica sustainable in the long-term.
Our top sponsors are shown below!
Query with Comunica
Read one of our guides to get started with querying:
Or jump right into one of the available query engines:
-
Source Customisation
-
Solid Customisation
-
Link Traversal Research
-
Reasoning Support
Modify or Extending Comunica
Read one of our guides to get started with modifying Comunica,
or have a look at some examples:
Contribute
Interested in contributing? Have a look at our contribution guide.
Development Setup
(JSDoc: https://comunica.github.io/comunica/)
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 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 https://github.com/comunica/comunica.git
$ 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 (@comunica/query-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.
Benchmarking
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.
Cite
If you are using or extending Comunica as part of a scientific publication,
we would appreciate a citation of our article.
@inproceedings{taelman_iswc_resources_comunica_2018,
author = {Taelman, Ruben and Van Herwegen, Joachim and Vander Sande, Miel and Verborgh, Ruben},
title = {Comunica: a Modular SPARQL Query Engine for the Web},
booktitle = {Proceedings of the 17th International Semantic Web Conference},
year = {2018},
month = oct,
url = {https://comunica.github.io/Article-ISWC2018-Resource/}
}
License
This code is copyrighted by the Comunica Association and Ghent University – imec
and released under the MIT license.