1<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Comunica â <!-- -->A knowledge graph querying framework</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 â A knowledge graph querying framework"/><meta property="og:description" content="Flexible SPARQL and GraphQL over decentralized RDF on the Web."/><meta property="og:url" content="/"/><meta property="og:locale" content="en_US"/><meta property="og:site_name" content="Comunica â A knowledge graph querying framework"/><meta property="og:type" content="website"/><meta name="twitter:site" content="@comunicajs"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="Comunica â A knowledge graph querying framework"/><meta name="twitter:description" content="Flexible SPARQL and GraphQL over decentralized RDF on the Web."/><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/pages/index-cb5e6cb9b1a9c366.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"><main id="software"><div class="intro"><img src="/img/comunica_red_no_fill.svg" alt="Comunica" class="comunica-logo"/><h1 class="title">A knowledge graph querying framework</h1></div><p class="description">Flexible SPARQL and GraphQL over decentralized RDF on the Web.</p><div class="grid-wide live-demo-row"><div class="live-demo"><div class="live-demo-header"><label class="live-demo-presets">Example<select><option value="acquaintances" selected="">Mutual acquaintances of three people</option><option value="interests">Common interests of two people</option><option value="bradpitt">Directors of movies starring Brad Pitt</option></select></label><span class="live-demo-links"><a href="https://query.comunica.dev/#query=PREFIX%20foaf%3A%20%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0APREFIX%20schema%3A%20%3Chttps%3A%2F%2Fschema.org%2F%3E%0ASELECT%20DISTINCT%20%3Fperson%20%3Fname%20WHERE%20%7B%0A%20%20%3Chttps%3A%2F%2Fwww.rubensworks.net%2F%23me%3E%20foaf%3Aknows%20%3Fperson.%0A%20%20%3Chttps%3A%2F%2Fpietercolpaert.be%2F%23me%3E%20%28foaf%3Aknows%7Cschema%3Acolleague%29%20%3Fperson.%0A%20%20%3Chttps%3A%2F%2Fruben.verborgh.org%2Fprofile%2F%23me%3E%20foaf%3Aknows%20%3Fperson.%0A%20%20%3Fperson%20foaf%3Aname%20%3Fname.%0A%20%20FILTER%28LANG%28%3Fname%29%20%3D%20%22%22%29%0A%7D&datasources=https%3A%2F%2Fwww.rubensworks.net%2F;https%3A%2F%2Fpietercolpaert.be%2F;https%3A%2F%2Fdata.verborgh.org%2Fruben">Try more live queries â</a></span></div><div class="live-demo-editor"><pre class="live-demo-highlight" aria-hidden="true"><span class="sparql-keyword">PREFIX</span> <span class="sparql-prefixed">foaf:</span> <span class="sparql-iri"><http://xmlns.com/foaf/0.1/></span> 2<span class="sparql-keyword">PREFIX</span> <span class="sparql-prefixed">schema:</span> <span class="sparql-iri"><https://schema.org/></span> 3<span class="sparql-keyword">SELECT</span> <span class="sparql-keyword">DISTINCT</span> <span class="sparql-variable">?person</span> <span class="sparql-variable">?name</span> <span class="sparql-keyword">WHERE</span> { 4 <span class="sparql-iri"><https://www.rubensworks.net/#me></span> <span class="sparql-prefixed">foaf:knows</span> <span class="sparql-variable">?person</span>. 5 <span class="sparql-iri"><https://pietercolpaert.be/#me></span> (<span class="sparql-prefixed">foaf:knows</span>|<span class="sparql-prefixed">schema:colleague</span>) <span class="sparql-variable">?person</span>. 6 <span class="sparql-iri"><https://ruben.verborgh.org/profile/#me></span> <span class="sparql-prefixed">foaf:knows</span> <span class="sparql-variable">?person</span>. 7 <span class="sparql-variable">?person</span> <span class="sparql-prefixed">foaf:name</span> <span class="sparql-variable">?name</span>. 8 <span class="sparql-keyword">FILTER</span>(<span class="sparql-keyword">LANG</span>(<span class="sparql-variable">?name</span>) = <span class="sparql-string">""</span>) 9}<!-- --> 10</pre><textarea class="live-demo-query" aria-label="SPARQL query" spellcheck="false">PREFIX foaf: <http://xmlns.com/foaf/0.1/> 11PREFIX schema: <https://schema.org/> 12SELECT DISTINCT ?person ?name WHERE { 13 <https://www.rubensworks.net/#me> foaf:knows ?person. 14 <https://pietercolpaert.be/#me> (foaf:knows|schema:colleague) ?person. 15 <https://ruben.verborgh.org/profile/#me> foaf:knows ?person. 16 ?person foaf:name ?name. 17 FILTER(LANG(?name) = "") 18}</textarea></div><div class="live-demo-sources"><span class="live-demo-sources-label">Sources</span><span class="live-demo-source"><span class="live-demo-source-type">RDFa</span>https://www.rubensworks.net/<button type="button" title="Remove this source">Ã</button></span><span class="live-demo-source"><span class="live-demo-source-type">JSON-LD</span>https://pietercolpaert.be/<button type="button" title="Remove this source">Ã</button></span><span class="live-demo-source"><span class="live-demo-source-type">TPF</span>https://data.verborgh.org/ruben<button type="button" title="Remove this source">Ã</button></span><form><input type="text" class="live-demo-source-add" placeholder="+ Add a source URL" spellcheck="false" value=""/></form></div><div class="live-demo-actions"><button class="live-demo-run">â¶ Run query</button><span class="live-demo-status">Loading the query engineâ¦</span></div></div></div><section class="home-section features"><p class="home-overline">Why Comunica</p><div class="features-grid"><a href="/docs/query/getting_started/query_app/" class="feature"><span class="feature-badge"><span class="feature-glyph" style="--icon:url(/img/web.svg)"></span></span><h3>For the Web</h3><p>Powered by Web technologies, execute queries via JavaScript on server or client.</p><span class="feature-link">Learn more â</span></a><a href="docs/query/advanced/federation/" class="feature"><span class="feature-badge"><span class="feature-glyph" style="--icon:url(/img/sources.svg)"></span></span><h3>Decentralized</h3><p>Execute federated queries over multiple heterogeneous data sources across the Web.</p><span class="feature-link">Learn more â</span></a><a href="docs/modify/" class="feature"><span class="feature-badge"><span class="feature-glyph" style="--icon:url(/img/modular.svg)"></span></span><h3>Modular</h3><p>A collection of modules that can be combined to achieve a certain task.</p><span class="feature-link">Learn more â</span></a></div></section><section class="home-section"><p class="home-overline">Get started</p><div class="tiles"><a href="docs/query/" class="tile"><h3>Query with Comunica â</h3><p>Execute your first query</p></a><a href="docs/modify/" class="tile"><h3>Modify Comunica â</h3><p>Configure or extend it</p></a><a href="docs/query/advanced/solid" class="tile"><h3>Query Solid pods â</h3><p>Query data in Solid pods</p></a><a href="docs/query/advanced/mcp/" class="tile"><h3>Comunica MCP â</h3><p>Use it from AI agents</p></a><a href="https://opencollective.com/comunica-association" class="tile"><h3>Donate â</h3><p>Sponsor on Open Collective</p></a><a href="contribute/" class="tile"><h3>Contribute â</h3><p>Help with development</p></a></div></section><section class="home-section"><p class="home-overline">Used by</p><p class="home-lead">Production-ready, and <a href="/docs/query/usage/">widely used in commercial, governmental, and academic contexts</a>.</p><div class="stats"><a href="https://github.com/comunica/comunica/network/dependents" class="stat"><strong>1.600<!-- -->+</strong><span>dependents on GitHub</span></a><a href="https://www.npmjs.com/package/@comunica/core" class="stat"><strong>400.000<!-- -->+</strong><span>monthly npm downloads</span></a><a href="/docs/modify/advanced/buses/" class="stat"><strong>300<!-- -->+</strong><span>core framework modules</span></a></div></section><section class="home-section"><p class="home-overline">Supported by</p><p class="home-lead">Comunica is a community-driven project, sustained by the <a href="/association/">Comunica Association</a>. If you are using Comunica, <a href="https://opencollective.com/comunica-association">becoming a sponsor or member</a> is a way to make Comunica sustainable in the long-term.</p><div class="sponsor-panel"><div class="sponsor-tier"><h3>Board members</h3><p>Directly contributing, or donating ⬠2500 / month</p><div class="sponsor-logos sponsor-logos-member"><a href="https://www.ugent.be/ea/idlab/en"><img src="img/members/idlab.png" alt="IDLab - Internet Technology and Data Science Lab"/></a></div></div><div class="sponsor-tier"><h3>Bronze sponsors</h3><p>Donating ⬠250 / month</p><div class="sponsor-logos sponsor-logos-bronze"><a href="https://netwerkdigitaalerfgoed.nl/"><img src="https://user-images.githubusercontent.com/440384/134636829-f730230c-bfec-4d40-86d1-67f28479cdcc.png" alt="Netwerk Digitaal Erfgoed"/></a></div></div></div></section></main></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>
18<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"git-sha-abf81e5787afbd52b0334d914e91e5f517dd4b98","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script>
18<script src="/pagefind/pagefind-component-ui.js" type="module"></script>
18</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.