UNPKG

sparnatural

Version:

Visual client-side SPARQL query builder and knowledge graph exploration tool

130 lines 6.76 kB
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