UNPKG

sparnatural

Version:

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

133 lines 8.8 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 _ClassBuilder_instances, _ClassBuilder_ifDefaultTrpl, _ClassBuilder_ifDefaultTrplInOptional, _ClassBuilder_ifBlocking, _ClassBuilder_buildClsTriple, _ClassBuilder_buildDefaultLblTrpl, _ClassBuilder_putDefaultLblInOptional, _ClassBuilder_createPtrn; import { DataFactory } from 'rdf-data-factory'; import { getSettings } from "../../settings/defaultSettings"; import SparqlFactory from "./SparqlFactory"; import { RDFS } from '../../../rdf/vocabularies/RDFS'; import { OWL } from '../../../rdf/vocabularies/OWL'; const factory = new DataFactory(); export default class ClassBuilder { constructor(classGroup, specProvider, widgetIsBlocking, typePredicate = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") { _ClassBuilder_instances.add(this); this.resultPtrn = []; // can consist of multiple patterns in case there is a FILTER(lang(?var) = "xx") if the property is multilingual this.defaultLblPatterns = []; this.classGroup = classGroup; this.specProvider = specProvider; this.widgetIsBlocking = widgetIsBlocking; this.typePredicate = typePredicate; } build() { const blocking = __classPrivateFieldGet(this, _ClassBuilder_instances, "m", _ClassBuilder_ifBlocking).call(this); // if(blocking) return __classPrivateFieldGet(this, _ClassBuilder_instances, "m", _ClassBuilder_ifDefaultTrpl).call(this); __classPrivateFieldGet(this, _ClassBuilder_instances, "m", _ClassBuilder_createPtrn).call(this); } getPattern() { return this.resultPtrn; } /** * @returns the defaultLabel variable, only in the case the variable is selected for inclusion as a column */ getDefaultVar() { const selected = this.classGroup.inputSelector?.selectViewVariableBtn?.selected; if (selected && this.classGroup.defaultLblVar.variable) return factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}`); } } _ClassBuilder_instances = new WeakSet(), _ClassBuilder_ifDefaultTrpl = function _ClassBuilder_ifDefaultTrpl() { const defaultLbl = this.specProvider.getEntity(this.classGroup.getTypeSelected()).getDefaultLabelProperty(); if (!defaultLbl) return; __classPrivateFieldGet(this, _ClassBuilder_instances, "m", _ClassBuilder_buildDefaultLblTrpl).call(this); __classPrivateFieldGet(this, _ClassBuilder_instances, "m", _ClassBuilder_ifDefaultTrplInOptional).call(this, defaultLbl); }, _ClassBuilder_ifDefaultTrplInOptional = function _ClassBuilder_ifDefaultTrplInOptional(defaultLbl) { if (this.specProvider.getProperty(defaultLbl).isEnablingOptional() // don't put in optional if we are already doing an "OPTIONAL {...} OPTIONAL{...} BIND(COALESCE(...))" pattern && !(getSettings().defaultLanguage != getSettings().language)) __classPrivateFieldGet(this, _ClassBuilder_instances, "m", _ClassBuilder_putDefaultLblInOptional).call(this); }, _ClassBuilder_ifBlocking = function _ClassBuilder_ifBlocking() { if (this.widgetIsBlocking || this.classGroup.getTypeSelected() === null) return true; __classPrivateFieldGet(this, _ClassBuilder_instances, "m", _ClassBuilder_buildClsTriple).call(this); return false; }, _ClassBuilder_buildClsTriple = function _ClassBuilder_buildClsTriple() { // don't build the class triple if the entity does not have type if (this.specProvider.getEntity(this.classGroup.getTypeSelected()).hasTypeCriteria()) { var typePredicate; if (getSettings().typePredicate) { typePredicate = SparqlFactory.parsePropertyPath(getSettings().typePredicate); } else { typePredicate = factory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"); } // don't add the type if the range is rdfs:Resource or owl:Thing if ((this.classGroup.getTypeSelected() != RDFS.RESOURCE.value) && (this.classGroup.getTypeSelected() != OWL.THING.value)) { this.classTriple = SparqlFactory.buildTypeTriple(factory.variable(this.classGroup.getVarName()?.replace('?', '')), typePredicate, factory.namedNode(this.classGroup.getTypeSelected())); } } }, _ClassBuilder_buildDefaultLblTrpl = function _ClassBuilder_buildDefaultLblTrpl() { // generate only in the case the defaultVar exists if (this.getDefaultVar()) { if (this.specProvider.getProperty(this.classGroup.defaultLblVar.type).isMultilingual()) { if (getSettings().language == getSettings().defaultLanguage) { this.defaultLblPatterns.push(SparqlFactory.buildBgpPattern([SparqlFactory.buildTriple(factory.variable(this.classGroup.getVarName()?.replace('?', '')), factory.namedNode(this.classGroup.defaultLblVar.type), factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}`))])); this.defaultLblPatterns.push(SparqlFactory.buildFilterLangEquals(factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}`), factory.literal(getSettings().language))); } else { this.defaultLblPatterns.push(SparqlFactory.buildOptionalPattern([ SparqlFactory.buildBgpPattern([SparqlFactory.buildTriple(factory.variable(this.classGroup.getVarName()?.replace('?', '')), factory.namedNode(this.classGroup.defaultLblVar.type), factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}_lang`))]), SparqlFactory.buildFilterLangEquals(factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}_lang`), factory.literal(getSettings().language)) ])); this.defaultLblPatterns.push(SparqlFactory.buildOptionalPattern([ SparqlFactory.buildBgpPattern([SparqlFactory.buildTriple(factory.variable(this.classGroup.getVarName()?.replace('?', '')), factory.namedNode(this.classGroup.defaultLblVar.type), factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}_defaultLang`))]), SparqlFactory.buildFilterLangEquals(factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}_defaultLang`), factory.literal(getSettings().defaultLanguage)) ])); this.defaultLblPatterns.push(SparqlFactory.buildBindCoalescePattern(factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}_lang`), factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}_defaultLang`), factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}`))); } } else { this.defaultLblPatterns.push(SparqlFactory.buildBgpPattern([ SparqlFactory.buildTriple(factory.variable(this.classGroup.getVarName()?.replace('?', '')), factory.namedNode(this.classGroup.defaultLblVar.type), factory.variable(`${this.classGroup.defaultLblVar.variable.replace("?", "")}`)) ])); } } }, _ClassBuilder_putDefaultLblInOptional = function _ClassBuilder_putDefaultLblInOptional() { if (this.defaultLblPatterns.length > 0) { this.defaultInOptional = SparqlFactory.buildOptionalPattern(this.defaultLblPatterns); } }, _ClassBuilder_createPtrn = function _ClassBuilder_createPtrn() { if (this.defaultInOptional) { // classTriple + the defaultLabel inside OPTIONAL pattern // Don't put OPTIONAL inside BgpPattern It's not allowed if (this.classTriple) { this.resultPtrn.push(SparqlFactory.buildBgpPattern([this.classTriple])); } this.resultPtrn.push(this.defaultInOptional); } else { if (this.defaultLblPatterns.length > 0) { // create classtriple + defaultLabel if (this.classTriple) { this.resultPtrn.push(SparqlFactory.buildBgpPattern([this.classTriple])); } this.resultPtrn.push(...this.defaultLblPatterns); } else { // no default label got created. only insert start tuple if (this.classTriple) { this.resultPtrn.push(SparqlFactory.buildBgpPattern([this.classTriple])); } } } }; //# sourceMappingURL=ClassBuilder.js.map