Query Engine
LDkit ships with a simple SPARQL query engine that lets you execute queries over a SPARQL endpoint. This engine is used by default, unless you specify a custom one.
If you want to query other RDF data sources like files or in-memory quad stores, you need to use a custom query engine like Comunica, or implement your own.
Default query engine
import { QueryEngine } from "ldkit";
const engine = new QueryEngine();
The QueryEngine
follows
RDF/JS Query specification and implements the
StringSparqlQueryable
interface.
The QueryEngine
is configurable through Options object.
import { type Options, QueryEngine } from "ldkit";
const options = {
sources: ["https://example.com/sparql"], // required, must include one SPARQL endpoint
fetch: customFetchFunction, // optional, must follow standard fetch interface
} satisfies Options;
const engine = new QueryEngine();
const response = await engine.queryBoolean("ASK { ?s ?p ?o }", context);
Note: The default query engine supports all SPARQL endpoints that conform to the SPARQL 1.1 specification and can return data of MIME
application/sparql-results+json
forSELECT
andASK
queries, andtext/turtle
orapplication/rdf+json
forCONSTRUCT
queries.
Custom query engine
You can use a custom query engine with LDkit - same as the included query
engine, it needs to implement StringSparqlQueryable
interface from the
RDF/JS Query specification.
For advanced federated querying over multiple datasources you can also use Comunica, or a custom engine derived from that - see Query with Comunica.
Setting default query engine
A query engine instance needs to be passed to a data Lens as a
parameter in order to query data, and there are two ways how to handle that.
Either you can pass the engine directly as part of options argument when
creating the Lens
instance, or you can set an engine instance as a default
one. If there is a default engine instance, then the Lens
will use that
engine, if you do not provide one directly.
import { createLens, setGlobalOptions } from "ldkit";
const engine = new MyCustomQueryEngine();
setGlobalOptions({ engine });
const MyLens = createLens(MySchema); // will use the custom engine, which is now default