1<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Comunica â <!-- -->About</title><link rel="icon" href="/favicon.ico"/><link rel="foaf:primaryTopic" href="/#software"/><link rel="foaf:maker" href="https://www.rubensworks.net/#me"/><link rel="alternate" type="application/rss+xml" title="Comunica â Blog" href="/rss-feed.xml"/><meta property="og:image" content="/img/comunica_red.svg"/><meta property="og:title" content="Comunica â About"/><meta property="og:description" content="Learn more about Comunica."/><meta property="og:url" content="/"/><meta property="og:locale" content="en_US"/><meta property="og:site_name" content="Comunica â About"/><meta property="og:type" content="website"/><meta name="twitter:site" content="@comunicajs"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="Comunica â About"/><meta name="twitter:description" content="Learn more about Comunica."/><meta name="twitter:image" content="https://comunica.dev/img/comunica_red.png"/><meta name="next-head-count" content="19"/><link rel="icon" href="/favicon.ico"/><link href="/pagefind/pagefind-component-ui.css" rel="stylesheet"/><link rel="preload" href="/_next/static/css/4f503a97133ffbe6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/4f503a97133ffbe6.css" data-n-g=""/><noscript data-n-css=""></noscript>
1<script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script>
1<script src="/_next/static/chunks/webpack-021e77906f31bbbb.js" defer=""></script>
1<script src="/_next/static/chunks/framework-73b8966a3c579ab0.js" defer=""></script>
1<script src="/_next/static/chunks/main-f33b7b7d250b9c9e.js" defer=""></script>
1<script src="/_next/static/chunks/pages/_app-4d87a0d477d59184.js" defer=""></script>
1<script src="/_next/static/chunks/9f96d65d-93d62267e4047536.js" defer=""></script>
1<script src="/_next/static/chunks/464-74f993bb6ec7d5ee.js" defer=""></script>
1<script src="/_next/static/chunks/675-e7343f76cf12ebff.js" defer=""></script>
1<script src="/_next/static/chunks/pages/%5B...slug%5D-f97cdcd6e11fc107.js" defer=""></script>
1<script src="/_next/static/git-sha-abf81e5787afbd52b0334d914e91e5f517dd4b98/_buildManifest.js" defer=""></script>
1<script src="/_next/static/git-sha-abf81e5787afbd52b0334d914e91e5f517dd4b98/_ssgManifest.js" defer=""></script>
1</head><body><nav><div><a href="/"><img src="/img/comunica_white.svg" class="nav-icon" alt="Comunica logo"/></a><a href="#" class="toggle-nav"><img src="/img/navigation-toggle.svg" alt="Toggle navigation bar"/></a><pagefind-modal-trigger compact=""></pagefind-modal-trigger></div><ul><li><a href="https://query.comunica.dev/">Try live</a></li><li><a href="/docs/">Docs</a></li><li><a href="/blog/">Blog</a></li><li><a href="/about/">About</a></li><li><a href="/ask/">Ask</a></li><li><a href="/research/">Research</a></li><li><a href="/events/">Events</a></li><li><a href="/association/">Association</a></li><li><a href="https://github.com/comunica/comunica">GitHub</a></li><li class="nav-search-desktop"><pagefind-modal-trigger placeholder="Searchâ¦"></pagefind-modal-trigger></li></ul></nav><div class="nav-pusher"></div><pagefind-modal reset-on-close=""></pagefind-modal><div id="__next"><div class="container-page"><div class="container-page"><main><ul class="breadcrumbs"></ul><h1>About</h1><hr/><div class="headers-overview"><p>On this page</p><ol class="headers-overview-elements"></ol></div><div data-pagefind-weight="1"><p>Comunica is a knowledge graph querying framework.<br/> 2This page provides more details about its goals and motivations.</p> 3<p>Related pages:</p> 4<ul> 5<li><a href="/roadmap/">Roadmap</a></li> 6<li><a href="/contribute/">Contribute</a></li> 7<li><a href="/performance/">Performance</a></li> 8<li><a href="/logos/">Logos</a></li> 9</ul> 10<div class="video"> 11Watch a <a href="https://youtu.be/ydpdziVNw1k">Webinar recording</a> to learn more about Comunica. 12</div> 13<h2 id="flexible-querying-of-linked-data">Flexible querying of Linked Data</h2> 14<p><a href="https://www.w3.org/standards/semanticweb/data"><strong>Linked Data</strong></a> on the Web exists in <strong>many shapes and forms</strong>. 15Linked Data can be published using plain <a href="https://www.w3.org/TR/rdf11-concepts/">RDF</a> files 16in various <strong>syntaxes</strong>, such as <a href="https://json-ld.org/">JSON-LD</a>, <a href="https://www.w3.org/TR/turtle/">Turtle</a>, <a href="https://www.w3.org/TR/html-rdfa/">HTML+RDFa</a>, and more. 17Next to that, different forms of <strong>queryable Web interfaces</strong> exist, such as <a href="https://www.w3.org/TR/sparql11-protocol/">SPARQL endpoints</a> and <a href="https://linkeddatafragments.org/in-depth/#tpf">Triple Pattern Fragments (TPF) interfaces</a>. 18If we want to <strong>query</strong> Linked Data from the Web, we need to be able to cope with this heterogeneity.</p> 19<p><strong>Comunica</strong> is a <strong>quering framework</strong> that has been designed to handle different types of Linked Data interfaces in a <strong>flexible</strong> manner. 20Its primary goal is <em>executing <a href="https://www.w3.org/TR/sparql11-query/">SPARQL</a> queries over one or more interfaces</em>.</p> 21<h2 id="comunica-is-a-meta-query-engine">Comunica is a meta-query engine</h2> 22<p>Comunica should not be seen as a query engine. 23Instead, Comunica is a <em>meta</em> query engine using which query engines can be created. 24It does this by providing a set of <strong>modules</strong> that can be <strong>wired</strong> together in a flexible manner.</p> 25<p>While we provide default configurations of Comunica to easily <a href="/docs/query/getting_started/">get started with querying</a>, 26anyone can <a href="/docs/modify/getting_started/">configure their own query engine</a>. 27This fine-tuning of Comunica to suit your own needs, and avoiding the overhead of modules that are not needed.</p> 28<h2 id="for-and-on-the-web">For and on the Web</h2> 29<p>We strongly believe in the existence of <strong>open Web standards</strong>, such as those provided by <a href="https://www.w3.org/">W3C</a> and <a href="https://whatwg.org/">WhatWG</a>. 30As such, <a href="/docs/query/advanced/specifications/">Comunica <strong>implements</strong> several specifications</a> such as <a href="https://www.w3.org/TR/rdf11-concepts/">RDF</a> and <a href="https://www.w3.org/TR/sparql11-query/">SPARQL</a>. 31Furthermore, Comunica is implemented using Web-based technologies in <strong>JavaScript</strong>, which enables usage through browsers, 32the command line, the SPARQL protocol, or any Web or JavaScript application.</p> 33<h2 id="open">Open</h2> 34<p>Comunica is an <strong>open-source</strong> software project that is available under the <a href="https://github.com/comunica/comunica/blob/master/LICENSE.txt">MIT license</a>, 35which means that it is allowed to be used in both open and commercial projects. 36Next to the source code, also our development process is open, which you can read or contribute to on <a href="https://github.com/orgs/comunica/projects">GitHub</a>, 37or read our <a href="/roadmap/">high-level roadmap</a>.</p> 38<h2 id="research-and-education">Research and Education</h2> 39<p>Comunica is designed as a flexible research platform for research on query execution. 40As such, our goal is to make it sufficiently easy for researchers 41to investigate alternative query algorithms and techniques by <a href="/docs/modify/">modifying engines</a>. 42Next to this, we also aim to educate researchers and developers on <a href="/docs/">how to use</a> Comunica.</p> 43<h2 id="linked-data-fragments">Linked Data Fragments</h2> 44<p>One of the motivations behind Comunica is to be a <a href="https://linkeddatafragments.org/concept/"><strong>Linked Data Fragments Client</strong></a>. 45Linked Data Fragments is a theoretical framework to analyse different Linked Data interfaces.</p> 46<p>While software used to exist to query over specific types of Linked Data interfaces, 47it used to be impossible to query over <strong>combinations of different interfaces</strong>. 48Comunica solves this need by being independent of specific types of interfaces, 49as support for new interfaces can be plugged in.</p> 50<h2 id="stability">Stability</h2> 51<p>A primary goal of Comunica is to acts as a <strong>stable</strong> querying framework. 52For this, we spend extra effort in <a href="/docs/modify/advanced/testing/">continuous testing</a> at different levels.</p> 53<h2 id="supporting-the-javascript-ecosystem">Supporting the JavaScript ecosystem</h2> 54<p>Comunica depends on many dependencies to achieve its goals, 55such as spec-compliant RDF parsers and serializers. 56We support these libraries, and contribute to them.</p> 57<h2 id="who-works-on-comunica-">Who works on Comunica?</h2> 58<p>First and foremost, Comunica is an <strong>open-source</strong> framework. 59The Comunica project has been initiated by <a href="https://www.ugent.be/ea/idlab/en">IDLab</a> at Ghent University â imec, 60and is being actively developed and maintained by a variety of <a href="https://github.com/comunica/comunica/graphs/contributors">contributors</a>. 61All development happens publicly via GitHub <a href="https://github.com/orgs/comunica/projects">project boards</a>, <a href="https://github.com/comunica/comunica/issues">issues</a>, and <a href="https://github.com/comunica/comunica/pulls">pull requests</a>. 62Anyone is welcome to <a href="/contribute/">
62contribute</a> to this project.</p> 63<p>As of recently, the <a href="/association/">Comunica Association</a> has been founded as a non-profit organization 64to make Comunica development more sustainable in the long term.</p></div></main></div></div></div><footer>©2018 â <!-- -->2026<!-- --> <a href="http://www.ugent.be/">Ghent University</a> â <a href="http://www.imec.be/">imec</a>, Belgium<br/><a href="https://github.com/comunica/website">Source of this website</a></footer>
64<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"frontmatter":{"title":"About","description":"Learn more about Comunica."},"body":"\nComunica is a knowledge graph querying framework.\u003cbr \u003e\nThis page provides more details about its goals and motivations.\n\nRelated pages:\n* [Roadmap](/roadmap/)\n* [Contribute](/contribute/)\n* [Performance](/performance/)\n* [Logos](/logos/)\n\n\u003cdiv class=\"video\"\u003e\nWatch a \u003ca href=\"https://youtu.be/ydpdziVNw1k\"\u003eWebinar recording\u003c/a\u003e to learn more about Comunica.\n\u003c/div\u003e\n\n## Flexible querying of Linked Data\n\n[**Linked Data**](https://www.w3.org/standards/semanticweb/data) on the Web exists in **many shapes and forms**.\nLinked Data can be published using plain [RDF](https://www.w3.org/TR/rdf11-concepts/) files\nin various **syntaxes**, such as [JSON-LD](https://json-ld.org/), [Turtle](https://www.w3.org/TR/turtle/), [HTML+RDFa](https://www.w3.org/TR/html-rdfa/), and more.\nNext to that, different forms of **queryable Web interfaces** exist, such as [SPARQL endpoints](https://www.w3.org/TR/sparql11-protocol/) and [Triple Pattern Fragments (TPF) interfaces](https://linkeddatafragments.org/in-depth/#tpf).\nIf we want to **query** Linked Data from the Web, we need to be able to cope with this heterogeneity.\n\n**Comunica** is a **quering framework** that has been designed to handle different types of Linked Data interfaces in a **flexible** manner.\nIts primary goal is _executing [SPARQL](https://www.w3.org/TR/sparql11-query/) queries over one or more interfaces_.\n\n## Comunica is a meta-query engine\n\nComunica should not be seen as a query engine.\nInstead, Comunica is a _meta_ query engine using which query engines can be created.\nIt does this by providing a set of **modules** that can be **wired** together in a flexible manner.\n\nWhile we provide default configurations of Comunica to easily [get started with querying](/docs/query/getting_started/),\nanyone can [configure their own query engine](/docs/modify/getting_started/).\nThis fine-tuning of Comunica to suit your own needs, and avoiding the overhead of modules that are not needed.\n\n## For and on the Web\n\nWe strongly believe in the existence of **open Web standards**, such as those provided by [W3C](https://www.w3.org/) and [WhatWG](https://whatwg.org/).\nAs such, [Comunica **implements** several specifications](/docs/query/advanced/specifications/) such as [RDF](https://www.w3.org/TR/rdf11-concepts/) and [SPARQL](https://www.w3.org/TR/sparql11-query/).\nFurthermore, Comunica is implemented using Web-based technologies in **JavaScript**, which enables usage through browsers,\nthe command line, the SPARQL protocol, or any Web or JavaScript application.\n\n## Open\n\nComunica is an **open-source** software project that is available under the [MIT license](https://github.com/comunica/comunica/blob/master/LICENSE.txt),\nwhich means that it is allowed to be used in both open and commercial projects.\nNext to the source code, also our development process is open, which you can read or contribute to on [GitHub](https://github.com/orgs/comunica/projects),\nor read our [high-level roadmap](/roadmap/).\n\n## Research and Education\n\nComunica is designed as a flexible research platform for research on query execution.\nAs such, our goal is to make it sufficiently easy for researchers\nto investigate alternative query algorithms and techniques by [modifying engines](/docs/modify/).\nNext to this, we also aim to educate researchers and developers on [how to use](/docs/) Comunica.\n\n## Linked Data Fragments\n\nOne of the motivations behind Comunica is to be a [**Linked Data Fragments Client**](https://linkeddatafragments.org/concept/).\nLinked Data Fragments is a theoretical framework to analyse different Linked Data interfaces.\n\nWhile software used to exist to query over specific types of Linked Data interfaces,\nit used to be impossible to query over **combinations of different interfaces**.\nComunica solves this need by being independent of specific types of interfaces,\nas support for new interfaces can be plugged in.\n\n## Stability\n\nA primary goal of Comunica is to acts as a **stable** querying framework.\nFor this, we spend extra effort in [continuous testing](/docs/modify/advanced/testing/) at different levels.\n\n## Supporting the JavaScript ecosystem\n\nComunica depends on many dependencies to achieve its goals,\nsuch as spec-compliant RDF parsers and serializers.\nWe support these libraries, and contribute to them.\n\n## Who works on Comunica?\n\nFirst and foremost, Comunica is an **open-source** framework.\nThe Comunica project has been initiated by [IDLab](https://www.ugent.be/ea/idlab/en) at Ghent University â imec,\
64nand is being actively developed and maintained by a variety of [contributors](https://github.com/comunica/comunica/graphs/contributors).\nAll development happens publicly via GitHub [project boards](https://github.com/orgs/comunica/projects), [issues](https://github.com/comunica/comunica/issues), and [pull requests](https://github.com/comunica/comunica/pulls).\nAnyone is welcome to [contribute](/contribute/) to this project.\n\nAs of recently, the [Comunica Association](/association/) has been founded as a non-profit organization\nto make Comunica development more sustainable in the long term.\n","excerpt":"","path":"/about","sortedPaths":["/about/","/ask/","/association/","/association/board/","/association/bounty_process/","/blog/","/blog/2020-08-19-intro/","/blog/2020-08-24-release_1_16/","/blog/2020-09-25-release_1_17/","/blog/2020-11-02-release_1_18/","/blog/2021-01-18-release_1_19/","/blog/2021-03-30-release_1_20/","/blog/2021-04-27-release_1_21/","/blog/2021-06-21-comunica_association_bounties/","/blog/2021-08-30-release_1_22/","/blog/2021-11-08-comunica_association_members/","/blog/2022-03-03-release_2_0/","/blog/2022-06-29-release_2_3/","/blog/2022-07-14-association_launch/","/blog/2022-08-24-release_2_4/","/blog/2022-11-09-release_2_5/","/blog/2023-05-24-release_2_7/","/blog/2023-07-04-release_2_8/","/blog/2024-03-19-release_3_0/","/blog/2024-05-11-release_3_1/","/blog/2024-07-05-release_3_2/","/blog/2024-10-15-release_4_0/","/blog/2025-04-29-release_4_2/","/blog/2025-09-17-release_4_4/","/blog/2026-01-07-release_5_0/","/blog/2026-04-14-release_5_2/","/blog/2026-09-14-release_5_4/","/contribute/","/docs/","/docs/query/","/docs/query/getting_started/","/docs/query/getting_started/query_cli/","/docs/query/getting_started/update_cli/","/docs/query/getting_started/query_cli_file/","/docs/query/getting_started/query_app/","/docs/query/getting_started/update_app/","/docs/query/getting_started/query_browser_app/","/docs/query/getting_started/query_docker/","/docs/query/getting_started/setup_endpoint/","/docs/query/getting_started/setup_web_client/","/docs/query/getting_started/query_dev_version/","/docs/query/getting_started/query_next_version/","/docs/query/usage/","/docs/query/faq/","/docs/query/advanced/","/docs/query/advanced/basic_auth/","/docs/query/advanced/bindings/","/docs/query/advanced/caching/","/docs/query/advanced/context/","/docs/query/advanced/destination_types/","/docs/query/advanced/explain/","/docs/query/advanced/extension_functions/","/docs/query/advanced/federation/","/docs/query/advanced/graphql_ld/","/docs/query/advanced/hdt/","/docs/query/advanced/logging/","/docs/query/advanced/mcp/","/docs/query/advanced/memento/","/docs/query/advanced/proxying/","/docs/query/advanced/rdfjs_querying/","/docs/query/advanced/rdfjs_updating/","/docs/query/advanced/rdfjs/","/docs/query/advanced/result_formats/","/docs/query/advanced/solid/","/docs/query/advanced/source_types/","/docs/query/advanced/sparql_query_types/","/docs/query/advanced/specifications/","/docs/query/advanced/statistics_tracking/","/docs/modify/","/docs/modify/getting_started/","/docs/modify/getting_started/custom_config_cli/","/docs/modify/getting_started/custom_config_app/","/docs/modify/getting_started/custom_init/","/docs/modify/getting_started/custom_web_client/","/docs/modify/getting_started/contribute_actor/","/docs/modify/getting_started/actor_parameter/","/docs/modify/getting_started/contribute_new_operation/","/docs/modify/extensions/","/docs/modify/faq/","/docs/modify/advanced/","/docs/modify/advanced/actor_patterns/","/docs/modify/advanced/algebra/","/docs/modify/advanced/architecture_core/","/docs/modify/advanced/architecture_sparql/","/docs/modify/advanced/browser_builds/","/docs/modify/advanced/buses/","/docs/modify/advanced/componentsjs/","/docs/modify/advanced/custom_cli_arguments/","/docs/modify/advanced/expression-evaluator/","/docs/modify/advanced/hypermedia/","/docs/modify/advanced/joins/","/docs/modify/advanced/linking_local_version/","/docs/modify/advanced/logging/","/docs/modify/advanced/mediators/","/docs/modify/advanced/metadata/","/docs/modify/advanced/observers/","/docs/modify/advanced/query_operation_result_types/","/docs/modify/advanced/rdf_parsing_serializing/","/docs/modify/advanced/testing/","/docs/modify/advanced/where_provenance/","/docs/modify/benchmarking/","/events/","/events/2019-06-03-eswc/","/events/2019-10-26-iswc/","/events/2022-09-07-association_launch/","/events/2022-09-13-semantics_conference/","/events/2026-01-29-goblin_coimbra/","/events/2026-05-12-eswc/","/logos/","/performance/","/research/","/research/amf/","/research/link_traversal/","/research/versioning/","/roadmap/"],"mattersData":{"/about/":{"title":"About","description":"Learn more about C
64omunica."},"/ask/":{"title":"Ask","description":"Ask questions about Comunica."},"/association/":{"title":"Comunica Association","description":"Organization for ensuring the maintenance and development of the Comunica"},"/association/board/":{"title":"Board of Directors","description":"The board makes decisions regarding the Comunica Association"},"/association/bounty_process/":{"title":"Bounty Procedures","description":"The process for handling bounties on issues"},"/blog/":{"title":"Blog","description":"Blog posts, containing announcements or other news.","blog_index":true},"/blog/2020-08-19-intro/":{"title":"A New Website for Comunica","excerpt":"\nWe're happy to present a brand new website for Comunica! ð\n_Don't know that Comunica is? [Read about it here](/about/)._\n\nThis new version contains all **basic information** around Comunica.\nAdditionally, it contains **guides** on how to [query with Comunica](/docs/query/),\nand how to [modify or extend it](/docs/modify/). \n\n"},"/blog/2020-08-24-release_1_16/":{"title":"Release 1.16.0: Full spec compliance, property paths, CSV/TSV, basic auth, and fixes","excerpt":"\nWith the latest release of Comunica, we have achieved the major milestone of **full compliance to the SPARQL 1.1 specification**.\nWhile Comunica has had support for all SPARQL 1.1 operators for a while,\nsome small parts were not always fully handled according to the spec,\nand property paths were not fully supported.\n\nThanks to the help of several students over the summer, these issues have been resolved,\nand all tests from [the SPARQL 1.1 test suite](https://w3c.github.io/rdf-tests/sparql11/) now pass.\n\n"},"/blog/2020-09-25-release_1_17/":{"title":"Hacktoberfest and Release 1.17.0","excerpt":"\nIn this post, we give an overview of\ncontribution possibilities during [Hacktoberfest](https://hacktoberfest.digitalocean.com/),\nand the newly released 1.17.0 version. \n\n"},"/blog/2020-11-02-release_1_18/":{"title":"Release 1.18.0: Smaller Web bundles and Microdata parsing","excerpt":"\nThis post gives a brief overview of the new 1.18.0 release.\n\n"},"/blog/2021-01-18-release_1_19/":{"title":"Release 1.19.0: Simplifications for extensions","excerpt":"\nThe 1.19.0 release focuses on simplications for developing Comunica extension.\nIt contains no significant fixes or changes for end-users.\n\n"},"/blog/2021-03-30-release_1_20/":{"title":"Release 1.20.0: SPARQL Update support","excerpt":"\nWith this new 1.20.0 release, we bring support for [SPARQL Update](https://www.w3.org/TR/sparql11-update/) queries to Comunica.\nNext to this, several enhancements were made to improve developer experience,\nminor new features, and important bug fixes.\n\n"},"/blog/2021-04-27-release_1_21/":{"title":"Release 1.21.0: Hypermedia-based SPARQL Updating","excerpt":"\nThe 1.21.0 version is a smaller release,\nthat mainly introduces the necessary wiring to enable hypermedia-driven SPARQL update querying,\nwhich lays the foundations for highly flexible updating of heterogeneous destinations, such as Solid data pods.\n\nIn other words, this provides the necessary â¨_magic_⨠for updating many different types of things. \n\n"},"/blog/2021-06-21-comunica_association_bounties/":{"title":"Announcing the Comunica Association, and a Bounty Program","excerpt":"\nIn this post, we announce the creation of the [Comunica Association](/association/),\nand the introduction of a new bounty system using which **organizations** and companies\ncan **fund development** of new features and the fixing of bugs,\nand through which **developers** can take up these bounties and **get paid**.\n\n"},"/blog/2021-08-30-release_1_22/":{"title":"Release 1.22.0: Improved update support, extension functions, and improved CLI handling","excerpt":"\nThe 1.22.0 version features some major additions, and a bunch of smaller internal fixes and performance improvements ð!\nThe primary changes that are discussed in this post are\nsupport for more SPARQL update destination types,\nSPARQL extension functions,\nand rewritten CLI handling.\n\n"},"/blog/2021-11-08-comunica_association_members/":{"title":"Comunica Association Memberships","excerpt":"\n[Earlier this year](/blog/2021-06-21-comunica_association_bounties/),\nwe announced the [Comunica Association](/association/),\nwhich is a non-profit organization that aims to make Comunica sustainable in the long term.\nIn this post, we announce the possibility to become a _member_ or _sponsor_ to the association,\nallowing organizations to drive the future roadmap of Comunica.\nWe plan an **official lau
64nch in fall 2022**, up until when organizations can choose\nto become a **founding member** of the Comunica Association.\n\n"},"/blog/2022-03-03-release_2_0/":{"title":"Release 2.0.0: A new major release with radical simplifications and performance improvements","excerpt":"\nSince its initial release a couple of years ago, Comunica has grown a lot,\nbut it has always remained fully backwards-compatible with every update.\nHowever, as with every software project, there is sometimes a need to make breaking changes\nso that old mechanisms can be replaced with better, newer ones.\nWith this update, we have aggregated several breaking changes into one large update,\nall of which should improve the lives of users one way or another.\nBelow, the primary changes are listed.\n\n"},"/blog/2022-06-29-release_2_3/":{"title":"Release 2.3.0: Better timeout support and minor enhancements","excerpt":"\nIt's been a while since our latest blog post,\nso here's a small announcement on the latest 2.3.0 release.\n\n"},"/blog/2022-07-14-association_launch/":{"title":"Official launch of the Comunica Association","excerpt":"\nAs previously announced, we will be officially launching the Comunica Association during the fall of this year.\nMore concretely, we are organizing an online launch event on the 7th of September,\nand we will be physically present at the Semantics conference in Vienna the week afterwards.\n\n"},"/blog/2022-08-24-release_2_4/":{"title":"Release 2.4.0: Better browser support and performance improvements","excerpt":"\nWe just released a new minor version of Comunica.\nHere's an overview of the main changes.\n\n"},"/blog/2022-11-09-release_2_5/":{"title":"Release 2.5.0: Fixes, string sources, and HTTP error handling","excerpt":"\nWe just released a new small update. Here's an overview of the main changes.\n\n"},"/blog/2023-05-24-release_2_7/":{"title":"Release 2.7.0: Better date support, better performance over SPARQL endpoints, and internal fixes","excerpt":"\nToday, we released a new minor update, which brings exciting new features, performance improvements, and bug fixes.\nBelow, you can find an overview of the main changes.\n\n"},"/blog/2023-07-04-release_2_8/":{"title":"Release 2.8.0: Support for quoted triples (RDF-star and SPARQL-star)","excerpt":"\nThis minor release focuses on a single but significant new feature: support for quoted triples.\n\n"},"/blog/2024-03-19-release_3_0/":{"title":"Release 3.0: ð¥ Blazingly fast federation over heterogeneous sources","excerpt":"\nMore than 2 years ago, we released [Comunica version 2.0](/blog/2022-03-03-release_2_0/),\nwhich featured many internal and external API changes that significantly simplified its usage.\nToday, we release version 3.0, which focuses more on internal changes, with limited changes to the external API.\nMost of the changes relate to the handling of data sources during query planning,\nwhich allows **more efficient query plans to be produced when querying over federations of heterogeneous sources**.\nThis means that for people using Comunica, the number of breaking changes in this update are very limited.\nThings will simplify be faster in general, and some small convenience features have been added,\nsuch as results being [async iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols). \nTo developers extending Comunica with custom actors, there will be some larger breaking changes.\n\n"},"/blog/2024-05-11-release_3_1/":{"title":"Release 3.1: ð± New package with tiny bundle size","excerpt":"\nThe primary addition in this release is the new [`@comunica/query-sparql-rdfjs-lite`](https://www.npmjs.com/package/@comunica/query-sparql-rdfjs-lite) package,\nwhich is optimized for small browser bundle size.\nCurrently, the minified size of this package is 648,88 KB (145,79 KB when gzipped).\nThis is about as small as you can get without removing required functionality from the SPARQL 1.1 spec\nBut if you don't need everything from SPARQL 1.1, it could get much smaller even!\n\n"},"/blog/2024-07-05-release_3_2/":{"title":"Release 3.2: ð Knowing what to optimize","excerpt":"\nFor this release, we mainly focu
64sed on improving tooling to more easily track down performance issues.\nConcretely, we improved our query explain output,\nstarted running multiple benchmarks in our CI to avoid performance regressions,\nand applied several performance improvements that were identified following these changes.\n\n"},"/blog/2024-10-15-release_4_0/":{"title":"Release 4.0: ð Faster actor testing and modularized expressions","excerpt":"\nEarlier this year, [Comunica version 3.0 was released](/blog/2024-03-19-release_3_0/),\nwhich introduced better querying planning across data sources and several convenience features.\nSince then, we had several minor releases introducing multiple additions and performance improvements.\nIn [release 3.2](/blog/2024-07-05-release_3_2/), we introduced better techniques for discovering performance bottleneck.\nThis allowed us identify some low-level bottlenecks in the internals of Comunica which limited performance.\nFixing these issues requires breaking changes to the internal API of Comunica,\nwhich is the main reason for this major update.\nAs a result of these changes, we see **performance improvements of 20% to 40%**.\nBreaking changes are limited to internal Comunica APIs.\nThis means that developers that make use of Comunica can have their cake _and_ eat it ð;\nno breaking changes _and_ gaining a performance boost.\n\n"},"/blog/2025-04-29-release_4_2/":{"title":"Release 4.2: ð Towards real-world federation improvements","excerpt":"\nIn this release, we mainly focused on taking steps towards solving practical problems\nthat are encountered when performing federated SPARQL queries in real-world use cases.\nIn addition, a variety of low-level performance improvements were applied.\n\n"},"/blog/2025-09-17-release_4_4/":{"title":"Release 4.4: ð¸ Quality-of-life features and optimizations","excerpt":"\nThis release primarily includes several QoL features, performance improvements, and robustness changes.\nSome of the most notable changes are mentioned below.\n\nBehind the scenes, we are also working hard towards supp
64ort for the upcoming [SPARQL 1.2 specification](https://www.w3.org/TR/sparql12-query/),\nfor which we plan a new release shortly after the specification transitions to recommendation stage.\n\n"},"/blog/2026-01-07-release_5_0/":{"title":"Release 5.0: ð§© Increased parsing modularity for SPARQL 1.2 and beyond","excerpt":"\nMore than one year ago, [we released Comunica 4.0](/blog/2024-10-15-release_4_0/),\nwhich focused on increased expression modularization and performance.\nThe current 5.0 release focuses primarily on the introduction of RDF and SPARQL 1.2 support,\nand the migration to a new parsing and algebra framework.\nFor end-users, this release introduces no significant breaking changes.\nFor module developers, the primary breaking change is related to this algebra migration.\n\n"},"/blog/2026-04-14-release_5_2/":{"title":"Release 5.2: ð¥ Robustness for SPARQL endpoint detection and various performance improvements","excerpt":"\nIn this minor release, we mainly focused on improving the robustness and performance of federated SPARQL queries over real-world data sources.\n\n"},"/blog/2026-09-14-release_5_4/":{"title":"Release 5.4: ð Variable SERVICE targets, major performance improvements, and stricter spec compliance","excerpt":"\nIn this minor release, we focused on a variety of improvements, such as better performance, stricter spec compliance, and support for variable `SERVICE` targets.\n\n"},"/contribute/":{"title":"Contribute","description":"Contribute to the development of Comunica."},"/docs/":{"title":"Documentation","description":"Overview of all Comunica documentation.","index":true},"/docs/query/":{"title":"Query with Comunica","description":"Learn how to execute queries in different environments. Such as live in the browser, in JavaScript applications, or the CLI.","index":true},"/docs/query/getting_started/":{"title":"Getting started with querying","description":"Basic guides on how to easily get started with querying.","index":true},"/docs/query/getting_started/query_cli/":{"title":"Querying from the command line","description":"Execute SPARQL queries directly from the command line."},"/docs/query/getting_started/update_cli/":{"title":"Updating from the command line","description":"Execute SPARQL Update queries directly from the command line."},"/docs/query/getting_started/query_cli_file/":{"title":"Querying local files from the command line","description":"Execute SPARQL queries over local RDF files directly from the command line."},"/docs/query/getting_started/query_app/":{"title":"Querying in a JavaScript app","description":"Execute SPARQL queries from within your application using the JavaScript API."},"/docs/query/getting_started/update_app/":{"title":"Updating in a JavaScript app","description":"Execute SPARQL Update queries from within your application using the JavaScript API."},"/docs/query/getting_started/query_browser_app/":{"title":"Querying in a JavaScript browser app","description":"Execute SPARQL queries from within your client-side browser application using the JavaScript API."},"/docs/query/getting_started/query_docker/":{"title":"Querying from a Docker container","description":"Execute SPARQL queries within a Docker container."},"/docs/query/getting_started/setup_endpoint/":{"title":"Setting up a SPARQL endpoint","description":"Allow querying over HTTP via the SPARQL protocol"},"/docs/query/getting_started/setup_web_client/":{"title":"Setting up a Web client","description":"Set up a user-friendly static Web page where SPARQL queries can be executed client-side"},"/docs/query/getting_started/query_dev_version/":{"title":"Query using the latest development version","description":"If you want to make use of the latest changes that are not released yet"},"/docs/query/getting_started/query_next_version/":{"title":"Query with experimental SPARQL features","description":"If you want to make use of non-standard SPARQL features"},"/docs/query/usage/":{"title":"Usage showcase","description":"Examples of where Comunica is used."},"/docs/query/faq/":{"title":"Querying FAQ","description":"Frequently asked questions about using Comunica."},"/docs/query/advanced/":{"title":"Advanced querying","description":"Advanced guides on how to get the most out of Comunica.","index":true},"/docs/query/advanced/basic_auth/":{"title":"HTTP Basic Authentication","description":"Send authenticated HTTP requests by including username and password."}
64,"/docs/query/advanced/bindings/":{"title":"Bindings","description":"Bindings objects are used to represent results of SPARQL SELECT queries"},"/docs/query/advanced/caching/":{"title":"Caching","description":"When remote sources are requested, caching allows them to be reused in the future."},"/docs/query/advanced/context/":{"title":"Passing a context","description":"A context can be passed to a query engine to tweak its runtime settings."},"/docs/query/advanced/destination_types/":{"title":"Destination types","description":"Comunica detects and handles different types of destinations."},"/docs/query/advanced/explain/":{"title":"Explain","description":"Display information about the logical and physical query plan"},"/docs/query/advanced/extension_functions/":{"title":"Extension Functions","description":"Providing implementations for SPARQL extension functions."},"/docs/query/advanced/federation/":{"title":"Federated Querying","description":"Query over the union of data within any number of sources"},"/docs/query/advanced/graphql_ld/":{"title":"GraphQL-LD","description":"Using the power of JSON-LD contexts, GraphQL queries can be executed by Comunica"},"/docs/query/advanced/hdt/":{"title":"HDT","description":"HDT offers highly compressed immutable RDF storage."},"/docs/query/advanced/logging/":{"title":"Logging","description":"Loggers can be set to different logging levels to inspect what Comunica is doing behind the scenes."},"/docs/query/advanced/mcp/":{"title":"MCP","description":"Allow AI agents to query with Comunica through MCP."},"/docs/query/advanced/memento/":{"title":"Memento","description":"Using the Memento protocol, time travel queries can be executed."},"/docs/query/advanced/proxying/":{"title":"HTTP Proxy","description":"All HTTP requests can optionally go through a proxy."},"/docs/query/advanced/rdfjs/":{"title":"RDF/JS","description":"To achieve maximum interoperability between different JavaScript libraries, Comunica builds on top of the RDF/JS specifications."},"/docs/query/advanced/rdfjs_querying/":{"title":"Querying over RDF/JS sources","description":"If the built-in source types are not sufficient, you can pass a custom JavaScript object implementing a specific interface."},"/docs/query/advanced/rdfjs_updating/":{"title":"Updating RDF/JS stores","description":"If the built-in destination types are not sufficient, you can pass a custom JavaScript object implementing a specific interface."},"/docs/query/advanced/result_formats/":{"title":"Result formats","description":"Query results can be serialized in different formats."},"/docs/query/advanced/solid/":{"title":"Solid","description":"Solid â the Web-based decentralization ecosystem â can be queried with Comunica."},"/docs/query/advanced/source_types/":{"title":"Source types","description":"Comunica detects and handles different types of sources."},"/docs/query/advanced/sparql_query_types/":{"title":"SPARQL query types","description":"Different SPARQL query types are possible, such as SELECT, CONSTRUCT, ASK, ..."},"/docs/query/advanced/specifications/":{"title":"Supported specifications","description":"Comunica supports several RDF-related specifications"},"/docs/query/advanced/statistics_tracking/":{"title":"Statistics Tracking System","description":"Track real-time runtime statistics during query execution."},"/docs/modify/":{"title":"Modify Comunica","description":"Learn how to configure your own Comunica engine, or extend Comunica by implementing new components.","index":true},"/docs/modify/getting_started/":{"title":"Getting started with modification","description":"Basic guides on how to easily get started with Comunica modification.","index":true},"/docs/modify/getting_started/custom_config_cli/":{"title":"Querying with a custom configuration from the command line","description":"Create a custom configuration of Comunica modules with reduced features, and query with it from the command line."},"/docs/modify/getting_started/custom_config_app/":{"title":"Querying with a custom configuration in a JavaScript app","description":"Create a custom configuration of Comunica modules with changed features, and query with it from within your application using the JavaScript API."},"/docs/modify/getting_started/custom_init/":{"title":"Exposing your custom config as an npm package","description":"Wrap your config in an npm package, and expose a CLI tool and a JavaScript API."},"/docs/modify/getting_started/custom_web_client/":{"title":"Exposing your custom config in a Web client","description":"Demonstrate your query engine as a static Web page."},"/docs/modify/getting_started/contribute_actor/":{"title":"Contributing a new query operation actor to the Comunica repository","de
64scription":"Setup a development environment, implement a new actor, and create a pull request."},"/docs/modify/getting_started/actor_parameter/":{"title":"Adding a config parameter to an actor","description":"For an existing actor, add a parameter that can be customized in the config file."},"/docs/modify/getting_started/contribute_new_operation/":{"title":"Contributing an actor for a new query operation","description":"Extend the SPARQL parser, register a new algebra operation, and implement an actor to handle that new operation"},"/docs/modify/extensions/":{"title":"Extensions","description":"Existing extensions of Comunica."},"/docs/modify/faq/":{"title":"Modify FAQ","description":"Frequently asked question about Comunica modification."},"/docs/modify/advanced/":{"title":"Advanced modification","description":"Advanced guides on how to get the most out of Comunica modification.","index":true},"/docs/modify/advanced/actor_patterns/":{"title":"Actor Patterns","description":"Overview of common design patterns for actors"},"/docs/modify/advanced/algebra/":{"title":"Algebra","description":"The internal representation of queries during query execution."},"/docs/modify/advanced/architecture_core/":{"title":"Core Architecture","description":"The low-level software architecture of Comunica for achieving modularity."},"/docs/modify/advanced/architecture_sparql/":{"title":"SPARQL Architecture","description":"The high-level software architecture of Comunica for implementing SPARQL."},"/docs/modify/advanced/browser_builds/":{"title":"Browser builds","description":"All modules in Comunica can be built for the browser."},"/docs/modify/advanced/componentsjs/":{"title":"Components.js","description":"Components.js is the dependency injection framework that Comunica uses to wire components via config files."},"/docs/modify/advanced/custom_cli_arguments/":{"title":"Custom CLI arguments","description":"Adding custom arguments to CLI tools"},"/docs/modify/advanced/expression-evaluator/":{"title":"Expression Evaluator","description":"The expression evaluation engine of Comunica."},"/docs/modify/advanced/hypermedia/":{"title":"Hypermedia","description":"Discovery of data source capabilities during query execution."},"/docs/modify/advanced/joins/":{"title":"Joins","description":"Overview of how join operations are handled during query planning"},"/docs/modify/advanced/linking_local_version/":{"title":"Linking local Comunica versions to other projects","description":"Guide on how to use a local development version of Comunica with another local project"},"/docs/modify/advanced/logging/":{"title":"Logging","description":"How to log messages from within actors."},"/docs/modify/advanced/mediators/":{"title":"Mediators","description":"An overview of all mediators in Comunica."},"/docs/modify/advanced/metadata/":{"title":"Metadata","description":"Information for adaptive planning of query operations."},"/docs/modify/advanced/observers/":{"title":"Observers","description":"Passively observe actions executed by actors on a given bus."},"/docs/modify/advanced/query_operation_result_types/":{"title":"Query operation result types","description":"An overview of the different output types for query operations."},"/docs/modify/advanced/rdf_parsing_serializing/":{"title":"RDF Parsing and Serializing","description":"Basic concepts behind parsing and serializing RDF."},"/docs/modify/advanced/testing/":{"title":"Testing","description":"The unit and integration tests that lead to a more stable codebase."},"/docs/modify/advanced/where_provenance/":{"title":"Source attribution","description":"Comunica can annotate query result bindings with the sources used to produced these bindings."},"/docs/modify/benchmarking/":{"title":"Benchmarking","description":"Guidelines on running experiments with Comunica."},"/events/":{"title":"Events","description":"Overview of all Comunica-related events.","index":true,"reverse":true},"/events/2019-06-03-eswc/":{"title":"2019-06-03: Tutorial at ESWC 2019","description":"Comunica tutorial at the ESWC 2019 conference"},"/events/2019-10-26-iswc/":{"title":"2019-10-26: Tutorial at ISWC 2019","description":"Comunica and Solid tutorial at the ISWC 2019 conference"},"/events/2022-09-07-association_launch/":{"title":"2022-09-07: Comunica Association Launch","description":"An online event for the official lau
64nch of the Comunica Association"},"/events/2022-09-13-semantics_conference/":{"title":"2022-09-13/15: Semantics Conference","description":"The Comunica Association will have a booth and talk at the Semantics Conference in Vienna"},"/events/2026-01-29-goblin_coimbra/":{"title":"2026-01-29/30: GOBLIN COST Action meeting in Coimbra","description":"Comunica is demonstrated at the GOBLIN COST Action meeting in Coimbra"},"/events/2026-05-12-eswc/":{"title":"2026-05-12: Comunica MCP at ESWC 2026","description":"The new Comunica MCP tooling is presented at the ESWC 2026 conference in Dubrovnik, Croatia"},"/logos/":{"title":"Logos","description":"Free to use logos of Comunica."},"/performance/":{"title":"Performance","description":"Insights into the performance of Comunica."},"/research/":{"title":"Research","description":"An overview of these research surrounding Comunica."},"/research/amf/":{"title":"Approximate Membership Functions","description":"An overview of research that has been done on AMFs during query execution."},"/research/link_traversal/":{"title":"Link Traversal","description":"An overview of research that has been done on Link-Traversal-based Query Processing."},"/research/versioning/":{"title":"Versioning","description":"An overview of research that has been done on Query Processing for RDF archives."},"/roadmap/":{"title":"Roadmap","description":"The long-term goals of Comunica"},"/docs/modify/advanced/buses/":{"path":"/docs/modify/advanced/buses/","sortKey":"/docs/2_modify/advanced/buses/","title":"Buses and Actors","description":"An overview of all buses in Comunica and their actors."}}},"__N_SSG":true},"page":"/[...slug]","query":{"slug":["about"]},"buildId":"git-sha-abf81e5787afbd52b0334d914e91e5f517dd4b98","isFallback":false,"gsp":true,"scriptLoader":[]}</script>
64<script src="/pagefind/pagefind-component-ui.js" type="module"></script>
64</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.