UNPKG

@jahed/sparql-engine

Version:

SPARQL query engine for servers and web browsers.

59 lines 1.71 kB
// SPDX-License-Identifier: MIT import { termToString } from "rdf-string"; import Dataset from "./dataset.js"; import Graph from "./graph.js"; /** * A simple Dataset backed by a HashMap. * @extends Dataset */ export default class HashMapDataset extends Dataset { _defaultGraph; _namedGraphs; /** * Constructor * @param defaultGraphIRI - IRI of the Default Graph * @param defaultGraph - Default Graph */ constructor(defaultGraph) { super(); this._defaultGraph = defaultGraph; this._namedGraphs = new Map(); } get iris() { return Array.from(this._namedGraphs.values().map((g) => g.iri)); } setDefaultGraph(graph) { this._defaultGraph = graph; } getDefaultGraph() { return this._defaultGraph; } addNamedGraph(graph) { this._namedGraphs.set(termToString(graph.iri), graph); } async getNamedGraph(iri) { if (iri.equals(this._defaultGraph.iri)) { return this.getDefaultGraph(); } const key = termToString(iri); if (!this._namedGraphs.has(key)) { const graph = await this.createGraph(iri); this._namedGraphs.set(key, graph); return graph; } return this._namedGraphs.get(key); } hasNamedGraph(iri) { return this._namedGraphs.has(termToString(iri)); } deleteNamedGraph(iri) { const key = termToString(iri); if (this._namedGraphs.has(key)) { this._namedGraphs.delete(key); } else { throw new Error(`Cannot delete unknown graph with iri ${key}`); } } } //# sourceMappingURL=hashmap-dataset.js.map