@comunica/actor-query-operation-path-zero-or-one 5.0.2 → 5.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -54,16 +54,21 @@ class ActorQueryOperationPathZeroOrOne extends actor_abstract_path_1.ActorAbstra
|
|
|
54
54
|
if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {
|
|
55
55
|
// Both subject and object are variables
|
|
56
56
|
// To determine the "Zero" part, we
|
|
57
|
-
// query ?s ?p ?
|
|
58
|
-
const varP = this.generateVariable(dataFactory, operation);
|
|
57
|
+
// query { ?s ?p ?x } UNION { ?x ?p ?s } , to get all possible namedNodes in de the db
|
|
58
|
+
const varP = this.generateVariable(dataFactory, operation, 'p');
|
|
59
|
+
const varX = this.generateVariable(dataFactory, operation, 'x');
|
|
59
60
|
const bindingsZero = (0, utils_query_operation_1.getSafeBindings)(await this.mediatorQueryOperation.mediate({
|
|
60
61
|
context,
|
|
61
|
-
operation: algebraFactory.
|
|
62
|
-
.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
operation: algebraFactory.createUnion([
|
|
63
|
+
this.assignPatternSources(algebraFactory, algebraFactory
|
|
64
|
+
.createPattern(operation.subject, varP, varX, operation.graph), sources),
|
|
65
|
+
this.assignPatternSources(algebraFactory, algebraFactory
|
|
66
|
+
.createPattern(varX, varP, operation.subject, operation.graph), sources),
|
|
67
|
+
]),
|
|
68
|
+
})).bindingsStream.map(bindings => bindings
|
|
69
|
+
.delete(varP)
|
|
70
|
+
.delete(varX)
|
|
71
|
+
.set(operation.object, bindings.get(operation.subject)));
|
|
67
72
|
bindingsStream = new asynciterator_1.UnionIterator([
|
|
68
73
|
bindingsZero,
|
|
69
74
|
bindingsOne.bindingsStream,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorQueryOperationPathZeroOrOne.js","sourceRoot":"","sources":["ActorQueryOperationPathZeroOrOne.ts"],"names":[],"mappings":";;;AAAA,uEAAkE;AAGlE,+DAA0D;AAS1D,2DAAkE;AAClE,6EAAmE;AACnE,6DAAmE;AACnE,2EAAkE;AAElE,iDAGuB;AAEvB;;GAEG;AACH,MAAa,gCAAiC,SAAQ,uCAAiB;IACrD,4BAA4B,CAA+B;IAE3E,YAAmB,IAA2C;QAC5D,KAAK,CAAC,IAAI,EAAE,uBAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,SAAuB,EACvB,OAAuB;QAEvB,MAAM,WAAW,GAAwB,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,WAAW,CAAC,CAAC;QACpF,MAAM,cAAc,GAAG,IAAI,8BAAc,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,wCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9G,MAAM,SAAS,GAA2B,SAAS,CAAC,SAAS,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,wCAAwC;QACxC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU;YAC3C,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU;YACxC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,IAAI,iCAAiB,CAAe,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC/E,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC9B,KAAK,EAAE,IAAI,wCAAuB,EAAE;oBACpC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;oBACxC,SAAS,EAAE,EAAE;iBACd,CAAC;aACH,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9F,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAE3B,oDAAoD;QACpD,MAAM,WAAW,GAAG,IAAA,uCAAe,EAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;YAC5E,OAAO;YACP,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;SAC3G,CAAC,CAAC,CAAC;QAEJ,iFAAiF;QACjF,IAAI,cAA8B,CAAC;QACnC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC1F,wCAAwC;YACxC,mCAAmC;YACnC,
|
|
1
|
+
{"version":3,"file":"ActorQueryOperationPathZeroOrOne.js","sourceRoot":"","sources":["ActorQueryOperationPathZeroOrOne.ts"],"names":[],"mappings":";;;AAAA,uEAAkE;AAGlE,+DAA0D;AAS1D,2DAAkE;AAClE,6EAAmE;AACnE,6DAAmE;AACnE,2EAAkE;AAElE,iDAGuB;AAEvB;;GAEG;AACH,MAAa,gCAAiC,SAAQ,uCAAiB;IACrD,4BAA4B,CAA+B;IAE3E,YAAmB,IAA2C;QAC5D,KAAK,CAAC,IAAI,EAAE,uBAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,SAAuB,EACvB,OAAuB;QAEvB,MAAM,WAAW,GAAwB,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,WAAW,CAAC,CAAC;QACpF,MAAM,cAAc,GAAG,IAAI,8BAAc,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,wCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9G,MAAM,SAAS,GAA2B,SAAS,CAAC,SAAS,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,wCAAwC;QACxC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU;YAC3C,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU;YACxC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,IAAI,iCAAiB,CAAe,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC/E,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC9B,KAAK,EAAE,IAAI,wCAAuB,EAAE;oBACpC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;oBACxC,SAAS,EAAE,EAAE;iBACd,CAAC;aACH,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9F,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAE3B,oDAAoD;QACpD,MAAM,WAAW,GAAG,IAAA,uCAAe,EAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;YAC5E,OAAO;YACP,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;SAC3G,CAAC,CAAC,CAAC;QAEJ,iFAAiF;QACjF,IAAI,cAA8B,CAAC;QACnC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC1F,wCAAwC;YACxC,mCAAmC;YACnC,sFAAsF;YACtF,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,uCAAe,EAClC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;gBACxC,OAAO;gBACP,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC;oBACpC,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,cAAc;yBACrD,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;oBAC1E,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,cAAc;yBACrD,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;iBAC3E,CAAC;aACH,CAAC,CACH,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ;iBACtC,MAAM,CAAC,IAAI,CAAC;iBACZ,MAAM,CAAC,IAAI,CAAC;iBACZ,GAAG,CAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAgB,SAAS,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC;YAC1F,cAAc,GAAG,IAAI,6BAAa,CAAC;gBACjC,YAAY;gBACZ,WAAW,CAAC,cAAc;aAC3B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,sFAAsF;YACtF,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;YAED,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,IAA8B,EAAE;YACpD,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YACnD,OAAO;gBACL,GAAG,aAAa;gBAChB,WAAW,EAAE;oBACX,GAAG,aAAa,CAAC,WAAW;oBAC5B,0DAA0D;oBAC1D,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC;iBAC3C;aACF,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,cAAc;YACd,QAAQ;SACT,CAAC;IACJ,CAAC;CACF;AAxGD,4EAwGC","sourcesContent":["import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type {\n Bindings,\n IQueryOperationResult,\n IActionContext,\n BindingsStream,\n ComunicaDataFactory,\n MetadataBindings,\n} from '@comunica/types';\nimport { Algebra, AlgebraFactory } from '@comunica/utils-algebra';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport { MetadataValidationState } from '@comunica/utils-metadata';\nimport { getSafeBindings } from '@comunica/utils-query-operation';\nimport type * as RDF from '@rdfjs/types';\nimport {\n SingletonIterator,\n UnionIterator,\n} from 'asynciterator';\n\n/**\n * A comunica Path ZeroOrOne Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrOne extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrOneArgs) {\n super(args, Algebra.Types.ZERO_OR_ONE_PATH);\n this.mediatorMergeBindingsContext = args.mediatorMergeBindingsContext;\n }\n\n public async runOperation(\n operation: Algebra.Path,\n context: IActionContext,\n ): Promise<IQueryOperationResult> {\n const dataFactory: ComunicaDataFactory = context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new AlgebraFactory(dataFactory);\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context, dataFactory);\n const predicate = <Algebra.ZeroOrOnePath> operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const extra: Bindings[] = [];\n\n // Both subject and object non-variables\n if (operation.subject.termType !== 'Variable' &&\n operation.object.termType !== 'Variable' &&\n operation.subject.equals(operation.object)) {\n return {\n type: 'bindings',\n bindingsStream: new SingletonIterator<RDF.Bindings>(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n variables: [],\n }),\n };\n }\n\n // Check if we require a distinct path operation\n const distinct = await this.isPathArbitraryLengthDistinct(algebraFactory, context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n\n // Create an operator that resolve to the \"One\" part\n const bindingsOne = getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: algebraFactory.createPath(operation.subject, predicate.path, operation.object, operation.graph),\n }));\n\n // Determine the bindings stream based on the variable-ness of subject and object\n let bindingsStream: BindingsStream;\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Both subject and object are variables\n // To determine the \"Zero\" part, we\n // query { ?s ?p ?x } UNION { ?x ?p ?s } , to get all possible namedNodes in de the db\n const varP = this.generateVariable(dataFactory, operation, 'p');\n const varX = this.generateVariable(dataFactory, operation, 'x');\n const bindingsZero = getSafeBindings(\n await this.mediatorQueryOperation.mediate({\n context,\n operation: algebraFactory.createUnion([\n this.assignPatternSources(algebraFactory, algebraFactory\n .createPattern(operation.subject, varP, varX, operation.graph), sources),\n this.assignPatternSources(algebraFactory, algebraFactory\n .createPattern(varX, varP, operation.subject, operation.graph), sources),\n ]),\n }),\n ).bindingsStream.map(bindings => bindings\n .delete(varP)\n .delete(varX)\n .set(<RDF.Variable> operation.object, bindings.get(<RDF.Variable> operation.subject)!));\n bindingsStream = new UnionIterator([\n bindingsZero,\n bindingsOne.bindingsStream,\n ], { autoStart: false });\n } else {\n // If subject or object is not a variable, then determining the \"Zero\" part is simple.\n if (operation.subject.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.subject, operation.object ]]));\n }\n if (operation.object.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.object, operation.subject ]]));\n }\n\n bindingsStream = bindingsOne.bindingsStream.prepend(extra);\n }\n\n const metadata = async(): Promise<MetadataBindings> => {\n const innerMetadata = await bindingsOne.metadata();\n return {\n ...innerMetadata,\n cardinality: {\n ...innerMetadata.cardinality,\n // Add one to cardinality because we allow *ZERO* or more.\n value: innerMetadata.cardinality.value + 1,\n },\n };\n };\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\nexport interface IActorQueryOperationPathZeroOrOneArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/actor-query-operation-path-zero-or-one",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.5",
|
|
4
4
|
"description": "A path-zero-or-one query-operation actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,16 +41,16 @@
|
|
|
41
41
|
"build:components": "componentsjs-generator"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@comunica/actor-abstract-path": "^5.0.
|
|
45
|
-
"@comunica/bus-merge-bindings-context": "^5.0.
|
|
46
|
-
"@comunica/bus-query-operation": "^5.0.
|
|
47
|
-
"@comunica/context-entries": "^5.0.
|
|
44
|
+
"@comunica/actor-abstract-path": "^5.0.3",
|
|
45
|
+
"@comunica/bus-merge-bindings-context": "^5.0.3",
|
|
46
|
+
"@comunica/bus-query-operation": "^5.0.3",
|
|
47
|
+
"@comunica/context-entries": "^5.0.3",
|
|
48
48
|
"@comunica/types": "^5.0.0",
|
|
49
49
|
"@comunica/utils-algebra": "^5.0.0",
|
|
50
|
-
"@comunica/utils-bindings-factory": "^5.0.
|
|
50
|
+
"@comunica/utils-bindings-factory": "^5.0.3",
|
|
51
51
|
"@comunica/utils-metadata": "^5.0.0",
|
|
52
|
-
"@comunica/utils-query-operation": "^5.0.
|
|
52
|
+
"@comunica/utils-query-operation": "^5.0.3",
|
|
53
53
|
"asynciterator": "^3.10.0"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "d0e4bb31d1a7eeebedbb3d98cfe3d86e716c50db"
|
|
56
56
|
}
|