@comunica/actor-optimize-query-operation-assign-sources-exhaustive 4.4.1 → 4.4.2-alpha.49.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.
File without changes
File without changes
@@ -2,7 +2,7 @@ import type { IActionOptimizeQueryOperation, IActorOptimizeQueryOperationOutput,
2
2
  import { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';
3
3
  import type { IActorTest, TestResult } from '@comunica/core';
4
4
  import type { IQuerySourceWrapper } from '@comunica/types';
5
- import { Algebra, Factory } from 'sparqlalgebrajs';
5
+ import { Algebra, AlgebraFactory } from '@comunica/utils-algebra';
6
6
  /**
7
7
  * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.
8
8
  */
@@ -14,9 +14,9 @@ export declare class ActorOptimizeQueryOperationAssignSourcesExhaustive extends
14
14
  * Assign the given sources to the leaves in the given query operation.
15
15
  * Leaves will be wrapped in a union operation and duplicated for every source.
16
16
  * The input operation will not be modified.
17
- * @param algebraFactory The algebra factory.
17
+ * @param factory The algebra factory.
18
18
  * @param operation The input operation.
19
19
  * @param sources The sources to assign.
20
20
  */
21
- assignExhaustive(algebraFactory: Factory, operation: Algebra.Operation, sources: IQuerySourceWrapper[]): Algebra.Operation;
21
+ assignExhaustive(factory: AlgebraFactory, operation: Algebra.Operation, sources: IQuerySourceWrapper[]): Algebra.Operation;
22
22
  }
@@ -5,8 +5,8 @@ const bus_optimize_query_operation_1 = require("@comunica/bus-optimize-query-ope
5
5
  const bus_rdf_update_quads_1 = require("@comunica/bus-rdf-update-quads");
6
6
  const context_entries_1 = require("@comunica/context-entries");
7
7
  const core_1 = require("@comunica/core");
8
+ const utils_algebra_1 = require("@comunica/utils-algebra");
8
9
  const utils_query_operation_1 = require("@comunica/utils-query-operation");
9
- const sparqlalgebrajs_1 = require("sparqlalgebrajs");
10
10
  /**
11
11
  * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.
12
12
  */
@@ -19,7 +19,7 @@ class ActorOptimizeQueryOperationAssignSourcesExhaustive extends bus_optimize_qu
19
19
  }
20
20
  async run(action) {
21
21
  const dataFactory = action.context.getSafe(context_entries_1.KeysInitQuery.dataFactory);
22
- const algebraFactory = new sparqlalgebrajs_1.Factory(dataFactory);
22
+ const algebraFactory = new utils_algebra_1.AlgebraFactory(dataFactory);
23
23
  const sources = action.context.get(context_entries_1.KeysQueryOperation.querySources) ?? [];
24
24
  if (sources.length === 0) {
25
25
  return { operation: action.operation, context: action.context };
@@ -55,72 +55,54 @@ class ActorOptimizeQueryOperationAssignSourcesExhaustive extends bus_optimize_qu
55
55
  * Assign the given sources to the leaves in the given query operation.
56
56
  * Leaves will be wrapped in a union operation and duplicated for every source.
57
57
  * The input operation will not be modified.
58
- * @param algebraFactory The algebra factory.
58
+ * @param factory The algebra factory.
59
59
  * @param operation The input operation.
60
60
  * @param sources The sources to assign.
61
61
  */
62
- assignExhaustive(algebraFactory, operation, sources) {
63
- // eslint-disable-next-line ts/no-this-alias
64
- const self = this;
65
- return sparqlalgebrajs_1.Util.mapOperation(operation, {
66
- [sparqlalgebrajs_1.Algebra.types.PATTERN](subOperation, factory) {
67
- if (sources.length === 1) {
68
- return {
69
- result: (0, utils_query_operation_1.assignOperationSource)(subOperation, sources[0]),
70
- recurse: false,
71
- };
72
- }
73
- return {
74
- result: factory.createUnion(sources
75
- .map(source => (0, utils_query_operation_1.assignOperationSource)(subOperation, source))),
76
- recurse: false,
77
- };
62
+ assignExhaustive(factory, operation, sources) {
63
+ return utils_algebra_1.algebraUtils.mapOperation(operation, {
64
+ [utils_algebra_1.Algebra.Types.PATTERN]: {
65
+ preVisitor: () => ({ continue: false }),
66
+ transform: (patternOp) => {
67
+ if (sources.length === 1) {
68
+ return (0, utils_query_operation_1.assignOperationSource)(patternOp, sources[0]);
69
+ }
70
+ return factory.createUnion(sources
71
+ .map(source => (0, utils_query_operation_1.assignOperationSource)(patternOp, source)));
72
+ },
78
73
  },
79
- [sparqlalgebrajs_1.Algebra.types.LINK](subOperation, factory) {
80
- if (sources.length === 1) {
81
- return {
82
- result: (0, utils_query_operation_1.assignOperationSource)(subOperation, sources[0]),
83
- recurse: false,
84
- };
85
- }
86
- return {
87
- result: factory.createAlt(sources
88
- .map(source => (0, utils_query_operation_1.assignOperationSource)(subOperation, source))),
89
- recurse: false,
90
- };
74
+ [utils_algebra_1.Algebra.Types.SERVICE]: {
75
+ preVisitor: () => ({ continue: false }),
91
76
  },
92
- [sparqlalgebrajs_1.Algebra.types.NPS](subOperation, factory) {
93
- if (sources.length === 1) {
94
- return {
95
- result: (0, utils_query_operation_1.assignOperationSource)(subOperation, sources[0]),
96
- recurse: false,
97
- };
98
- }
99
- return {
100
- result: factory.createAlt(sources
101
- .map(source => (0, utils_query_operation_1.assignOperationSource)(subOperation, source))),
102
- recurse: false,
103
- };
77
+ [utils_algebra_1.Algebra.Types.CONSTRUCT]: {
78
+ preVisitor: () => ({ continue: false }),
79
+ transform: constructOp => factory.createConstruct(this.assignExhaustive(factory, constructOp.input, sources), constructOp.template),
104
80
  },
105
- [sparqlalgebrajs_1.Algebra.types.SERVICE](subOperation) {
106
- return {
107
- result: subOperation,
108
- recurse: false,
109
- };
81
+ [utils_algebra_1.Algebra.Types.LINK]: {
82
+ preVisitor: () => ({ continue: false }),
83
+ transform: (linkOp) => {
84
+ if (sources.length === 1) {
85
+ return (0, utils_query_operation_1.assignOperationSource)(linkOp, sources[0]);
86
+ }
87
+ return factory.createAlt(sources
88
+ .map(source => (0, utils_query_operation_1.assignOperationSource)(linkOp, source)));
89
+ },
110
90
  },
111
- [sparqlalgebrajs_1.Algebra.types.CONSTRUCT](subOperation, factory) {
112
- return {
113
- result: factory.createConstruct(self.assignExhaustive(algebraFactory, subOperation.input, sources), subOperation.template),
114
- recurse: false,
115
- };
91
+ [utils_algebra_1.Algebra.Types.NPS]: {
92
+ preVisitor: () => ({ continue: false }),
93
+ transform: (npsOp) => {
94
+ if (sources.length === 1) {
95
+ return (0, utils_query_operation_1.assignOperationSource)(npsOp, sources[0]);
96
+ }
97
+ return factory.createAlt(sources
98
+ .map(source => (0, utils_query_operation_1.assignOperationSource)(npsOp, source)));
99
+ },
116
100
  },
117
- [sparqlalgebrajs_1.Algebra.types.DELETE_INSERT](subOperation, factory) {
118
- return {
119
- result: factory.createDeleteInsert(subOperation.delete, subOperation.insert, subOperation.where ? self.assignExhaustive(algebraFactory, subOperation.where, sources) : undefined),
120
- recurse: false,
121
- };
101
+ [utils_algebra_1.Algebra.Types.DELETE_INSERT]: {
102
+ preVisitor: () => ({ continue: false }),
103
+ transform: delInsOp => factory.createDeleteInsert(delInsOp.delete, delInsOp.insert, delInsOp.where ? this.assignExhaustive(factory, delInsOp.where, sources) : undefined),
122
104
  },
123
- }, algebraFactory);
105
+ });
124
106
  }
125
107
  }
126
108
  exports.ActorOptimizeQueryOperationAssignSourcesExhaustive = ActorOptimizeQueryOperationAssignSourcesExhaustive;
@@ -1 +1 @@
1
- {"version":3,"file":"ActorOptimizeQueryOperationAssignSourcesExhaustive.js","sourceRoot":"","sources":["ActorOptimizeQueryOperationAssignSourcesExhaustive.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { getDataDestinationValue } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type { ComunicaDataFactory, IDataDestination, IQuerySourceWrapper } from '@comunica/types';\nimport { assignOperationSource, doesShapeAcceptOperation } from '@comunica/utils-query-operation';\nimport { Algebra, Factory, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationAssignSourcesExhaustive extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise<IActorOptimizeQueryOperationOutput> {\n const dataFactory: ComunicaDataFactory = action.context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new Factory(dataFactory);\n\n const sources: IQuerySourceWrapper[] = action.context.get(KeysQueryOperation.querySources) ?? [];\n if (sources.length === 0) {\n return { operation: action.operation, context: action.context };\n }\n if (sources.length === 1) {\n const sourceWrapper = sources[0];\n const destination: IDataDestination | undefined = action.context.get(KeysRdfUpdateQuads.destination);\n if (!destination || sourceWrapper.source.referenceValue === getDataDestinationValue(destination)) {\n try {\n const shape = await sourceWrapper.source.getSelectorShape(action.context);\n if (doesShapeAcceptOperation(shape, action.operation)) {\n return {\n operation: assignOperationSource(action.operation, sourceWrapper),\n context: action.context,\n };\n }\n } catch {\n // Fallback to the default case when the selector shape does not exist,\n // which can occur for a non-existent destination.\n }\n }\n }\n return {\n operation: this.assignExhaustive(algebraFactory, action.operation, sources),\n // We only keep queryString in the context if we only have a single source that accepts the full operation.\n // In that case, the queryString can be sent to the source as-is.\n context: action.context\n .delete(KeysInitQuery.queryString),\n };\n }\n\n /**\n * Assign the given sources to the leaves in the given query operation.\n * Leaves will be wrapped in a union operation and duplicated for every source.\n * The input operation will not be modified.\n * @param algebraFactory The algebra factory.\n * @param operation The input operation.\n * @param sources The sources to assign.\n */\n public assignExhaustive(\n algebraFactory: Factory,\n operation: Algebra.Operation,\n sources: IQuerySourceWrapper[],\n ): Algebra.Operation {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createUnion(sources\n .map(source => assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.LINK](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.NPS](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.SERVICE](subOperation) {\n return {\n result: subOperation,\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT](subOperation, factory) {\n return {\n result: factory.createConstruct(\n self.assignExhaustive(algebraFactory, subOperation.input, sources),\n subOperation.template,\n ),\n recurse: false,\n };\n },\n [Algebra.types.DELETE_INSERT](subOperation, factory) {\n return {\n result: factory.createDeleteInsert(\n subOperation.delete,\n subOperation.insert,\n subOperation.where ? self.assignExhaustive(algebraFactory, subOperation.where, sources) : undefined,\n ),\n recurse: false,\n };\n },\n }, algebraFactory);\n }\n}\n"]}
1
+ {"version":3,"file":"ActorOptimizeQueryOperationAssignSourcesExhaustive.js","sourceRoot":"","sources":["ActorOptimizeQueryOperationAssignSourcesExhaustive.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { getDataDestinationValue } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type { ComunicaDataFactory, IDataDestination, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, AlgebraFactory, algebraUtils } from '@comunica/utils-algebra';\nimport { assignOperationSource, doesShapeAcceptOperation } from '@comunica/utils-query-operation';\n\n/**\n * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationAssignSourcesExhaustive extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise<IActorOptimizeQueryOperationOutput> {\n const dataFactory: ComunicaDataFactory = action.context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new AlgebraFactory(dataFactory);\n\n const sources: IQuerySourceWrapper[] = action.context.get(KeysQueryOperation.querySources) ?? [];\n if (sources.length === 0) {\n return { operation: action.operation, context: action.context };\n }\n if (sources.length === 1) {\n const sourceWrapper = sources[0];\n const destination: IDataDestination | undefined = action.context.get(KeysRdfUpdateQuads.destination);\n if (!destination || sourceWrapper.source.referenceValue === getDataDestinationValue(destination)) {\n try {\n const shape = await sourceWrapper.source.getSelectorShape(action.context);\n if (doesShapeAcceptOperation(shape, action.operation)) {\n return {\n operation: assignOperationSource(action.operation, sourceWrapper),\n context: action.context,\n };\n }\n } catch {\n // Fallback to the default case when the selector shape does not exist,\n // which can occur for a non-existent destination.\n }\n }\n }\n return {\n operation: this.assignExhaustive(algebraFactory, action.operation, sources),\n // We only keep queryString in the context if we only have a single source that accepts the full operation.\n // In that case, the queryString can be sent to the source as-is.\n context: action.context\n .delete(KeysInitQuery.queryString),\n };\n }\n\n /**\n * Assign the given sources to the leaves in the given query operation.\n * Leaves will be wrapped in a union operation and duplicated for every source.\n * The input operation will not be modified.\n * @param factory The algebra factory.\n * @param operation The input operation.\n * @param sources The sources to assign.\n */\n public assignExhaustive(\n factory: AlgebraFactory,\n operation: Algebra.Operation,\n sources: IQuerySourceWrapper[],\n ): Algebra.Operation {\n return algebraUtils.mapOperation(operation, {\n [Algebra.Types.PATTERN]: {\n preVisitor: () => ({ continue: false }),\n transform: (patternOp) => {\n if (sources.length === 1) {\n return assignOperationSource(patternOp, sources[0]);\n }\n return factory.createUnion(sources\n .map(source => assignOperationSource(patternOp, source)));\n },\n },\n [Algebra.Types.SERVICE]: {\n preVisitor: () => ({ continue: false }),\n },\n [Algebra.Types.CONSTRUCT]: {\n preVisitor: () => ({ continue: false }),\n transform: constructOp => factory.createConstruct(\n this.assignExhaustive(factory, constructOp.input, sources),\n constructOp.template,\n ),\n },\n [Algebra.Types.LINK]: {\n preVisitor: () => ({ continue: false }),\n transform: (linkOp) => {\n if (sources.length === 1) {\n return assignOperationSource(linkOp, sources[0]);\n }\n return factory.createAlt(sources\n .map(source => assignOperationSource(linkOp, source)));\n },\n },\n [Algebra.Types.NPS]: {\n preVisitor: () => ({ continue: false }),\n transform: (npsOp) => {\n if (sources.length === 1) {\n return assignOperationSource(npsOp, sources[0]);\n }\n return factory.createAlt(sources\n .map(source => assignOperationSource(npsOp, source)));\n },\n },\n [Algebra.Types.DELETE_INSERT]: {\n preVisitor: () => ({ continue: false }),\n transform: delInsOp => factory.createDeleteInsert(\n delInsOp.delete,\n delInsOp.insert,\n delInsOp.where ? this.assignExhaustive(factory, delInsOp.where, sources) : undefined,\n ),\n },\n });\n }\n}\n"]}
package/lib/index.d.ts CHANGED
File without changes
package/lib/index.js CHANGED
File without changes
package/lib/index.js.map CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-optimize-query-operation-assign-sources-exhaustive",
3
- "version": "4.4.1",
3
+ "version": "4.4.2-alpha.49.0",
4
4
  "description": "A assign-sources-exhaustive optimize-query-operation actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -41,13 +41,13 @@
41
41
  "build:components": "componentsjs-generator"
42
42
  },
43
43
  "dependencies": {
44
- "@comunica/bus-optimize-query-operation": "^4.4.0",
45
- "@comunica/bus-rdf-update-quads": "^4.4.1",
46
- "@comunica/context-entries": "^4.4.1",
47
- "@comunica/core": "^4.4.0",
48
- "@comunica/types": "^4.4.0",
49
- "@comunica/utils-query-operation": "^4.4.1",
50
- "sparqlalgebrajs": "^4.3.8"
44
+ "@comunica/bus-optimize-query-operation": "4.4.2-alpha.49.0",
45
+ "@comunica/bus-rdf-update-quads": "4.4.2-alpha.49.0",
46
+ "@comunica/context-entries": "4.4.2-alpha.49.0",
47
+ "@comunica/core": "4.4.2-alpha.49.0",
48
+ "@comunica/types": "4.4.2-alpha.49.0",
49
+ "@comunica/utils-algebra": "4.4.2-alpha.49.0",
50
+ "@comunica/utils-query-operation": "4.4.2-alpha.49.0"
51
51
  },
52
- "gitHead": "c5cc36caf88da31173a0969a7da88cadb7f469ac"
52
+ "gitHead": "ef6f96cfd8faf7c37955bb7e0fe9f6fc6a994bdf"
53
53
  }