@comunica/actor-rdf-join-inner-hash 4.5.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 +1 -1
- package/components/ActorRdfJoinHash.jsonld +15 -15
- package/components/components.jsonld +1 -1
- package/components/context.jsonld +1 -1
- package/lib/ActorRdfJoinHash.d.ts +0 -0
- package/lib/ActorRdfJoinHash.js +3 -1
- package/lib/ActorRdfJoinHash.js.map +1 -1
- package/lib/index.d.ts +0 -0
- package/lib/index.js +0 -0
- package/lib/index.js.map +0 -0
- package/package.json +11 -11
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ After installing, this package can be added to your engine's configuration as fo
|
|
|
23
23
|
{
|
|
24
24
|
"@context": [
|
|
25
25
|
...
|
|
26
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-inner-hash/^
|
|
26
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-inner-hash/^5.0.0/components/context.jsonld"
|
|
27
27
|
],
|
|
28
28
|
"actors": [
|
|
29
29
|
...
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@context": [
|
|
3
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-inner-hash/^
|
|
4
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^
|
|
5
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-inner-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-inner-hash",
|
|
8
8
|
"components": [
|
|
@@ -55,37 +55,37 @@
|
|
|
55
55
|
"genericTypeInstances": [
|
|
56
56
|
{
|
|
57
57
|
"@type": "ParameterRangeGenericTypeReference",
|
|
58
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
58
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"@type": "ParameterRangeGenericTypeReference",
|
|
62
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
62
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"@type": "ParameterRangeGenericTypeReference",
|
|
66
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
66
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
"@type": "ParameterRangeGenericTypeReference",
|
|
70
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
70
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
|
|
71
71
|
}
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
"@type": "ParameterRangeGenericTypeReference",
|
|
76
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
76
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"@type": "ParameterRangeGenericTypeReference",
|
|
80
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
80
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
"@type": "ParameterRangeGenericTypeReference",
|
|
84
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
84
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
"@type": "ParameterRangeGenericTypeReference",
|
|
88
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
88
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
|
|
89
89
|
}
|
|
90
90
|
]
|
|
91
91
|
},
|
|
@@ -122,19 +122,19 @@
|
|
|
122
122
|
"genericTypeInstances": [
|
|
123
123
|
{
|
|
124
124
|
"@type": "ParameterRangeGenericTypeReference",
|
|
125
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
125
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
"@type": "ParameterRangeGenericTypeReference",
|
|
129
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
129
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
"@type": "ParameterRangeGenericTypeReference",
|
|
133
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
133
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
"@type": "ParameterRangeGenericTypeReference",
|
|
137
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
137
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^5.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
|
|
138
138
|
}
|
|
139
139
|
]
|
|
140
140
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@context": [
|
|
3
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-inner-hash/^
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-join-inner-hash/^5.0.0/components/context.jsonld"
|
|
4
4
|
],
|
|
5
5
|
"@id": "npmd:@comunica/actor-rdf-join-inner-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
|
-
"carjih": "npmd:@comunica/actor-rdf-join-inner-hash/^
|
|
6
|
+
"carjih": "npmd:@comunica/actor-rdf-join-inner-hash/^5.0.0/",
|
|
7
7
|
"ActorRdfJoinHash": {
|
|
8
8
|
"@id": "carjih:components/ActorRdfJoinHash.jsonld#ActorRdfJoinHash",
|
|
9
9
|
"@prefix": true,
|
|
File without changes
|
package/lib/ActorRdfJoinHash.js
CHANGED
|
@@ -12,6 +12,7 @@ const rdf_string_1 = require("rdf-string");
|
|
|
12
12
|
* A comunica Hash RDF Join Actor.
|
|
13
13
|
*/
|
|
14
14
|
class ActorRdfJoinHash extends bus_rdf_join_1.ActorRdfJoin {
|
|
15
|
+
mediatorHashBindings;
|
|
15
16
|
constructor(args) {
|
|
16
17
|
super(args, {
|
|
17
18
|
logicalType: 'inner',
|
|
@@ -20,6 +21,7 @@ class ActorRdfJoinHash extends bus_rdf_join_1.ActorRdfJoin {
|
|
|
20
21
|
requiresVariableOverlap: true,
|
|
21
22
|
canHandleUndefs: args.canHandleUndefs,
|
|
22
23
|
});
|
|
24
|
+
this.mediatorHashBindings = args.mediatorHashBindings;
|
|
23
25
|
}
|
|
24
26
|
async getOutput(action, sideData) {
|
|
25
27
|
const metadatas = sideData.metadatas;
|
|
@@ -44,7 +46,7 @@ class ActorRdfJoinHash extends bus_rdf_join_1.ActorRdfJoin {
|
|
|
44
46
|
});
|
|
45
47
|
// Start our left-hand iterator and try to join with the index
|
|
46
48
|
return new asynciterator_1.MultiTransformIterator(output.bindingsStream, {
|
|
47
|
-
multiTransform: (bindings) => new asynciterator_1.ArrayIterator(
|
|
49
|
+
multiTransform: (bindings) => new asynciterator_1.ArrayIterator(index.get(bindings).flat()
|
|
48
50
|
.map(indexBindings => bus_rdf_join_1.ActorRdfJoin.joinBindings(bindings, indexBindings))
|
|
49
51
|
.filter(b => b !== null), { autoStart: false }),
|
|
50
52
|
autoStart: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorRdfJoinHash.js","sourceRoot":"","sources":["ActorRdfJoinHash.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n IActorRdfJoinTestSideData,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } 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 { Bindings, BindingsStream, IJoinEntry } from '@comunica/types';\nimport type { IBindingsIndex } from '@comunica/utils-bindings-index';\nimport { 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 { ArrayIterator, MultiTransformIterator } from 'asynciterator';\nimport { HashJoin } from 'asyncjoin';\nimport { termToString } from 'rdf-string';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinHash extends ActorRdfJoin<IActorRdfJoinHashTestSideData> {\n public readonly mediatorHashBindings: MediatorHashBindings;\n\n public constructor(args: IActorRdfJoinHashArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}`,\n limitEntries: 2,\n requiresVariableOverlap: true,\n canHandleUndefs: args.canHandleUndefs,\n });\n }\n\n public async getOutput(\n action: IActionRdfJoin,\n sideData: IActorRdfJoinHashTestSideData,\n ): Promise<IActorRdfJoinOutputInner> {\n const metadatas = sideData.metadatas;\n let bindingsStream: BindingsStream;\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n if (this.canHandleUndefs) {\n /* Handle undefined values in bindings */\n\n const buffer = sideData.entriesSorted[0].output;\n const output = sideData.entriesSorted[1].output;\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the left-hand iterator first in a blocking manner.\n const index: IBindingsIndex<RDF.Bindings[]> = new BindingsIndexUndef(\n variables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n true,\n );\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings, false) ?? 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 autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n /* Don't handle undefined values in bindings */\n const { hashFunction } = await this.mediatorHashBindings.mediate({ context: action.context });\n const variablesRaw = variables.map(v => v.variable);\n bindingsStream = new HashJoin<Bindings, number, Bindings>(\n sideData.entriesSorted[0].output.bindingsStream,\n sideData.entriesSorted[1].output.bindingsStream,\n entry => hashFunction(entry, variablesRaw),\n <any> ActorRdfJoin.joinBindings,\n );\n }\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(sideData.entriesSorted, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n sideData: IActorRdfJoinTestSideData,\n ): Promise<TestResult<IMediatorTypeJoinCoefficients, IActorRdfJoinHashTestSideData>> {\n // Ensure the left build stream is the smallest\n let entriesSorted = action.entries;\n if (sideData.metadatas[1].cardinality.value < sideData.metadatas[0].cardinality.value) {\n sideData.metadatas = [ sideData.metadatas[1], sideData.metadatas[0] ];\n entriesSorted = [ action.entries[1], action.entries[0] ];\n }\n\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 return passTestWithSideData({\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n }, { ...sideData, entriesSorted });\n }\n}\n\nexport interface IActorRdfJoinHashArgs extends IActorRdfJoinArgs<IActorRdfJoinHashTestSideData> {\n /**\n * The mediator for hashing bindings.\n */\n mediatorHashBindings: MediatorHashBindings;\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n}\n\nexport interface IActorRdfJoinHashTestSideData extends IActorRdfJoinTestSideData {\n entriesSorted: IJoinEntry[];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ActorRdfJoinHash.js","sourceRoot":"","sources":["ActorRdfJoinHash.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n IActorRdfJoinTestSideData,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } 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 { Bindings, BindingsStream, IJoinEntry } from '@comunica/types';\nimport type { IBindingsIndex } from '@comunica/utils-bindings-index';\nimport { 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 { ArrayIterator, MultiTransformIterator } from 'asynciterator';\nimport { HashJoin } from 'asyncjoin';\nimport { termToString } from 'rdf-string';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinHash extends ActorRdfJoin<IActorRdfJoinHashTestSideData> {\n public readonly mediatorHashBindings: MediatorHashBindings;\n\n public constructor(args: IActorRdfJoinHashArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}`,\n limitEntries: 2,\n requiresVariableOverlap: true,\n canHandleUndefs: args.canHandleUndefs,\n });\n this.mediatorHashBindings = args.mediatorHashBindings;\n }\n\n public async getOutput(\n action: IActionRdfJoin,\n sideData: IActorRdfJoinHashTestSideData,\n ): Promise<IActorRdfJoinOutputInner> {\n const metadatas = sideData.metadatas;\n let bindingsStream: BindingsStream;\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n if (this.canHandleUndefs) {\n /* Handle undefined values in bindings */\n\n const buffer = sideData.entriesSorted[0].output;\n const output = sideData.entriesSorted[1].output;\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the left-hand iterator first in a blocking manner.\n const index: IBindingsIndex<RDF.Bindings[]> = new BindingsIndexUndef(\n variables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n true,\n );\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings, false) ?? 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 autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n /* Don't handle undefined values in bindings */\n const { hashFunction } = await this.mediatorHashBindings.mediate({ context: action.context });\n const variablesRaw = variables.map(v => v.variable);\n bindingsStream = new HashJoin<Bindings, number, Bindings>(\n sideData.entriesSorted[0].output.bindingsStream,\n sideData.entriesSorted[1].output.bindingsStream,\n entry => hashFunction(entry, variablesRaw),\n <any> ActorRdfJoin.joinBindings,\n );\n }\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(sideData.entriesSorted, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n sideData: IActorRdfJoinTestSideData,\n ): Promise<TestResult<IMediatorTypeJoinCoefficients, IActorRdfJoinHashTestSideData>> {\n // Ensure the left build stream is the smallest\n let entriesSorted = action.entries;\n if (sideData.metadatas[1].cardinality.value < sideData.metadatas[0].cardinality.value) {\n sideData.metadatas = [ sideData.metadatas[1], sideData.metadatas[0] ];\n entriesSorted = [ action.entries[1], action.entries[0] ];\n }\n\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 return passTestWithSideData({\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n }, { ...sideData, entriesSorted });\n }\n}\n\nexport interface IActorRdfJoinHashArgs extends IActorRdfJoinArgs<IActorRdfJoinHashTestSideData> {\n /**\n * The mediator for hashing bindings.\n */\n mediatorHashBindings: MediatorHashBindings;\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n}\n\nexport interface IActorRdfJoinHashTestSideData extends IActorRdfJoinTestSideData {\n entriesSorted: IJoinEntry[];\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-rdf-join-inner-hash",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "A hash rdf-join actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,16 +41,16 @@
|
|
|
41
41
|
"build:components": "componentsjs-generator"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@comunica/bus-hash-bindings": "^
|
|
45
|
-
"@comunica/bus-rdf-join": "^
|
|
46
|
-
"@comunica/core": "^
|
|
47
|
-
"@comunica/mediatortype-join-coefficients": "^
|
|
48
|
-
"@comunica/types": "^
|
|
49
|
-
"@comunica/utils-bindings-index": "^
|
|
50
|
-
"@comunica/utils-iterator": "^
|
|
51
|
-
"asynciterator": "^3.
|
|
44
|
+
"@comunica/bus-hash-bindings": "^5.0.0",
|
|
45
|
+
"@comunica/bus-rdf-join": "^5.0.0",
|
|
46
|
+
"@comunica/core": "^5.0.0",
|
|
47
|
+
"@comunica/mediatortype-join-coefficients": "^5.0.0",
|
|
48
|
+
"@comunica/types": "^5.0.0",
|
|
49
|
+
"@comunica/utils-bindings-index": "^5.0.0",
|
|
50
|
+
"@comunica/utils-iterator": "^5.0.0",
|
|
51
|
+
"asynciterator": "^3.10.0",
|
|
52
52
|
"asyncjoin": "^1.2.4",
|
|
53
|
-
"rdf-string": "^
|
|
53
|
+
"rdf-string": "^2.0.1"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "0b1756fdb9bef014133432489627c1bd71779bd0"
|
|
56
56
|
}
|