1.3.0 • Published 5 days ago

@incremunica/query-sparql-incremental v1.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 days ago

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.

@comunica/actor-abstract-mediatyped@comunica/actor-abstract-parse@comunica/actor-abstract-path@comunica/actor-context-preprocess-source-to-destination@comunica/actor-dereference-fallback@comunica/actor-dereference-http@comunica/actor-dereference-rdf-parse@comunica/actor-hash-bindings-sha1@comunica/actor-http-fetch@comunica/actor-http-proxy@comunica/actor-http-wayback@comunica/actor-init-query@comunica/actor-optimize-query-operation-bgp-to-join@comunica/actor-optimize-query-operation-join-bgp@comunica/actor-optimize-query-operation-join-connected@comunica/actor-query-operation-ask@comunica/actor-query-operation-bgp-join@comunica/actor-query-operation-construct@comunica/actor-query-operation-describe-subject@comunica/actor-query-operation-distinct-hash@comunica/actor-query-operation-extend@comunica/actor-query-operation-filter-sparqlee@comunica/actor-query-operation-from-quad@comunica/actor-query-operation-group@comunica/actor-query-operation-join@comunica/actor-query-operation-leftjoin@comunica/actor-query-operation-minus@comunica/actor-query-operation-nop@comunica/actor-query-operation-orderby-sparqlee@comunica/actor-query-operation-path-alt@comunica/actor-query-operation-path-inv@comunica/actor-query-operation-path-link@comunica/actor-query-operation-path-nps@comunica/actor-query-operation-path-one-or-more@comunica/actor-query-operation-path-seq@comunica/actor-query-operation-path-zero-or-more@comunica/actor-query-operation-path-zero-or-one@comunica/actor-query-operation-project@comunica/actor-query-operation-reduced-hash@comunica/actor-query-operation-service@comunica/actor-query-operation-slice@comunica/actor-query-operation-sparql-endpoint@comunica/actor-query-operation-union@comunica/actor-query-operation-update-add-rewrite@comunica/actor-query-operation-update-clear@comunica/actor-query-operation-update-compositeupdate@comunica/actor-query-operation-update-copy-rewrite@comunica/actor-query-operation-update-create@comunica/actor-query-operation-update-deleteinsert@comunica/actor-query-operation-update-drop@comunica/actor-query-operation-update-load@comunica/actor-query-operation-update-move-rewrite@comunica/actor-query-operation-values@comunica/actor-query-parse-graphql@comunica/actor-query-parse-sparql@comunica/actor-query-result-serialize-json@comunica/actor-query-result-serialize-rdf@comunica/actor-query-result-serialize-simple@comunica/actor-query-result-serialize-sparql-csv@comunica/actor-query-result-serialize-sparql-json@comunica/actor-query-result-serialize-sparql-tsv@comunica/actor-query-result-serialize-sparql-xml@comunica/actor-query-result-serialize-stats@comunica/actor-query-result-serialize-table@comunica/actor-query-result-serialize-tree@comunica/actor-rdf-join-entries-sort-cardinality@comunica/actor-rdf-join-inner-multi-empty@comunica/actor-rdf-join-inner-multi-smallest@comunica/actor-rdf-join-inner-none@comunica/actor-rdf-join-inner-single@comunica/actor-rdf-join-selectivity-variable-counting@comunica/actor-rdf-metadata-accumulate-cancontainundefs@comunica/actor-rdf-metadata-accumulate-cardinality@comunica/actor-rdf-metadata-accumulate-pagesize@comunica/actor-rdf-metadata-accumulate-requesttime@comunica/actor-rdf-metadata-all@comunica/actor-rdf-metadata-extract-allow-http-methods@comunica/actor-rdf-metadata-extract-hydra-controls@comunica/actor-rdf-metadata-extract-hydra-count@comunica/actor-rdf-metadata-extract-hydra-pagesize@comunica/actor-rdf-metadata-extract-patch-sparql-update@comunica/actor-rdf-metadata-extract-put-accepted@comunica/actor-rdf-metadata-extract-request-time@comunica/actor-rdf-metadata-extract-sparql-service@comunica/actor-rdf-metadata-primary-topic@comunica/actor-rdf-parse-html@comunica/actor-rdf-parse-html-microdata@comunica/actor-rdf-parse-html-rdfa@comunica/actor-rdf-parse-html-script@comunica/actor-rdf-parse-jsonld@comunica/actor-rdf-parse-n3@comunica/actor-rdf-parse-rdfxml@comunica/actor-rdf-parse-shaclc@comunica/actor-rdf-parse-xml-rdfa@comunica/actor-rdf-resolve-hypermedia-links-next@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo@comunica/actor-rdf-resolve-hypermedia-none@comunica/actor-rdf-resolve-hypermedia-qpf@comunica/actor-rdf-resolve-hypermedia-sparql@comunica/actor-rdf-resolve-quad-pattern-federated@comunica/actor-rdf-resolve-quad-pattern-hypermedia@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source@comunica/actor-rdf-resolve-quad-pattern-string-source@comunica/actor-rdf-serialize-jsonld@comunica/actor-rdf-serialize-n3@comunica/actor-rdf-serialize-shaclc@comunica/actor-rdf-update-hypermedia-patch-sparql-update@comunica/actor-rdf-update-hypermedia-put-ldp@comunica/actor-rdf-update-hypermedia-sparql@comunica/actor-rdf-update-quads-hypermedia@comunica/actor-rdf-update-quads-rdfjs-store@comunica/bus-context-preprocess@comunica/bus-dereference@comunica/bus-dereference-rdf@comunica/bus-hash-bindings@comunica/bus-http@comunica/bus-http-invalidate@comunica/bus-init@comunica/bus-optimize-query-operation@comunica/bus-query-operation@comunica/bus-query-parse@comunica/bus-query-result-serialize@comunica/bus-rdf-join@comunica/bus-rdf-join-entries-sort@comunica/bus-rdf-join-selectivity@comunica/bus-rdf-metadata@comunica/bus-rdf-metadata-extract@comunica/bus-rdf-parse@comunica/bus-rdf-parse-html@comunica/bus-rdf-resolve-hypermedia@comunica/bus-rdf-resolve-hypermedia-links@comunica/bus-rdf-resolve-hypermedia-links-queue@comunica/bus-rdf-resolve-quad-pattern@comunica/bus-rdf-serialize@comunica/bus-rdf-update-hypermedia@comunica/bus-rdf-update-quads@comunica/config-query-sparql@comunica/context-entries@comunica/core@comunica/logger-pretty@comunica/logger-void@comunica/mediator-all@comunica/mediator-combine-pipeline@comunica/mediator-combine-union@comunica/mediator-join-coefficients-fixed@comunica/mediator-number@comunica/mediator-race@comunica/mediatortype-accuracy@comunica/mediatortype-httprequests@comunica/mediatortype-join-coefficients@comunica/mediatortype-time@comunica/metadata@comunica/runner@comunica/runner-cli@comunica/types@incremunica/actor-guard-naive@incremunica/actor-query-operation-incremental-filter@incremunica/actor-query-operation-incremental-quadpattern@incremunica/actor-rdf-join-incremental-minus-hash@incremunica/actor-rdf-join-incremental-optional-hash@incremunica/actor-rdf-join-inner-incremental-full-hash@incremunica/actor-rdf-metadata-extract-guard-data@incremunica/actor-rdf-resolve-hypermedia-stream-none@incremunica/actor-rdf-resolve-quad-pattern-incremental-federated@incremunica/actor-rdf-resolve-quad-pattern-rdfjs-streaming-source@incremunica/actor-resource-watch-polling@incremunica/actor-resource-watch-solid-notification-websockets@incremunica/bus-guard@incremunica/bus-resource-watch@incremunica/context-entries@incremunica/hash-bindings@incremunica/incremental-bindings-factory@incremunica/incremental-inner-join@incremunica/incremental-rdf-streaming-store@incremunica/incremental-types
1.3.0

5 days ago

1.2.2

5 months ago

1.2.1

5 months ago

1.2.0

5 months ago

1.1.0

5 months ago

1.0.3

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago