@comunica/actor-rdf-join-optional-hash 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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "@context": [
3
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-optional-hash/^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-rdf-join/^4.0.0/components/context.jsonld"
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-optional-hash/^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-rdf-join/^5.0.0/components/context.jsonld"
6
6
  ],
7
7
  "@id": "npmd:@comunica/actor-rdf-join-optional-hash",
8
8
  "components": [
@@ -49,37 +49,37 @@
49
49
  "genericTypeInstances": [
50
50
  {
51
51
  "@type": "ParameterRangeGenericTypeReference",
52
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
52
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
53
53
  },
54
54
  {
55
55
  "@type": "ParameterRangeGenericTypeReference",
56
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
56
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
57
57
  },
58
58
  {
59
59
  "@type": "ParameterRangeGenericTypeReference",
60
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
60
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
61
61
  },
62
62
  {
63
63
  "@type": "ParameterRangeGenericTypeReference",
64
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
64
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
65
65
  }
66
66
  ]
67
67
  },
68
68
  {
69
69
  "@type": "ParameterRangeGenericTypeReference",
70
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
70
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
71
71
  },
72
72
  {
73
73
  "@type": "ParameterRangeGenericTypeReference",
74
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
74
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
75
75
  },
76
76
  {
77
77
  "@type": "ParameterRangeGenericTypeReference",
78
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
78
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
79
79
  },
80
80
  {
81
81
  "@type": "ParameterRangeGenericTypeReference",
82
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
82
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
83
83
  }
84
84
  ]
85
85
  },
@@ -116,19 +116,19 @@
116
116
  "genericTypeInstances": [
117
117
  {
118
118
  "@type": "ParameterRangeGenericTypeReference",
119
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
119
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
120
120
  },
121
121
  {
122
122
  "@type": "ParameterRangeGenericTypeReference",
123
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
123
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
124
124
  },
125
125
  {
126
126
  "@type": "ParameterRangeGenericTypeReference",
127
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
127
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
128
128
  },
129
129
  {
130
130
  "@type": "ParameterRangeGenericTypeReference",
131
- "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
131
+ "parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
132
132
  }
133
133
  ]
134
134
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "@context": [
3
- "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-optional-hash/^4.0.0/components/context.jsonld"
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-optional-hash/^5.0.0/components/context.jsonld"
4
4
  ],
