@comunica/actor-query-operation-union 3.3.0 → 4.0.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.
package/README.md CHANGED
@@ -22,7 +22,7 @@ After installing, this package can be added to your engine's configuration as fo
22
22
  {
23
23
  "@context": [
24
24
  ...
25
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^3.0.0/components/context.jsonld"
25
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^4.0.0/components/context.jsonld"
26
26
  ],
27
27
  "actors": [
28
28
  ...
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "@context": [
3
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^3.0.0/components/context.jsonld",
4
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^3.0.0/components/context.jsonld",
5
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/context.jsonld"
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^4.0.0/components/context.jsonld",
4
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^4.0.0/components/context.jsonld",
5
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^4.0.0/components/context.jsonld"
6
6
  ],
7
7
  "@id": "npmd:@comunica/actor-query-operation-union",
8
8
  "components": [
@@ -49,29 +49,37 @@
49
49
  "genericTypeInstances": [
50
50
  {
51
51
  "@type": "ParameterRangeGenericTypeReference",
52
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
52
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
53
53
  },
54
54
  {
55
55
  "@type": "ParameterRangeGenericTypeReference",
56
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
56
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
57
57
  },
58
58
  {
59
59
  "@type": "ParameterRangeGenericTypeReference",
60
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
60
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
61
+ },
62
+ {
63
+ "@type": "ParameterRangeGenericTypeReference",
64
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
61
65
  }
62
66
  ]
63
67
  },
64
68
  {
65
69
  "@type": "ParameterRangeGenericTypeReference",
66
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
70
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
71
+ },
72
+ {
73
+ "@type": "ParameterRangeGenericTypeReference",
74
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
67
75
  },
68
76
  {
69
77
  "@type": "ParameterRangeGenericTypeReference",
70
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
78
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
71
79
  },
72
80
  {
73
81
  "@type": "ParameterRangeGenericTypeReference",
74
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
82
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
75
83
  }
76
84
  ]
77
85
  },
@@ -81,6 +89,20 @@
81
89
  },
82
90
  "comment": "The bus this actor subscribes to."
83
91
  },
92
+ {
93
+ "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_busFailMessage",
94
+ "range": {
95
+ "@type": "ParameterRangeUnion",
96
+ "parameterRangeElements": [
97
+ "xsd:string",
98
+ {
99
+ "@type": "ParameterRangeUndefined"
100
+ }
101
+ ]
102
+ },
103
+ "default": "Query operation processing failed: none of the configured actors were able to handle the operation type ${action.operation.type}",
104
+ "comment": "The message that will be configured in the bus for reporting failures. This message may be a template string that contains references to the executed `action`. For example, the following templated string is allowed: \"RDF dereferencing failed: no actors could handle ${action.handle.mediaType}\""
105
+ },
84
106
  {
85
107
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_beforeActors",
86
108
  "range": {
@@ -94,15 +116,19 @@
94
116
  "genericTypeInstances": [
95
117
  {
96
118
  "@type": "ParameterRangeGenericTypeReference",
97
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
119
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
98
120
  },
99
121
  {
100
122
  "@type": "ParameterRangeGenericTypeReference",
101
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
123
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
102
124
  },
103
125
  {
104
126
  "@type": "ParameterRangeGenericTypeReference",
105
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^3.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
127
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
128
+ },
129
+ {
130
+ "@type": "ParameterRangeGenericTypeReference",
131
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
106
132
  }
107
133
  ]
108
134
  }
@@ -170,6 +196,12 @@
170
196
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_bus"
171
197
  }
172
198
  },
