@comunica/actor-query-operation-union 4.4.2-alpha.49.0 → 5.0.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.
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/^4.0.0/components/context.jsonld"
25
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^5.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/^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"
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^5.0.0/components/context.jsonld",
4
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^5.0.0/components/context.jsonld",
5
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^5.0.0/components/context.jsonld"
6
6
  ],
7
7
  "@id": "npmd:@comunica/actor-query-operation-union",
8
8
  "components": [
@@ -59,37 +59,37 @@
59
59
  "genericTypeInstances": [
60
60
  {
61
61
  "@type": "ParameterRangeGenericTypeReference",
62
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
62
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
63
63
  },
64
64
  {
65
65
  "@type": "ParameterRangeGenericTypeReference",
66
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
66
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
67
67
  },
68
68
  {
69
69
  "@type": "ParameterRangeGenericTypeReference",
70
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
70
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
71
71
  },
72
72
  {
73
73
  "@type": "ParameterRangeGenericTypeReference",
74
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
74
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
75
75
  }
76
76
  ]
77
77
  },
78
78
  {
79
79
  "@type": "ParameterRangeGenericTypeReference",
80
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
80
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
81
81
  },
82
82
  {
83
83
  "@type": "ParameterRangeGenericTypeReference",
84
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
84
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
85
85
  },
86
86
  {
87
87
  "@type": "ParameterRangeGenericTypeReference",
88
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
88
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
89
89
  },
90
90
  {
91
91
  "@type": "ParameterRangeGenericTypeReference",
92
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
92
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
93
93
  }
94
94
  ]
95
95
  },
@@ -126,19 +126,19 @@
126
126
  "genericTypeInstances": [
127
127
  {
128
128
  "@type": "ParameterRangeGenericTypeReference",
129
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
129
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
130
130
  },
131
131
  {
132
132
  "@type": "ParameterRangeGenericTypeReference",
133
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
133
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
134
134
  },
135
135
  {
136
136
  "@type": "ParameterRangeGenericTypeReference",
137
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
137
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
138
138
  },
139
139
  {
140
140
  "@type": "ParameterRangeGenericTypeReference",
141
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
141
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
142
142
  }
143
143
  ]
144
144
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "@context": [
3
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^4.0.0/components/context.jsonld"
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-operation-union/^5.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/^4.0.0/",
6
+ "caqou": "npmd:@comunica/actor-query-operation-union/^5.0.0/",
7
7
  "ActorQueryOperationUnion": {
8
8
  "@id": "caqou:components/ActorQueryOperationUnion.jsonld#ActorQueryOperationUnion",
9
9
  "@prefix": true,
@@ -11,8 +11,10 @@ const asynciterator_1 = require("asynciterator");
11
11
  * A comunica Union Query Operation Actor.
12
12
  */
13
13
  class ActorQueryOperationUnion extends bus_query_operation_1.ActorQueryOperationTypedMediated {
14
+ mediatorRdfMetadataAccumulate;
14
15
  constructor(args) {
15
16
  super(args, utils_algebra_1.Algebra.Types.UNION);
17
+ this.mediatorRdfMetadataAccumulate = args.mediatorRdfMetadataAccumulate;
16
18
  }
17
19
  /**
18
20
  * Takes the union of the given double array variables.
@@ -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 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 { Algebra } from '@comunica/utils-algebra';\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';\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, Algebra.Types.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"]}
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 { Algebra } from '@comunica/utils-algebra';\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';\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, Algebra.Types.UNION);\n this.mediatorRdfMetadataAccumulate = args.mediatorRdfMetadataAccumulate;\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,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-query-operation-union",
3
- "version": "4.4.2-alpha.49.0",
3
+ "version": "5.0.0",
4
4
  "description": "A union query-operation actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -41,14 +41,14 @@
41
41
  "build:components": "componentsjs-generator"
42
42
  },
43
43
  "dependencies": {
44
- "@comunica/bus-query-operation": "4.4.2-alpha.49.0",
45
- "@comunica/bus-rdf-metadata-accumulate": "4.4.2-alpha.49.0",
46
- "@comunica/core": "4.4.2-alpha.49.0",
47
- "@comunica/types": "4.4.2-alpha.49.0",
48
- "@comunica/utils-algebra": "4.4.2-alpha.49.0",
49
- "@comunica/utils-metadata": "4.4.2-alpha.49.0",
50
- "@comunica/utils-query-operation": "4.4.2-alpha.49.0",
44
+ "@comunica/bus-query-operation": "^5.0.0",
45
+ "@comunica/bus-rdf-metadata-accumulate": "^5.0.0",
46
+ "@comunica/core": "^5.0.0",
47
+ "@comunica/types": "^5.0.0",
48
+ "@comunica/utils-algebra": "^5.0.0",
49
+ "@comunica/utils-metadata": "^5.0.0",
50
+ "@comunica/utils-query-operation": "^5.0.0",
51
51
  "asynciterator": "^3.10.0"
52
52
  },
53
- "gitHead": "ef6f96cfd8faf7c37955bb7e0fe9f6fc6a994bdf"
53
+ "gitHead": "0b1756fdb9bef014133432489627c1bd71779bd0"
54
54
  }