Module @incremunica/query-sparql-incremental

Incremunica SPARQL

npm version

Incremunica is an incremental SPARQL query engine build on top of comunica.

Install

$ npm install -g @incremunica/query-sparql-incremental

or

$ yarn add @incremunica/query-sparql-incremental

Usage

Incremunica can be used in JavaScript/TypeScript applications and from the command line.

Usage within application

This engine can be used in JavaScript/TypeScript applications as follows:

const QueryEngine = require('@incremunica/query-sparql-incremental').QueryEngine;
const myEngine = new QueryEngine();

async function main() {
const bindingsStream = await myEngine.queryBindings(`
SELECT ?interest
WHERE {
<https://ruben.verborgh.org/profile/#me> foaf:topic_interest ?interest.
<https://www.rubensworks.net/#me> foaf:topic_interest ?interest.
}`, {
sources: [
"https://ruben.verborgh.org/profile/",
"https://www.rubensworks.net/"
],
});

// Consume results as a stream
bindingsStream.on('data', (binding) => {
console.log("Is addition:", binding.diff); // If true: addition, if false: deletion.

console.log(binding.toString()); // Quick way to print bindings for testing

console.log("Has variable 'interest':", binding.has('interest')); // Will be true

// Obtaining values
console.log(binding.get('interest').value);
console.log(binding.get('interest').termType);
});

bindingsStream.on('end', () => {
// The data-listener will not be called anymore once we get here.
});
bindingsStream.on('error', (error) => {
console.error(error);
});

// As this is an incremental query engine, you need to end the query yourself otherwise it will keep checking for changes.
setTimeout(() => bindingsStream.close(), 3000);
}

main();

You can also use an incremental triple store. This store allows you to change the dataset (additions and deletions) and show you the changes in the query results.

const QueryEngine = require('@incremunica/query-sparql-incremental').QueryEngine;
const StreamingStore = require("@incremunica/incremental-rdf-streaming-store").StreamingStore;
const myEngine = new QueryEngine();
const streamingStore = new StreamingStore();

async function main() {
streamingStore.import(quadStream);

const bindingsStream = await myEngine.queryBindings(`
SELECT *
WHERE {
?s ?p ?o.
}`, {
sources: [ streamingStore ],
});

streamingStore.addQuad(quad);
streamingStore.removeQuad(otherQuad);

streamingStore.end();
}

main();

Usage from the command line

Show the help with all options:

$ comunica-sparql-incremental --help

Read more about querying from the command line.

Generated using TypeDoc