5
5
  "@id": "npmd:@comunica/actor-rdf-join-optional-hash",
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
- "carjoh": "npmd:@comunica/actor-rdf-join-optional-hash/^4.0.0/",
6
+ "carjoh": "npmd:@comunica/actor-rdf-join-optional-hash/^5.0.0/",
7
7
  "ActorRdfJoinOptionalHash": {
8
8
  "@id": "carjoh:components/ActorRdfJoinOptionalHash.jsonld#ActorRdfJoinOptionalHash",
9
9
  "@prefix": true,
@@ -12,6 +12,7 @@ const rdf_string_1 = require("rdf-string");
12
12
  * A comunica Optional Hash RDF Join Actor.
13
13
  */
14
14
  class ActorRdfJoinOptionalHash extends bus_rdf_join_1.ActorRdfJoin {
15
+ blocking;
15
16
  constructor(args) {
16
17
  super(args, {
17
18
  logicalType: 'optional',
@@ -20,6 +21,7 @@ class ActorRdfJoinOptionalHash extends bus_rdf_join_1.ActorRdfJoin {
20
21
  canHandleUndefs: args.canHandleUndefs,
21
22
  requiresVariableOverlap: true,
22
23
  });
24
+ this.blocking = args.blocking;
23
25
  }
24
26
  static constructIndex(undef, commonVariables) {
25
27
  return undef ?
@@ -50,7 +52,7 @@ class ActorRdfJoinOptionalHash extends bus_rdf_join_1.ActorRdfJoin {
50
52
  });
51
53
  // Start our left-hand iterator and try to join with the index
52
54
  return new asynciterator_1.MultiTransformIterator(output.bindingsStream, {
53
- multiTransform: (bindings) => new asynciterator_1.ArrayIterator((index.get(bindings).flat())
55
+ multiTransform: (bindings) => new asynciterator_1.ArrayIterator(index.get(bindings).flat()
54
56
  .map(indexBindings => bus_rdf_join_1.ActorRdfJoin.joinBindings(bindings, indexBindings))
55
57
  .filter(b => b !== null), { autoStart: false }),
56
58
  optional: true,
@@ -1 +1 @@
1
- {"version":3,"file":"ActorRdfJoinOptionalHash.js","sourceRoot":"","sources":["ActorRdfJoinOptionalHash.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n IActorRdfJoinOutputInner,\n IActorRdfJoinTestSideData,\n} from '@comunica/bus-rdf-join';\nimport type { TestResult } from '@comunica/core';\nimport { passTestWithSideData } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { BindingsStream, MetadataVariable } from '@comunica/types';\nimport { bindingsToCompactString } from '@comunica/utils-bindings-factory';\nimport type { IBindingsIndex } from '@comunica/utils-bindings-index';\nimport { BindingsIndexDef, BindingsIndexUndef } from '@comunica/utils-bindings-index';\nimport { ClosableTransformIterator } from '@comunica/utils-iterator';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator, ArrayIterator, MultiTransformIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\n\n/**\n * A comunica Optional Hash RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalHash extends ActorRdfJoin {\n private readonly blocking: boolean;\n\n public constructor(args: IActorRdfJoinOptionalHashArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}-${args.blocking ? 'blocking' : 'nonblocking'}`,\n limitEntries: 2,\n canHandleUndefs: args.canHandleUndefs,\n requiresVariableOverlap: true,\n });\n }\n\n public static constructIndex<V>(undef: boolean, commonVariables: MetadataVariable[]): IBindingsIndex<V> {\n return undef ?\n new BindingsIndexUndef(\n commonVariables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n true,\n ) :\n new BindingsIndexDef(commonVariables, bindingsToCompactString);\n }\n\n public async getOutput(action: IActionRdfJoin): Promise<IActorRdfJoinOutputInner> {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables = ActorRdfJoin.overlappingVariables(metadatas);\n\n let bindingsStream: BindingsStream;\n if (this.blocking) {\n // -- Blocking optional ---\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator first in a blocking manner.\n const index: IBindingsIndex<RDF.Bindings[]> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings, true) ?? index.put(bindings, []);\n iterator.push(bindings);\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator<RDF.Bindings> => new ArrayIterator<RDF.Bindings>(\n <RDF.Bindings[]>(index.get(bindings).flat())\n .map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings))\n .filter(b => b !== null),\n { autoStart: false },\n ),\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n // -- Non-blocking optional ---\n // This can be slightly slower than the blocking one above, due to the streaming overhead.\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator.\n // They are indexed with iterator values, so our main stream can already get started.\n const index: IBindingsIndex<BufferedIterator<RDF.Bindings>> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n let indexActive = true;\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings, true) ??\n index.put(bindings, new BufferedIterator<RDF.Bindings>({ autoStart: false }));\n (<any> iterator)._push(bindings);\n });\n buffer.bindingsStream.on('end', () => {\n for (const iterator of index.values()) {\n iterator.close();\n }\n indexActive = false;\n });\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator<RDF.Bindings> => {\n // Find iterators from the index\n let iterators: AsyncIterator<RDF.Bindings>[] = index.get(bindings);\n\n // If no index entry was found, set an empty iterator.\n // If we index has been closed already, don't modify the index, but just use an empty dummy iterator.\n if (iterators.length === 0) {\n if (indexActive) {\n iterators = [ index.put(bindings, new BufferedIterator<RDF.Bindings>({ autoStart: false })) ];\n } else {\n iterators = [];\n }\n }\n\n // Merge all iterators in a single one,\n // and clone each one to make sure we can still use them in the future.\n const iterator = new UnionIterator<RDF.Bindings>(iterators.map(it => it.clone()), { autoStart: false });\n return iterator.map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings));\n },\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n }\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n metadatas,\n action.context,\n {},\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n sideData: IActorRdfJoinTestSideData,\n ): Promise<TestResult<IMediatorTypeJoinCoefficients, IActorRdfJoinTestSideData>> {\n const { metadatas } = sideData;\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n let iterations = metadatas[0].cardinality.value + metadatas[1].cardinality.value;\n if (!this.canHandleUndefs) {\n // Our non-undef implementation is slightly more performant.\n iterations *= 0.8;\n }\n if (this.blocking) {\n // Our blocking implementation is slightly more performant.\n iterations *= 0.9;\n }\n return passTestWithSideData({\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: this.blocking ? metadatas[0].cardinality.value : 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n }, sideData);\n }\n}\n\nexport interface IActorRdfJoinOptionalHashArgs extends IActorRdfJoinArgs {\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n /**\n * If the join will block when collecting the optional stream.\n * If true, performance will be better.\n */\n blocking: boolean;\n}\n"]}
1
+ {"version":3,"file":"ActorRdfJoinOptionalHash.js","sourceRoot":"","sources":["ActorRdfJoinOptionalHash.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n IActorRdfJoinOutputInner,\n IActorRdfJoinTestSideData,\n} from '@comunica/bus-rdf-join';\nimport type { TestResult } from '@comunica/core';\nimport { passTestWithSideData } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { BindingsStream, MetadataVariable } from '@comunica/types';\nimport { bindingsToCompactString } from '@comunica/utils-bindings-factory';\nimport type { IBindingsIndex } from '@comunica/utils-bindings-index';\nimport { BindingsIndexDef, BindingsIndexUndef } from '@comunica/utils-bindings-index';\nimport { ClosableTransformIterator } from '@comunica/utils-iterator';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator, ArrayIterator, MultiTransformIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\n\n/**\n * A comunica Optional Hash RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalHash extends ActorRdfJoin {\n private readonly blocking: boolean;\n\n public constructor(args: IActorRdfJoinOptionalHashArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}-${args.blocking ? 'blocking' : 'nonblocking'}`,\n limitEntries: 2,\n canHandleUndefs: args.canHandleUndefs,\n requiresVariableOverlap: true,\n });\n this.blocking = args.blocking;\n }\n\n public static constructIndex<V>(undef: boolean, commonVariables: MetadataVariable[]): IBindingsIndex<V> {\n return undef ?\n new BindingsIndexUndef(\n commonVariables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n true,\n ) :\n new BindingsIndexDef(commonVariables, bindingsToCompactString);\n }\n\n public async getOutput(action: IActionRdfJoin): Promise<IActorRdfJoinOutputInner> {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables = ActorRdfJoin.overlappingVariables(metadatas);\n\n let bindingsStream: BindingsStream;\n if (this.blocking) {\n // -- Blocking optional ---\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator first in a blocking manner.\n const index: IBindingsIndex<RDF.Bindings[]> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings, true) ?? index.put(bindings, []);\n iterator.push(bindings);\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator<RDF.Bindings> => new ArrayIterator<RDF.Bindings>(\n index.get(bindings).flat()\n .map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings))\n .filter(b => b !== null),\n { autoStart: false },\n ),\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n // -- Non-blocking optional ---\n // This can be slightly slower than the blocking one above, due to the streaming overhead.\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator.\n // They are indexed with iterator values, so our main stream can already get started.\n const index: IBindingsIndex<BufferedIterator<RDF.Bindings>> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n let indexActive = true;\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings, true) ??\n index.put(bindings, new BufferedIterator<RDF.Bindings>({ autoStart: false }));\n (<any> iterator)._push(bindings);\n });\n buffer.bindingsStream.on('end', () => {\n for (const iterator of index.values()) {\n iterator.close();\n }\n indexActive = false;\n });\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator<RDF.Bindings> => {\n // Find iterators from the index\n let iterators: AsyncIterator<RDF.Bindings>[] = index.get(bindings);\n\n // If no index entry was found, set an empty iterator.\n // If we index has been closed already, don't modify the index, but just use an empty dummy iterator.\n if (iterators.length === 0) {\n if (indexActive) {\n iterators = [ index.put(bindings, new BufferedIterator<RDF.Bindings>({ autoStart: false })) ];\n } else {\n iterators = [];\n }\n }\n\n // Merge all iterators in a single one,\n // and clone each one to make sure we can still use them in the future.\n const iterator = new UnionIterator<RDF.Bindings>(iterators.map(it => it.clone()), { autoStart: false });\n return iterator.map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings));\n },\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n }\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n metadatas,\n action.context,\n {},\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n sideData: IActorRdfJoinTestSideData,\n ): Promise<TestResult<IMediatorTypeJoinCoefficients, IActorRdfJoinTestSideData>> {\n const { metadatas } = sideData;\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n let iterations = metadatas[0].cardinality.value + metadatas[1].cardinality.value;\n if (!this.canHandleUndefs) {\n // Our non-undef implementation is slightly more performant.\n iterations *= 0.8;\n }\n if (this.blocking) {\n // Our blocking implementation is slightly more performant.\n iterations *= 0.9;\n }\n return passTestWithSideData({\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: this.blocking ? metadatas[0].cardinality.value : 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n }, sideData);\n }\n}\n\nexport interface IActorRdfJoinOptionalHashArgs extends IActorRdfJoinArgs {\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n /**\n * If the join will block when collecting the optional stream.\n * If true, performance will be better.\n */\n blocking: boolean;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-rdf-join-optional-hash",
3
- "version": "4.4.2-alpha.49.0",
3
+ "version": "5.0.0",
4
4
  "description": "A optional-hash rdf-join actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -41,15 +41,15 @@
41
41
  "build:components": "componentsjs-generator"
42
42
  },
43
43
  "dependencies": {
44
- "@comunica/bus-rdf-join": "4.4.2-alpha.49.0",
45
- "@comunica/core": "4.4.2-alpha.49.0",
46
- "@comunica/mediatortype-join-coefficients": "4.4.2-alpha.49.0",
47
- "@comunica/types": "4.4.2-alpha.49.0",
48
- "@comunica/utils-bindings-factory": "4.4.2-alpha.49.0",
49
- "@comunica/utils-bindings-index": "4.4.2-alpha.49.0",
50
- "@comunica/utils-iterator": "4.4.2-alpha.49.0",
44
+ "@comunica/bus-rdf-join": "^5.0.0",
45
+ "@comunica/core": "^5.0.0",
46
+ "@comunica/mediatortype-join-coefficients": "^5.0.0",
47
+ "@comunica/types": "^5.0.0",
48
+ "@comunica/utils-bindings-factory": "^5.0.0",
49
+ "@comunica/utils-bindings-index": "^5.0.0",
50
+ "@comunica/utils-iterator": "^5.0.0",
51
51
  "asynciterator": "^3.10.0",
52
52
  "rdf-string": "^2.0.1"
53
53
  },
54
- "gitHead": "ef6f96cfd8faf7c37955bb7e0fe9f6fc6a994bdf"
54
+ "gitHead": "0b1756fdb9bef014133432489627c1bd71779bd0"
55
55
  }