@jahed/sparql-engine
Version:
SPARQL query engine for servers and web browsers.
59 lines • 1.71 kB
JavaScript
// 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