@comunica/actor-query-operation-source 3.1.2 → 3.2.1
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.
|
@@ -28,22 +28,27 @@ class ActorQueryOperationSource extends bus_query_operation_1.ActorQueryOperatio
|
|
|
28
28
|
}
|
|
29
29
|
const sourceWrapper = bus_query_operation_1.ActorQueryOperation.getOperationSource(action.operation);
|
|
30
30
|
const mergedContext = sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context;
|
|
31
|
+
// Check if the operation is a CONSTRUCT query
|
|
32
|
+
// We recurse because it may be wrapped in other operations such as SLICE and FROM
|
|
33
|
+
let construct = false;
|
|
34
|
+
sparqlalgebrajs_1.Util.recurseOperation(action.operation, {
|
|
35
|
+
construct() {
|
|
36
|
+
construct = true;
|
|
37
|
+
return false;
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
// If so, delegate to queryQuads
|
|
41
|
+
if (construct) {
|
|
42
|
+
const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);
|
|
43
|
+
const metadata = (0, metadata_1.getMetadataQuads)(quadStream);
|
|
44
|
+
return {
|
|
45
|
+
type: 'quads',
|
|
46
|
+
quadStream,
|
|
47
|
+
metadata,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
31
50
|
// eslint-disable-next-line ts/switch-exhaustiveness-check
|
|
32
51
|
switch (action.operation.type) {
|
|
33
|
-
// Special case: allow CONSTRUCT queries that are SLICED to be pushed into sources as well.
|
|
34
|
-
case sparqlalgebrajs_1.Algebra.types.SLICE:
|
|
35
|
-
case sparqlalgebrajs_1.Algebra.types.CONSTRUCT: {
|
|
36
|
-
if (action.operation.type === sparqlalgebrajs_1.Algebra.types.SLICE && action.operation.input.type !== sparqlalgebrajs_1.Algebra.types.CONSTRUCT) {
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);
|
|
40
|
-
const metadata = (0, metadata_1.getMetadataQuads)(quadStream);
|
|
41
|
-
return {
|
|
42
|
-
type: 'quads',
|
|
43
|
-
quadStream,
|
|
44
|
-
metadata,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
52
|
case sparqlalgebrajs_1.Algebra.types.ASK:
|
|
48
53
|
return {
|
|
49
54
|
type: 'boolean',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorQueryOperationSource.js","sourceRoot":"","sources":["ActorQueryOperationSource.ts"],"names":[],"mappings":";;;AACA,uEAAoE;AACpE,+DAA0D;AAE1D,iDAA2E;AAM3E,
|
|
1
|
+
{"version":3,"file":"ActorQueryOperationSource.js","sourceRoot":"","sources":["ActorQueryOperationSource.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActionQueryOperation, IActorQueryOperationArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { getMetadataBindings, getMetadataQuads } from '@comunica/metadata';\nimport type {\n IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Source Query Operation Actor.\n */\nexport class ActorQueryOperationSource extends ActorQueryOperation {\n public constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryOperation): Promise<IActorTest> {\n if (!ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} requires an operation with source annotation.`);\n }\n return { httpRequests: 1 };\n }\n\n public async run(action: IActionQueryOperation): Promise<IQueryOperationResult> {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(action.operation)!;\n const mergedContext = sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context;\n\n // Check if the operation is a CONSTRUCT query\n // We recurse because it may be wrapped in other operations such as SLICE and FROM\n let construct = false;\n Util.recurseOperation(action.operation, {\n construct(): boolean {\n construct = true;\n return false;\n },\n });\n // If so, delegate to queryQuads\n if (construct) {\n const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);\n const metadata = getMetadataQuads(quadStream);\n return {\n type: 'quads',\n quadStream,\n metadata,\n };\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (action.operation.type) {\n case Algebra.types.ASK:\n return {\n type: 'boolean',\n execute: () => sourceWrapper.source.queryBoolean(<Algebra.Ask>action.operation, mergedContext),\n };\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n return {\n type: 'void',\n execute: () => sourceWrapper.source.queryVoid(<Algebra.Update>action.operation, mergedContext),\n };\n }\n\n const bindingsStream = sourceWrapper.source.queryBindings(action.operation, mergedContext);\n const metadata = getMetadataBindings(bindingsStream);\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/actor-query-operation-source",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "A source query-operation actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
"build:components": "componentsjs-generator"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@comunica/bus-query-operation": "^3.1
|
|
41
|
-
"@comunica/context-entries": "^3.1
|
|
42
|
-
"@comunica/core": "^3.1
|
|
43
|
-
"@comunica/metadata": "^3.1
|
|
44
|
-
"@comunica/types": "^3.1
|
|
45
|
-
"sparqlalgebrajs": "^4.3.
|
|
40
|
+
"@comunica/bus-query-operation": "^3.2.1",
|
|
41
|
+
"@comunica/context-entries": "^3.2.1",
|
|
42
|
+
"@comunica/core": "^3.2.1",
|
|
43
|
+
"@comunica/metadata": "^3.2.1",
|
|
44
|
+
"@comunica/types": "^3.2.1",
|
|
45
|
+
"sparqlalgebrajs": "^4.3.7"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "f558377c3cefbd1606c51ede80440b862e7dda4f"
|
|
48
48
|
}
|