@metreeca/keep-sparql
v0.10.0
Published
SPARQL 1.1 repository connector for @metreeca/keep.
Maintainers
Readme
@metreeca/keep-sparql
SPARQL 1.1 repository connector for the @metreeca/keep model-driven linked data storage framework.
Translates @metreeca/keep storage operations into SPARQL queries and updates against a pluggable graph backend.
Application developers can pick one of the ready-made connectors or
implement the @metreeca/wire-sparql Repository
interface to support a new SPARQL backend.
[!IMPORTANT] Transaction Isolation — Determined by the supplied
Repository. The framework defers transaction semantics to the backend; each connector documents the level it provides on its factory function.
Installation
Install the framework together with a backend connector from the @metreeca/wire SPARQL connector collection:
npm install @metreeca/keep-sparql
npm install @metreeca/wire-sparql-oxigraph # or another backend connectorUsage
[!NOTE]
This section introduces essential concepts; for complete coverage, see the API reference.
Wiring a Store
Pass any @metreeca/wire-sparql Repository connector
to
createSPARQLStore to obtain a fully functional Store:
import { createSPARQLStore } from "@metreeca/keep-sparql";
import { createOxiRepository } from "@metreeca/wire-sparql-oxigraph";
const store = createSPARQLStore(createOxiRepository());
const product = await store.lookup({
entry: "http://example.com/products/1",
shape: ProductShape,
model: {
name: "",
price: 0
}
});Implementing a Connector
A backend connector is a @metreeca/wire-sparql
Repository: implement ask, select, construct, update, execute, and optionally close, lifting backend node
values into the shared Term representation with the reference, tagged, and typed constructors.
@metreeca/keep-sparql then wraps any such connector into a Store via createSPARQLStore.
See @metreeca/wire-sparql-oxigraph for a complete reference connector.
Verified Backends
This SPARQL connector has been exercised against the @metreeca/keep-suite conformance suite on the backends and versions below.
| Engine | Version | Storage | |------------------------------|----------------------------------------------------------|---------------| | Eclipse RDF4J | 5.3.1 | MemoryStore | | Eclipse RDF4J | 5.3.1 | NativeStore | | Eclipse RDF4J | 5.3.1 | LmdbStore | | Apache Jena Fuseki | 6.1.0 | MemoryDataset | | Apache Jena Fuseki | 6.1.0 | TDB1 | | Apache Jena Fuseki | 6.1.0 | TDB2 | | Oxigraph | 0.5.8 | in-memory | | Oxigraph | 0.5.8 | disk | | QLever | upcoming | disk | | Fluree | upcoming | disk | | Virtuoso | upcoming | disk |
Support
- open an issue to report a problem or to suggest a new feature
- start a discussion to ask a how-to question or to share an idea
License
This project is licensed under the Apache 2.0 License – see LICENSE file for details.
