sparnatural
Version:
Visual client-side SPARQL query builder and knowledge graph exploration tool
130 lines • 6.76 kB
JavaScript
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _TreeSparqlTemplateQueryBuilder_instances, _TreeSparqlTemplateQueryBuilder_buildSparql;
export class ListSparqlTemplateQueryBuilder {
constructor(queryString, sparqlPostProcessor) {
this.queryString = queryString;
this.sparqlPostProcessor = sparqlPostProcessor;
}
buildSparqlQuery(domain, property, range, language, defaultLanguage, typePath) {
var reDomain = new RegExp("\\$domain", "g");
var reProperty = new RegExp("\\$property", "g");
var reRange = new RegExp("\\$range", "g");
var reLang = new RegExp("\\$lang", "g");
var reDefaultLang = new RegExp("\\$defaultLang", "g");
var reType = new RegExp("\\$type", "g");
var sparql = this.queryString
.replace(reDomain, "<" + domain + ">")
.replace(reProperty, "<" + property + ">")
.replace(reRange, "<" + range + ">")
.replace(reLang, "'" + language + "'")
.replace(reDefaultLang, "'" + defaultLanguage + "'")
.replace(reType, typePath);
sparql = this.sparqlPostProcessor.semanticPostProcess(sparql);
return sparql;
}
}
export class ValuesListSparqlTemplateQueryBuilder {
constructor(queryString, sparqlPostProcessor) {
this.queryString = queryString;
this.sparqlPostProcessor = sparqlPostProcessor;
}
buildSparqlQuery(values, language, defaultLanguage, typePath) {
var reValues = new RegExp("\\$values", "g");
var reLang = new RegExp("\\$lang", "g");
var reDefaultLang = new RegExp("\\$defaultLang", "g");
var reType = new RegExp("\\$type", "g");
// turn the values into their corresponding string representation in SPARQL
var stringValues = values.map((value) => {
if (value.termType === 'NamedNode') {
return "<" + value.value + ">"; // NamedNode is a URI
}
else if (value.termType === 'Literal') {
// For literals, we need to include the language tag or datatype
if (value.language) {
return `"${value.value}"@${value.language}`; // Literal with language tag
}
else if (value.datatype) {
return `"${value.value}"^^<${value.datatype.value}>`; // Literal with datatype
}
else {
return `"${value.value}"`; // Plain literal
}
}
else {
throw new Error(`Unsupported term type: ${value.termType}`);
}
}).join(" ");
var sparql = this.queryString
.replace(reValues, stringValues)
.replace(reLang, "'" + language + "'")
.replace(reDefaultLang, "'" + defaultLanguage + "'")
.replace(reType, typePath);
sparql = this.sparqlPostProcessor.semanticPostProcess(sparql);
return sparql;
}
}
export class AutocompleteSparqlTemplateQueryBuilder {
constructor(queryString, sparqlPostProcessor) {
this.queryString = queryString;
this.sparqlPostProcessor = sparqlPostProcessor;
}
buildSparqlQuery(domain, property, range, key, language, defaultLanguage, typePath) {
var reDomain = new RegExp("\\$domain", "g");
var reProperty = new RegExp("\\$property", "g");
var reRange = new RegExp("\\$range", "g");
var reKey = new RegExp("\\$key", "g");
var reLang = new RegExp("\\$lang", "g");
var reDefaultLang = new RegExp("\\$defaultLang", "g");
var reType = new RegExp("\\$type", "g");
var sparql = this.queryString
.replace(reDomain, "<" + domain + ">")
.replace(reProperty, "<" + property + ">")
.replace(reRange, "<" + range + ">")
.replace(reKey, "" + key + "")
.replace(reLang, "'" + language + "'")
.replace(reDefaultLang, "'" + defaultLanguage + "'")
.replace(reType, typePath);
sparql = this.sparqlPostProcessor.semanticPostProcess(sparql);
return sparql;
}
}
export class TreeSparqlTemplateQueryBuilder {
constructor(rootsQueryString, childrenQueryString, sparqlPostProcessor) {
_TreeSparqlTemplateQueryBuilder_instances.add(this);
this.rootsQueryString = rootsQueryString;
this.childrenQueryString = childrenQueryString;
this.sparqlPostProcessor = sparqlPostProcessor;
}
buildRootsSparqlQuery(domain, property, range, language, defaultLanguage, typePath) {
return __classPrivateFieldGet(this, _TreeSparqlTemplateQueryBuilder_instances, "m", _TreeSparqlTemplateQueryBuilder_buildSparql).call(this, this.rootsQueryString, null, domain, property, range, language, defaultLanguage, typePath);
}
buildChildrenSparqlQuery(node, domain, property, range, language, defaultLanguage, typePath) {
return __classPrivateFieldGet(this, _TreeSparqlTemplateQueryBuilder_instances, "m", _TreeSparqlTemplateQueryBuilder_buildSparql).call(this, this.childrenQueryString, node, domain, property, range, language, defaultLanguage, typePath);
}
}
_TreeSparqlTemplateQueryBuilder_instances = new WeakSet(), _TreeSparqlTemplateQueryBuilder_buildSparql = function _TreeSparqlTemplateQueryBuilder_buildSparql(queryString, node, domain, property, range, language, defaultLanguage, typePath) {
var reDomain = new RegExp("\\$domain", "g");
var reProperty = new RegExp("\\$property", "g");
var reRange = new RegExp("\\$range", "g");
var reLang = new RegExp("\\$lang", "g");
var reDefaultLang = new RegExp("\\$defaultLang", "g");
var reType = new RegExp("\\$type", "g");
var sparql = queryString
.replace(reDomain, "<" + domain + ">")
.replace(reProperty, "<" + property + ">")
.replace(reRange, "<" + range + ">")
.replace(reLang, "'" + language + "'")
.replace(reDefaultLang, "'" + defaultLanguage + "'")
.replace(reType, typePath);
if (node != null) {
var reNode = new RegExp("\\$node", "g");
sparql = sparql.replace(reNode, "<" + node + ">");
}
sparql = this.sparqlPostProcessor.semanticPostProcess(sparql);
return sparql;
};
//# sourceMappingURL=SparqlBuilders.js.map