UNPKG

sparnatural

Version:

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

198 lines 16.8 kB
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; 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 _WhereBuilder_instances, _WhereBuilder_grpWrapper, _WhereBuilder_specProvider, _WhereBuilder_typePredicate, _WhereBuilder_isChild, _WhereBuilder_isInOption, _WhereBuilder_valueBuilder, _WhereBuilder_resultPtrns, _WhereBuilder_startClassPtrn, _WhereBuilder_endClassPtrn, _WhereBuilder_intersectionPtrn, _WhereBuilder_whereChildPtrns, _WhereBuilder_andChildPtrns, _WhereBuilder_rdfPtrns, _WhereBuilder_executedAfterPtrns, _WhereBuilder_defaultVars, _WhereBuilder_buildChildPatterns, _WhereBuilder_buildWhereChildPtrn, _WhereBuilder_buildAndChildPtrn, _WhereBuilder_buildRdfPtrn, _WhereBuilder_buildEndClassPtrn, _WhereBuilder_buildStartClassPtrn, _WhereBuilder_buildIntersectionPtrn, _WhereBuilder_buildGrpWrapperPtrn, _WhereBuilder_createOptionStatePtrn; import { DataFactory } from "rdf-data-factory"; import { OptionTypes } from "../../components/builder-section/groupwrapper/criteriagroup/optionsgroup/OptionsGroup"; import ClassBuilder from "./ClassBuilder"; import IntersectionBuilder from "./IntersectionBuilder"; import SparqlFactory from "./SparqlFactory"; import { ValueBuilderFactory } from "./ValueBuilder"; import { SelectAllValue } from "../../components/builder-section/groupwrapper/criteriagroup/edit-components/EditComponents"; const factory = new DataFactory(); export default class WhereBuilder { constructor(grpWrapper, specProvider, typePredicate, isChild, isInOption, settings) { _WhereBuilder_instances.add(this); // variables set in construtor _WhereBuilder_grpWrapper.set(this, void 0); _WhereBuilder_specProvider.set(this, void 0); _WhereBuilder_typePredicate.set(this, void 0); _WhereBuilder_isChild.set(this, void 0); _WhereBuilder_isInOption.set(this, void 0); _WhereBuilder_valueBuilder.set(this, void 0); // patterns built in the build process _WhereBuilder_resultPtrns.set(this, []); _WhereBuilder_startClassPtrn.set(this, []); _WhereBuilder_endClassPtrn.set(this, []); _WhereBuilder_intersectionPtrn.set(this, []); _WhereBuilder_whereChildPtrns.set(this, []); _WhereBuilder_andChildPtrns.set(this, []); _WhereBuilder_rdfPtrns.set(this, []); _WhereBuilder_executedAfterPtrns.set(this, []); // default vars gathered from children _WhereBuilder_defaultVars.set(this, []); __classPrivateFieldSet(this, _WhereBuilder_grpWrapper, grpWrapper, "f"); __classPrivateFieldSet(this, _WhereBuilder_specProvider, specProvider, "f"); __classPrivateFieldSet(this, _WhereBuilder_typePredicate, typePredicate, "f"); __classPrivateFieldSet(this, _WhereBuilder_isChild, isChild, "f"); __classPrivateFieldSet(this, _WhereBuilder_isInOption, isInOption, "f"); this.settings = settings; // create the object to convert widget values to SPARQL let endClassValue = __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.EndClassGroup.endClassVal.type; // this is because the query geenration may be triggered while the end class is not there yet if (endClassValue != null) { __classPrivateFieldSet(this, _WhereBuilder_valueBuilder, new ValueBuilderFactory().buildValueBuilder(__classPrivateFieldGet(this, _WhereBuilder_specProvider, "f") .getProperty(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.ObjectPropertyGroup.getTypeSelected()) .getPropertyType(endClassValue)), "f"); // pass everything needed to generate SPARQL __classPrivateFieldGet(this, _WhereBuilder_valueBuilder, "f").init(__classPrivateFieldGet(this, _WhereBuilder_specProvider, "f"), __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.StartClassGroup.startClassVal, __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.ObjectPropertyGroup.objectPropVal, __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.EndClassGroup.endClassVal, __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.EndClassGroup.isVarSelected(), __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.endClassWidgetGroup .getWidgetValues() .filter((v) => !(v instanceof SelectAllValue)) .map((v) => { return v.value; })); } } build() { __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildChildPatterns).call(this); __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildRdfPtrn).call(this); __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildStartClassPtrn).call(this); __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildEndClassPtrn).call(this); __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildIntersectionPtrn).call(this); __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildGrpWrapperPtrn).call(this); } getResultPtrns() { return __classPrivateFieldGet(this, _WhereBuilder_resultPtrns, "f"); } getDefaultVars() { return __classPrivateFieldGet(this, _WhereBuilder_defaultVars, "f"); } getExecutedAfterPtrns() { return __classPrivateFieldGet(this, _WhereBuilder_executedAfterPtrns, "f"); } } _WhereBuilder_grpWrapper = new WeakMap(), _WhereBuilder_specProvider = new WeakMap(), _WhereBuilder_typePredicate = new WeakMap(), _WhereBuilder_isChild = new WeakMap(), _WhereBuilder_isInOption = new WeakMap(), _WhereBuilder_valueBuilder = new WeakMap(), _WhereBuilder_resultPtrns = new WeakMap(), _WhereBuilder_startClassPtrn = new WeakMap(), _WhereBuilder_endClassPtrn = new WeakMap(), _WhereBuilder_intersectionPtrn = new WeakMap(), _WhereBuilder_whereChildPtrns = new WeakMap(), _WhereBuilder_andChildPtrns = new WeakMap(), _WhereBuilder_rdfPtrns = new WeakMap(), _WhereBuilder_executedAfterPtrns = new WeakMap(), _WhereBuilder_defaultVars = new WeakMap(), _WhereBuilder_instances = new WeakSet(), _WhereBuilder_buildChildPatterns = function _WhereBuilder_buildChildPatterns() { if (__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").whereChild) __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildWhereChildPtrn).call(this); if (__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").andSibling) __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_buildAndChildPtrn).call(this); }, _WhereBuilder_buildWhereChildPtrn = function _WhereBuilder_buildWhereChildPtrn() { const builder = new WhereBuilder(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").whereChild, __classPrivateFieldGet(this, _WhereBuilder_specProvider, "f"), __classPrivateFieldGet(this, _WhereBuilder_typePredicate, "f"), true, __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").optionState !== OptionTypes.NONE, this.settings); builder.build(); __classPrivateFieldSet(this, _WhereBuilder_whereChildPtrns, builder.getResultPtrns(), "f"); // gather default vars from children __classPrivateFieldGet(this, _WhereBuilder_defaultVars, "f").push(...builder.getDefaultVars()); // gather patterns to be executed after __classPrivateFieldGet(this, _WhereBuilder_executedAfterPtrns, "f").push(...builder.getExecutedAfterPtrns()); }, _WhereBuilder_buildAndChildPtrn = function _WhereBuilder_buildAndChildPtrn() { const builder = new WhereBuilder(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").andSibling, __classPrivateFieldGet(this, _WhereBuilder_specProvider, "f"), __classPrivateFieldGet(this, _WhereBuilder_typePredicate, "f"), true, __classPrivateFieldGet(this, _WhereBuilder_isInOption, "f"), this.settings); builder.build(); __classPrivateFieldSet(this, _WhereBuilder_andChildPtrns, builder.getResultPtrns(), "f"); // gather default vars from children __classPrivateFieldGet(this, _WhereBuilder_defaultVars, "f").push(...builder.getDefaultVars()); // gather patterns to be executed after __classPrivateFieldGet(this, _WhereBuilder_executedAfterPtrns, "f").push(...builder.getExecutedAfterPtrns()); }, _WhereBuilder_buildRdfPtrn = function _WhereBuilder_buildRdfPtrn() { // exclude the "Any" value if ((__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.endClassWidgetGroup?.getWidgetValues()?.length > 0) && !(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.endClassWidgetGroup?.hasAnyValue())) { __classPrivateFieldSet(this, _WhereBuilder_rdfPtrns, __classPrivateFieldGet(this, _WhereBuilder_valueBuilder, "f").build(), "f"); } }, _WhereBuilder_buildEndClassPtrn = function _WhereBuilder_buildEndClassPtrn() { const endClsGrp = __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.EndClassGroup; const endClsBuilder = new ClassBuilder(endClsGrp, __classPrivateFieldGet(this, _WhereBuilder_specProvider, "f"), __classPrivateFieldGet(this, _WhereBuilder_valueBuilder, "f")?.isBlockingEnd(), __classPrivateFieldGet(this, _WhereBuilder_typePredicate, "f")); endClsBuilder.build(); __classPrivateFieldSet(this, _WhereBuilder_endClassPtrn, endClsBuilder.getPattern(), "f"); if (endClsBuilder.getDefaultVar()) { __classPrivateFieldGet(this, _WhereBuilder_defaultVars, "f").push(endClsBuilder.getDefaultVar()); } }, _WhereBuilder_buildStartClassPtrn = function _WhereBuilder_buildStartClassPtrn() { const startClsGrp = __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.StartClassGroup; const startClsBuilder = new ClassBuilder(startClsGrp, __classPrivateFieldGet(this, _WhereBuilder_specProvider, "f"), __classPrivateFieldGet(this, _WhereBuilder_valueBuilder, "f")?.isBlockingStart(), __classPrivateFieldGet(this, _WhereBuilder_typePredicate, "f")); startClsBuilder.build(); __classPrivateFieldSet(this, _WhereBuilder_startClassPtrn, startClsBuilder.getPattern(), "f"); if (startClsBuilder.getDefaultVar()) { __classPrivateFieldGet(this, _WhereBuilder_defaultVars, "f").push(startClsBuilder.getDefaultVar()); } }, _WhereBuilder_buildIntersectionPtrn = function _WhereBuilder_buildIntersectionPtrn() { const objectPropCls = __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.ObjectPropertyGroup; const intersectionBuilder = new IntersectionBuilder(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.StartClassGroup.getVarName(), __classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.EndClassGroup.getVarName(), __classPrivateFieldGet(this, _WhereBuilder_valueBuilder, "f"), objectPropCls, __classPrivateFieldGet(this, _WhereBuilder_specProvider, "f"), this.settings); intersectionBuilder.build(); __classPrivateFieldSet(this, _WhereBuilder_intersectionPtrn, intersectionBuilder.getPattern(), "f"); }, _WhereBuilder_buildGrpWrapperPtrn = function _WhereBuilder_buildGrpWrapperPtrn() { // The startClassPtrn does not need to be created if it is a WHERE or AND child const hasStartClass = !__classPrivateFieldGet(this, _WhereBuilder_isChild, "f"); const hasEndClass = !__classPrivateFieldGet(this, _WhereBuilder_specProvider, "f") .getEntity(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.EndClassGroup.getTypeSelected()) .isLiteralEntity() && (__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.ObjectPropertyGroup.getTypeSelected() == null || !__classPrivateFieldGet(this, _WhereBuilder_specProvider, "f") .getProperty(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.ObjectPropertyGroup.getTypeSelected()) .omitClassCriteria()); const hasIntersectionTriple = __classPrivateFieldGet(this, _WhereBuilder_intersectionPtrn, "f"); let exceptStartPtrn = []; if (hasIntersectionTriple && __classPrivateFieldGet(this, _WhereBuilder_intersectionPtrn, "f")) exceptStartPtrn.push(...__classPrivateFieldGet(this, _WhereBuilder_intersectionPtrn, "f")); if (hasEndClass) exceptStartPtrn.push(...__classPrivateFieldGet(this, _WhereBuilder_endClassPtrn, "f")); exceptStartPtrn.push(...__classPrivateFieldGet(this, _WhereBuilder_rdfPtrns, "f")); exceptStartPtrn.push(...__classPrivateFieldGet(this, _WhereBuilder_whereChildPtrns, "f")); __classPrivateFieldGet(this, _WhereBuilder_instances, "m", _WhereBuilder_createOptionStatePtrn).call(this, hasStartClass, exceptStartPtrn); __classPrivateFieldGet(this, _WhereBuilder_resultPtrns, "f").push(...__classPrivateFieldGet(this, _WhereBuilder_andChildPtrns, "f")); }, _WhereBuilder_createOptionStatePtrn = function _WhereBuilder_createOptionStatePtrn(hasStartClass, exceptStartPtrn) { // always store the startClassPattern in the final result pattern (no OPTIONAL, no NOT EXISTS, no SERVICE) if (hasStartClass) __classPrivateFieldGet(this, _WhereBuilder_resultPtrns, "f").push(...__classPrivateFieldGet(this, _WhereBuilder_startClassPtrn, "f")); // create a SERVICE clause if needed const sparqlService = __classPrivateFieldGet(this, _WhereBuilder_specProvider, "f") .getProperty(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.ObjectPropertyGroup?.getTypeSelected()) ?.getServiceEndpoint(); let servicePtrn = null; if (__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").optionState === OptionTypes.SERVICE || sparqlService) { const endpoint = factory.namedNode(sparqlService); // to be on the safe side : when rollback an endclass group, we may come here with only the start class group criteria // and nothing in this array if (exceptStartPtrn.length > 0) { servicePtrn = SparqlFactory.buildServicePattern(exceptStartPtrn, endpoint); } } let normalOrServicePatterns = servicePtrn ? [servicePtrn] : exceptStartPtrn; // produce the generated patterns, maybe wrapped in OPTIONAL or NOT EXISTS let finalResultPtrns = []; if (__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").optionState === OptionTypes.OPTIONAL && !__classPrivateFieldGet(this, _WhereBuilder_isInOption, "f")) { finalResultPtrns.push(SparqlFactory.buildOptionalPattern(normalOrServicePatterns)); } else if (__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").optionState === OptionTypes.NOTEXISTS && !__classPrivateFieldGet(this, _WhereBuilder_isInOption, "f")) { finalResultPtrns.push(SparqlFactory.buildNotExistsPattern(SparqlFactory.buildGroupPattern(normalOrServicePatterns))); } else { // nothing special, just retain the patterns in the final result pattern finalResultPtrns.push(...normalOrServicePatterns); } // then decide where to store the generated patterns : either in "normal" patterns // or in patterns that shall be executed after the rest of the query if (servicePtrn && __classPrivateFieldGet(this, _WhereBuilder_specProvider, "f") .getProperty(__classPrivateFieldGet(this, _WhereBuilder_grpWrapper, "f").CriteriaGroup.ObjectPropertyGroup?.getTypeSelected()) ?.isLogicallyExecutedAfter()) { __classPrivateFieldGet(this, _WhereBuilder_executedAfterPtrns, "f").push(...finalResultPtrns); } else { __classPrivateFieldGet(this, _WhereBuilder_resultPtrns, "f").push(...finalResultPtrns); } }; //# sourceMappingURL=WhereBuilder.js.map