@incremunica/query-sparql-incremental
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

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.

Package Sidebar

Install

npm i @incremunica/query-sparql-incremental

Weekly Downloads

58

Version

1.3.0

License

MIT

Unpacked Size

108 kB

Total Files

19

Last publish

Collaborators

  • maartyman