@comunica/actor-query-operation-join 4.0.1 → 4.1.0
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.
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ActorQueryOperationJoin = void 0;
|
|
4
4
|
const bus_query_operation_1 = require("@comunica/bus-query-operation");
|
|
5
|
+
const bus_rdf_join_1 = require("@comunica/bus-rdf-join");
|
|
5
6
|
const core_1 = require("@comunica/core");
|
|
7
|
+
const utils_metadata_1 = require("@comunica/utils-metadata");
|
|
6
8
|
const utils_query_operation_1 = require("@comunica/utils-query-operation");
|
|
9
|
+
const asynciterator_1 = require("asynciterator");
|
|
10
|
+
const rdf_data_factory_1 = require("rdf-data-factory");
|
|
7
11
|
/**
|
|
8
12
|
* A comunica Join Query Operation Actor.
|
|
9
13
|
*/
|
|
@@ -24,6 +28,22 @@ class ActorQueryOperationJoin extends bus_query_operation_1.ActorQueryOperationT
|
|
|
24
28
|
output: (0, utils_query_operation_1.getSafeBindings)(output),
|
|
25
29
|
operation,
|
|
26
30
|
}));
|
|
31
|
+
// Return immediately if one of the join entries has cardinality zero, to avoid actor testing overhead.
|
|
32
|
+
if ((await Promise.all(entries.map(entry => entry.output.metadata())))
|
|
33
|
+
.some(entry => (entry.cardinality.value === 0 && entry.cardinality.type === 'exact'))) {
|
|
34
|
+
for (const entry of entries) {
|
|
35
|
+
entry.output.bindingsStream.close();
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
bindingsStream: new asynciterator_1.ArrayIterator([], { autoStart: false }),
|
|
39
|
+
metadata: async () => ({
|
|
40
|
+
state: new utils_metadata_1.MetadataValidationState(),
|
|
41
|
+
cardinality: { type: 'exact', value: 0 },
|
|
42
|
+
variables: bus_rdf_join_1.ActorRdfJoin.joinVariables(new rdf_data_factory_1.DataFactory(), await bus_rdf_join_1.ActorRdfJoin.getMetadatas(entries)),
|
|
43
|
+
}),
|
|
44
|
+
type: 'bindings',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
27
47
|
return this.mediatorJoin.mediate({ type: 'inner', entries, context });
|
|
28
48
|
}
|
|
29
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorQueryOperationJoin.js","sourceRoot":"","sources":["ActorQueryOperationJoin.ts"],"names":[],"mappings":";;;AACA,uEAEuC;
|
|
1
|
+
{"version":3,"file":"ActorQueryOperationJoin.js","sourceRoot":"","sources":["ActorQueryOperationJoin.ts"],"names":[],"mappings":";;;AACA,uEAEuC;AAEvC,yDAAsD;AAEtD,yCAA8C;AAE9C,6DAAmE;AACnE,2EAAkE;AAElE,iDAA8C;AAC9C,uDAA+C;AAG/C;;GAEG;AACH,MAAa,uBAAwB,SAAQ,sDAA8C;IAGzF,YAAmB,IAAkC;QACnD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,UAAwB,EAAE,QAAwB;QAC3E,OAAO,IAAA,mBAAY,GAAE,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,iBAA+B,EAC/B,OAAuB;QAEvB,MAAM,OAAO,GAAiB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK;aACrE,GAAG,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE,CAAC,CAAC;YAC1B,MAAM,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;YACvF,SAAS,EAAE,YAAY;SACxB,CAAC,CAAC,CAAC,CAAC;aACJ,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM,EAAE,IAAA,uCAAe,EAAC,MAAM,CAAC;YAC/B,SAAS;SACV,CAAC,CAAC,CAAC;QAEN,uGAAuG;QACvG,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACnE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;YACxF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YACtC,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,IAAI,6BAAa,CAAe,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACzE,QAAQ,EAAE,KAAK,IAAG,EAAE,CAAC,CAAC;oBACpB,KAAK,EAAE,IAAI,wCAAuB,EAAE;oBACpC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;oBACxC,SAAS,EAAE,2BAAY,CAAC,aAAa,CAAC,IAAI,8BAAW,EAAE,EAAE,MAAM,2BAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACnG,CAAC;gBACF,IAAI,EAAE,UAAU;aACjB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;CACF;AA5CD,0DA4CC","sourcesContent":["import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type { IQueryOperationResult, IActionContext, IJoinEntry } from '@comunica/types';\nimport { MetadataValidationState } from '@comunica/utils-metadata';\nimport { getSafeBindings } from '@comunica/utils-query-operation';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Query Operation Actor.\n */\nexport class ActorQueryOperationJoin extends ActorQueryOperationTypedMediated<Algebra.Join> {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationJoinArgs) {\n super(args, 'join');\n }\n\n public async testOperation(_operation: Algebra.Join, _context: IActionContext): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n public async runOperation(\n operationOriginal: Algebra.Join,\n context: IActionContext,\n ): Promise<IQueryOperationResult> {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: getSafeBindings(output),\n operation,\n }));\n\n // Return immediately if one of the join entries has cardinality zero, to avoid actor testing overhead.\n if ((await Promise.all(entries.map(entry => entry.output.metadata())))\n .some(entry => (entry.cardinality.value === 0 && entry.cardinality.type === 'exact'))) {\n for (const entry of entries) {\n entry.output.bindingsStream.close();\n }\n return {\n bindingsStream: new ArrayIterator<RDF.Bindings>([], { autoStart: false }),\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n variables: ActorRdfJoin.joinVariables(new DataFactory(), await ActorRdfJoin.getMetadatas(entries)),\n }),\n type: 'bindings',\n };\n }\n\n return this.mediatorJoin.mediate({ type: 'inner', entries, context });\n }\n}\n\nexport interface IActorQueryOperationJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/actor-query-operation-join",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "A join query-operation actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,12 +41,16 @@
|
|
|
41
41
|
"build:components": "componentsjs-generator"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@comunica/bus-query-operation": "^4.0
|
|
45
|
-
"@comunica/bus-rdf-join": "^4.0
|
|
46
|
-
"@comunica/core": "^4.0
|
|
47
|
-
"@comunica/types": "^4.0
|
|
48
|
-
"@comunica/utils-
|
|
44
|
+
"@comunica/bus-query-operation": "^4.1.0",
|
|
45
|
+
"@comunica/bus-rdf-join": "^4.1.0",
|
|
46
|
+
"@comunica/core": "^4.1.0",
|
|
47
|
+
"@comunica/types": "^4.1.0",
|
|
48
|
+
"@comunica/utils-metadata": "^4.1.0",
|
|
49
|
+
"@comunica/utils-query-operation": "^4.1.0",
|
|
50
|
+
"@rdfjs/types": "*",
|
|
51
|
+
"asynciterator": "^3.9.0",
|
|
52
|
+
"rdf-data-factory": "^1.1.2",
|
|
49
53
|
"sparqlalgebrajs": "^4.3.8"
|
|
50
54
|
},
|
|
51
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "711446473d18f5fd47aa1a67e6c23582234221ec"
|
|
52
56
|
}
|