Metreeca Keep
    Preparing search index...

    Module @metreeca/keep-sparql - v0.10.0

    SPARQL 1.1 repository connector.

    Composes a pluggable Repository into a fully-featured Store via createSPARQLStore, translating Store-level read and write operations into SPARQL queries and updates. Application developers select a ready-made connector (Oxigraph, HTTP, …) or implement Repository directly to support a new SPARQL backend.

    The SPARQL layer shared by every connector is defined in @metreeca/wire-sparql: SPARQL text and Tuple solution rows. The RDF data model those rows carry is defined in @metreeca/trio: Triple statements and Term values (Named, Blank, Tagged, Typed), together with the named/tagged/typed constructors used to mint Term values from backend results.

    Wiring a Connector

    Pick a ready-made connector and feed it to createSPARQLStore to obtain a store:

    import { createSPARQLStore } from "@metreeca/keep-sparql";
    import { createOxiRepository } from "@metreeca/wire-sparql-oxigraph";

    const store = createSPARQLStore(createOxiRepository());

    await store.create({
    entry: "http://example.com/products/1",
    shape: ProductShape,
    state: { name: "Widget", price: 9.99 }
    });

    Implementing a Connector

    To support a new SPARQL backend, implement a Repository and use named, tagged, and typed to lift backend node values into the shared Term representation. The reference implementation in @metreeca/wire-sparql-oxigraph exemplifies the pattern:

    import { named, tagged, type Term, typed } from "@metreeca/trio";
    import { type Repository } from "@metreeca/wire-sparql";

    function decode(node: BackendNode): Term {
    return node.kind === "iri" ? named(node.iri)
    : node.kind === "language" ? tagged(node.text, node.language)
    : typed(node.text, node.datatype);
    }

    export function createMyRepository(): Repository {
    // ... satisfy ask/select/construct/update/execute/close against the backend
    }

    Functions

    createSPARQLStore

    Creates a SPARQL store backed by a Repository.