199
+ {
200
+ "keyRaw": "busFailMessage",
201
+ "value": {
202
+ "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_busFailMessage"
203
+ }
204
+ },
173
205
  {
174
206
  "keyRaw": "beforeActors",
175
207
  "value": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "@context": [
3
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^3.0.0/components/context.jsonld"
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^4.0.0/components/context.jsonld"
4
4
  ],
5
5
  "@id": "npmd:@comunica/actor-query-operation-union",
6
6
  "@type": "Module",
@@ -3,7 +3,7 @@
3
3
  "https://linkedsoftwaredependencies.org/bundles/npm/componentsjs/^6.0.0/components/context.jsonld",
4
4
  {
5
5
  "npmd": "https://linkedsoftwaredependencies.org/bundles/npm/",
6
- "caqou": "npmd:@comunica/actor-query-operation-union/^3.0.0/",
6
+ "caqou": "npmd:@comunica/actor-query-operation-union/^4.0.0/",
7
7
  "ActorQueryOperationUnion": {
8
8
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion",
9
9
  "@prefix": true,
@@ -20,6 +20,9 @@
20
20
  "args_bus": {
21
21
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_bus"
22
22
  },
23
+ "args_busFailMessage": {
24
+ "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_busFailMessage"
25
+ },
23
26
  "args_beforeActors": {
24
27
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_beforeActors",
25
28
  "@container": "@list"
@@ -36,6 +39,9 @@
36
39
  "bus": {
37
40
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_bus"
38
41
  },
42
+ "busFailMessage": {
43
+ "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_busFailMessage"
44
+ },
39
45
  "beforeActors": {
40
46
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion_args_beforeActors",
41
47
  "@container": "@list"
@@ -1,9 +1,8 @@
1
1
  import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';
2
2
  import { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';
3
3
  import type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';
4
- import type { IActorTest } from '@comunica/core';
5
- import type { IActionContext, IQueryOperationResult, MetadataBindings, MetadataQuads } from '@comunica/types';
6
- import type * as RDF from '@rdfjs/types';
4
+ import type { IActorTest, TestResult } from '@comunica/core';
5
+ import type { IActionContext, IQueryOperationResult, MetadataBindings, MetadataQuads, MetadataVariable } from '@comunica/types';
7
6
  import type { Algebra } from 'sparqlalgebrajs';
8
7
  /**
9
8
  * A comunica Union Query Operation Actor.
@@ -17,7 +16,7 @@ export declare class ActorQueryOperationUnion extends ActorQueryOperationTypedMe
17
16
  * @param {string[][]} variables Double array of variables to take the union of.
18
17
  * @return {string[]} The union of the given variables.
19
18
  */
20
- static unionVariables(variables: RDF.Variable[][]): RDF.Variable[];
19
+ static unionVariables(variables: MetadataVariable[][]): MetadataVariable[];
21
20
  /**
22
21
  * Takes the union of the given metadata array.
23
22
  * It will ensure that the cardinality metadata value is properly calculated.
@@ -28,7 +27,7 @@ export declare class ActorQueryOperationUnion extends ActorQueryOperationTypedMe
28
27
  * @return {{[p: string]: any}} Union of the metadata.
29
28
  */
30
29
  static unionMetadata<Bindings extends boolean, M extends (Bindings extends true ? MetadataBindings : MetadataQuads)>(metadatas: M[], bindings: Bindings, context: IActionContext, mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate): Promise<M>;
31
- testOperation(_operation: Algebra.Union, _context: IActionContext): Promise<IActorTest>;
30
+ testOperation(_operation: Algebra.Union, _context: IActionContext): Promise<TestResult<IActorTest>>;
32
31
  runOperation(operation: Algebra.Union, context: IActionContext): Promise<IQueryOperationResult>;
33
32
  }
34
33
  export interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActorQueryOperationUnion = void 0;
4
4
  const bus_query_operation_1 = require("@comunica/bus-query-operation");
5
- const metadata_1 = require("@comunica/metadata");
5
+ const core_1 = require("@comunica/core");
6
+ const utils_metadata_1 = require("@comunica/utils-metadata");
7
+ const utils_query_operation_1 = require("@comunica/utils-query-operation");
6
8
  const asynciterator_1 = require("asynciterator");
7
- const rdf_terms_1 = require("rdf-terms");
8
9
  /**
9
10
  * A comunica Union Query Operation Actor.
10
11
  */
@@ -19,7 +20,25 @@ class ActorQueryOperationUnion extends bus_query_operation_1.ActorQueryOperation
19
20
  * @return {string[]} The union of the given variables.
20
21
  */
21
22
  static unionVariables(variables) {
22
- return (0, rdf_terms_1.uniqTerms)(variables.flat());
23
+ const variablesIndexed = {};
24
+ for (const variablesA of variables) {
25
+ for (const variable of variablesA) {
26
+ if (!variablesIndexed[variable.variable.value]) {
27
+ variablesIndexed[variable.variable.value] = {
28
+ variable: variable.variable,
29
+ canBeUndef: variable.canBeUndef,
30
+ occurrences: 0,
31
+ };
32
+ }
33
+ const entry = variablesIndexed[variable.variable.value];
34
+ entry.canBeUndef = entry.canBeUndef || variable.canBeUndef;
35
+ entry.occurrences++;
36
+ }
37
+ }
38
+ return Object.values(variablesIndexed)
39
+ .map(entry => entry.occurrences === variables.length ?
40
+ { variable: entry.variable, canBeUndef: entry.canBeUndef } :
41
+ { variable: entry.variable, canBeUndef: true });
23
42
  }
24
43
  /**
25
44
  * Takes the union of the given metadata array.
@@ -47,7 +66,7 @@ class ActorQueryOperationUnion extends bus_query_operation_1.ActorQueryOperation
47
66
  };
48
67
  }
49
68
  // Create new metadata state
50
- accumulatedMetadata.state = new metadata_1.MetadataValidationState();
69
+ accumulatedMetadata.state = new utils_metadata_1.MetadataValidationState();
51
70
  // Propagate metadata invalidations
52
71
  const invalidateListener = () => accumulatedMetadata.state.invalidate();
53
72
  for (const metadata of metadatas) {
@@ -55,13 +74,13 @@ class ActorQueryOperationUnion extends bus_query_operation_1.ActorQueryOperation
55
74
  }
56
75
  // Union variables
57
76
  if (bindings) {
58
- accumulatedMetadata.variables = ActorQueryOperationUnion
59
- .unionVariables(metadatas.map(metadata => metadata.variables));
77
+ const variables = metadatas.map(metadata => metadata.variables);
78
+ accumulatedMetadata.variables = ActorQueryOperationUnion.unionVariables(variables);
60
79
  }
61
80
  return accumulatedMetadata;
62
81
  }
63
82
  async testOperation(_operation, _context) {
64
- return true;
83
+ return (0, core_1.passTestVoid)();
65
84
  }
66
85
  async runOperation(operation, context) {
67
86
  // Determine the type over which we are taking a union
@@ -78,7 +97,7 @@ class ActorQueryOperationUnion extends bus_query_operation_1.ActorQueryOperation
78
97
  }
79
98
  // Handle bindings
80
99
  if (outputType === 'bindings' || operation.input.length === 0) {
81
- const outputs = outputsRaw.map(bus_query_operation_1.ActorQueryOperation.getSafeBindings);
100
+ const outputs = outputsRaw.map(utils_query_operation_1.getSafeBindings);
82
101
  const bindingsStream = new asynciterator_1.UnionIterator(outputs.map((output) => output.bindingsStream), { autoStart: false });
83
102
  const metadata = () => Promise.all(outputs.map(output => output.metadata()))
84
103
  .then(subMeta => ActorQueryOperationUnion
@@ -87,7 +106,7 @@ class ActorQueryOperationUnion extends bus_query_operation_1.ActorQueryOperation
87
106
  }
88
107
  // Handle quads
89
108
  if (outputType === 'quads') {
90
- const outputs = outputsRaw.map(bus_query_operation_1.ActorQueryOperation.getSafeQuads);
109
+ const outputs = outputsRaw.map(utils_query_operation_1.getSafeQuads);
91
110
  const quadStream = new asynciterator_1.UnionIterator(outputs.map((output) => output.quadStream), { autoStart: false });
92
111
  const metadata = () => Promise.all(outputs.map(output => output.metadata()))
93
112
  .then(subMeta => ActorQueryOperationUnion
@@ -1 +1 @@
1
- {"version":3,"file":"ActorQueryOperationUnion.js","sourceRoot":"","sources":["ActorQueryOperationUnion.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataBindings,\n MetadataQuads,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { UnionIterator } from 'asynciterator';\nimport { uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Union Query Operation Actor.\n */\nexport class ActorQueryOperationUnion extends ActorQueryOperationTypedMediated<Algebra.Union> {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationUnionArgs) {\n super(args, 'union');\n }\n\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n public static unionVariables(variables: RDF.Variable[][]): RDF.Variable[] {\n return uniqTerms(variables.flat());\n }\n\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @param context The action context\n * @param mediatorRdfMetadataAccumulate Mediator for metadata accumulation\n * @return {{[p: string]: any}} Union of the metadata.\n */\n public static async unionMetadata<\n Bindings extends boolean,\n M extends (Bindings extends true ? MetadataBindings : MetadataQuads),\n >(\n metadatas: M[],\n bindings: Bindings,\n context: IActionContext,\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate,\n // eslint-disable-next-line function-paren-newline\n ): Promise<M> {\n let accumulatedMetadata: M = <M> (await mediatorRdfMetadataAccumulate\n .mediate({ mode: 'initialize', context })).metadata;\n\n // Accumulate cardinality\n for (const appendingMetadata of metadatas) {\n accumulatedMetadata = <any> {\n ...appendingMetadata,\n ...(await mediatorRdfMetadataAccumulate\n .mediate({\n mode: 'append',\n accumulatedMetadata: <any> accumulatedMetadata,\n appendingMetadata: <any> appendingMetadata,\n context,\n })).metadata,\n };\n }\n\n // Create new metadata state\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Propagate metadata invalidations\n const invalidateListener = (): void => accumulatedMetadata.state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n\n // Union variables\n if (bindings) {\n accumulatedMetadata.variables = ActorQueryOperationUnion\n .unionVariables(metadatas.map(metadata => metadata.variables));\n }\n\n return accumulatedMetadata;\n }\n\n public async testOperation(_operation: Algebra.Union, _context: IActionContext): Promise<IActorTest> {\n return true;\n }\n\n public async runOperation(operation: Algebra.Union, context: IActionContext):\n Promise<IQueryOperationResult> {\n // Determine the type over which we are taking a union\n const outputsRaw = await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context })));\n let outputType: string | undefined;\n for (const output of outputsRaw) {\n if (outputType === undefined) {\n outputType = output.type;\n } else if (outputType !== output.type) {\n throw new Error(`Unable to union ${outputType} and ${output.type}`);\n }\n }\n\n // Handle bindings\n if (outputType === 'bindings' || operation.input.length === 0) {\n const outputs: IQueryOperationResultBindings[] = outputsRaw.map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream: BindingsStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultBindings) => output.bindingsStream,\n ), { autoStart: false });\n\n const metadata: () => Promise<MetadataBindings> = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'bindings', bindingsStream, metadata };\n }\n\n // Handle quads\n if (outputType === 'quads') {\n const outputs: IQueryOperationResultQuads[] = outputsRaw.map(ActorQueryOperation.getSafeQuads);\n\n const quadStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultQuads) => output.quadStream,\n ), { autoStart: false });\n\n const metadata: () => Promise<MetadataQuads> = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, false, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'quads', quadStream, metadata };\n }\n\n // Throw otherwise\n throw new Error(`Unable to union ${outputType}`);\n }\n}\n\nexport interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n"]}
1
+ {"version":3,"file":"ActorQueryOperationUnion.js","sourceRoot":"","sources":["ActorQueryOperationUnion.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type {\n BindingsStream,\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataBindings,\n MetadataQuads,\n IQueryOperationResultQuads,\n MetadataVariable,\n} from '@comunica/types';\nimport { MetadataValidationState } from '@comunica/utils-metadata';\nimport { getSafeBindings, getSafeQuads } from '@comunica/utils-query-operation';\nimport type * as RDF from '@rdfjs/types';\nimport { UnionIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Union Query Operation Actor.\n */\nexport class ActorQueryOperationUnion extends ActorQueryOperationTypedMediated<Algebra.Union> {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationUnionArgs) {\n super(args, 'union');\n }\n\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n public static unionVariables(variables: MetadataVariable[][]): MetadataVariable[] {\n const variablesIndexed: Record<string, { variable: RDF.Variable; canBeUndef: boolean; occurrences: number }> = {};\n for (const variablesA of variables) {\n for (const variable of variablesA) {\n if (!variablesIndexed[variable.variable.value]) {\n variablesIndexed[variable.variable.value] = {\n variable: variable.variable,\n canBeUndef: variable.canBeUndef,\n occurrences: 0,\n };\n }\n const entry = variablesIndexed[variable.variable.value];\n entry.canBeUndef = entry.canBeUndef || variable.canBeUndef;\n entry.occurrences++;\n }\n }\n return Object.values(variablesIndexed)\n .map(entry => entry.occurrences === variables.length ?\n { variable: entry.variable, canBeUndef: entry.canBeUndef } :\n { variable: entry.variable, canBeUndef: true });\n }\n\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @param context The action context\n * @param mediatorRdfMetadataAccumulate Mediator for metadata accumulation\n * @return {{[p: string]: any}} Union of the metadata.\n */\n public static async unionMetadata<\n Bindings extends boolean,\n M extends (Bindings extends true ? MetadataBindings : MetadataQuads),\n >(\n metadatas: M[],\n bindings: Bindings,\n context: IActionContext,\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate,\n // eslint-disable-next-line function-paren-newline\n ): Promise<M> {\n let accumulatedMetadata: M = <M> (await mediatorRdfMetadataAccumulate\n .mediate({ mode: 'initialize', context })).metadata;\n\n // Accumulate cardinality\n for (const appendingMetadata of metadatas) {\n accumulatedMetadata = <any> {\n ...appendingMetadata,\n ...(await mediatorRdfMetadataAccumulate\n .mediate({\n mode: 'append',\n accumulatedMetadata: <any> accumulatedMetadata,\n appendingMetadata: <any> appendingMetadata,\n context,\n })).metadata,\n };\n }\n\n // Create new metadata state\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Propagate metadata invalidations\n const invalidateListener = (): void => accumulatedMetadata.state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n\n // Union variables\n if (bindings) {\n const variables: MetadataVariable[][] = metadatas.map(metadata => metadata.variables);\n accumulatedMetadata.variables = ActorQueryOperationUnion.unionVariables(variables);\n }\n\n return accumulatedMetadata;\n }\n\n public async testOperation(_operation: Algebra.Union, _context: IActionContext): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n public async runOperation(operation: Algebra.Union, context: IActionContext):\n Promise<IQueryOperationResult> {\n // Determine the type over which we are taking a union\n const outputsRaw = await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context })));\n let outputType: string | undefined;\n for (const output of outputsRaw) {\n if (outputType === undefined) {\n outputType = output.type;\n } else if (outputType !== output.type) {\n throw new Error(`Unable to union ${outputType} and ${output.type}`);\n }\n }\n\n // Handle bindings\n if (outputType === 'bindings' || operation.input.length === 0) {\n const outputs: IQueryOperationResultBindings[] = outputsRaw.map(getSafeBindings);\n\n const bindingsStream: BindingsStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultBindings) => output.bindingsStream,\n ), { autoStart: false });\n\n const metadata: () => Promise<MetadataBindings> = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'bindings', bindingsStream, metadata };\n }\n\n // Handle quads\n if (outputType === 'quads') {\n const outputs: IQueryOperationResultQuads[] = outputsRaw.map(getSafeQuads);\n\n const quadStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultQuads) => output.quadStream,\n ), { autoStart: false });\n\n const metadata: () => Promise<MetadataQuads> = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, false, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'quads', quadStream, metadata };\n }\n\n // Throw otherwise\n throw new Error(`Unable to union ${outputType}`);\n }\n}\n\nexport interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n"]}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@comunica/actor-query-operation-union",
3
- "version": "3.3.0",
3
+ "version": "4.0.1",
4
4
  "description": "A union query-operation actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
7
+ "funding": {
8
+ "type": "opencollective",
9
+ "url": "https://opencollective.com/comunica-association"
10
+ },
7
11
  "homepage": "https://comunica.dev/",
8
12
  "repository": {
9
13
  "type": "git",
@@ -37,15 +41,14 @@
37
41
  "build:components": "componentsjs-generator"
38
42
  },
39
43
  "dependencies": {
40
- "@comunica/bus-query-operation": "^3.3.0",
41
- "@comunica/bus-rdf-metadata-accumulate": "^3.3.0",
42
- "@comunica/core": "^3.3.0",
43
- "@comunica/metadata": "^3.3.0",
44
- "@comunica/types": "^3.3.0",
45
- "@rdfjs/types": "*",
44
+ "@comunica/bus-query-operation": "^4.0.1",
45
+ "@comunica/bus-rdf-metadata-accumulate": "^4.0.1",
46
+ "@comunica/core": "^4.0.1",
47
+ "@comunica/types": "^4.0.1",
48
+ "@comunica/utils-metadata": "^4.0.1",
49
+ "@comunica/utils-query-operation": "^4.0.1",
46
50
  "asynciterator": "^3.9.0",
47
- "rdf-terms": "^1.11.0",
48
- "sparqlalgebrajs": "^4.3.7"
51
+ "sparqlalgebrajs": "^4.3.8"
49
52
  },
50
- "gitHead": "02bde397d206f1f5a523643a6a604c89e792e2f9"
53
+ "gitHead": "67831ba79e45ea1ced41fe3f83c5d6e8802dbeaa"
51
54
  }