@comunica/actor-query-operation-from-quad 4.4.1 → 4.4.2-alpha.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ActorQueryOperationFromQuad.jsonld +11 -1
- package/components/components.jsonld +0 -0
- package/components/context.jsonld +0 -0
- package/lib/ActorQueryOperationFromQuad.d.ts +6 -6
- package/lib/ActorQueryOperationFromQuad.js +22 -23
- package/lib/ActorQueryOperationFromQuad.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 +8 -8
|
@@ -15,7 +15,17 @@
|
|
|
15
15
|
"@type": "GenericComponentExtension",
|
|
16
16
|
"component": "cbqo:components/ActorQueryOperationTypedMediated.jsonld#ActorQueryOperationTypedMediated",
|
|
17
17
|
"genericTypeInstances": [
|
|
18
|
-
|
|
18
|
+
{
|
|
19
|
+
"@type": "ParameterRangeIntersection",
|
|
20
|
+
"parameterRangeElements": [
|
|
21
|
+
{
|
|
22
|
+
"@type": "ParameterRangeWildcard"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"@type": "ParameterRangeWildcard"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
19
29
|
]
|
|
20
30
|
}
|
|
21
31
|
],
|
|
File without changes
|
|
File without changes
|
|
@@ -2,8 +2,8 @@ import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-
|
|
|
2
2
|
import { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';
|
|
3
3
|
import type { IActorTest, TestResult } from '@comunica/core';
|
|
4
4
|
import type { IActionContext, IQueryOperationResult } from '@comunica/types';
|
|
5
|
+
import { Algebra, AlgebraFactory } from '@comunica/utils-algebra';
|
|
5
6
|
import type * as RDF from '@rdfjs/types';
|
|
6
|
-
import { Algebra, Factory } from 'sparqlalgebrajs';
|
|
7
7
|
/**
|
|
8
8
|
* A comunica From Query Operation Actor.
|
|
9
9
|
*/
|
|
@@ -26,7 +26,7 @@ export declare class ActorQueryOperationFromQuad extends ActorQueryOperationType
|
|
|
26
26
|
* @param {RDF.Term[]} defaultGraphs Graph terms.
|
|
27
27
|
* @return {Operation} A new operation.
|
|
28
28
|
*/
|
|
29
|
-
static applyOperationDefaultGraph(algebraFactory:
|
|
29
|
+
static applyOperationDefaultGraph(algebraFactory: AlgebraFactory, operation: Algebra.Operation, defaultGraphs: RDF.Term[]): Algebra.Operation;
|
|
30
30
|
/**
|
|
31
31
|
* Recursively transform the given operation to use the given graphs as named graph
|
|
32
32
|
* This will (possibly) create a new operation and not modify the given operation.
|
|
@@ -37,7 +37,7 @@ export declare class ActorQueryOperationFromQuad extends ActorQueryOperationType
|
|
|
37
37
|
* @param {RDF.Term[]} defaultGraphs Default graph terms.
|
|
38
38
|
* @return {Operation} A new operation.
|
|
39
39
|
*/
|
|
40
|
-
static applyOperationNamedGraph(algebraFactory:
|
|
40
|
+
static applyOperationNamedGraph(algebraFactory: AlgebraFactory, operation: Algebra.Operation, namedGraphs: RDF.NamedNode[], defaultGraphs: RDF.Term[]): Algebra.Operation;
|
|
41
41
|
/**
|
|
42
42
|
* Transform the given array of operations into a join operation.
|
|
43
43
|
* @package
|
|
@@ -45,7 +45,7 @@ export declare class ActorQueryOperationFromQuad extends ActorQueryOperationType
|
|
|
45
45
|
* @param {Operation[]} operations An array of operations, must contain at least one operation.
|
|
46
46
|
* @return {Join} A join operation.
|
|
47
47
|
*/
|
|
48
|
-
static joinOperations(algebraFactory:
|
|
48
|
+
static joinOperations(algebraFactory: AlgebraFactory, operations: Algebra.Operation[]): Algebra.Operation;
|
|
49
49
|
/**
|
|
50
50
|
* Transform the given array of operations into a union operation.
|
|
51
51
|
* @package
|
|
@@ -53,7 +53,7 @@ export declare class ActorQueryOperationFromQuad extends ActorQueryOperationType
|
|
|
53
53
|
* @param {Operation[]} operations An array of operations, must contain at least one operation.
|
|
54
54
|
* @return {Union} A union operation.
|
|
55
55
|
*/
|
|
56
|
-
static unionOperations(algebraFactory:
|
|
56
|
+
static unionOperations(algebraFactory: AlgebraFactory, operations: Algebra.Operation[]): Algebra.Operation;
|
|
57
57
|
/**
|
|
58
58
|
* Transform an operation based on the default and named graphs in the pattern.
|
|
59
59
|
*
|
|
@@ -68,7 +68,7 @@ export declare class ActorQueryOperationFromQuad extends ActorQueryOperationType
|
|
|
68
68
|
* @param {From} pattern A from operation.
|
|
69
69
|
* @return {Operation} The transformed operation.
|
|
70
70
|
*/
|
|
71
|
-
static createOperation(algebraFactory:
|
|
71
|
+
static createOperation(algebraFactory: AlgebraFactory, pattern: Algebra.From): Algebra.Operation;
|
|
72
72
|
testOperation(_operation: Algebra.From, _context: IActionContext): Promise<TestResult<IActorTest>>;
|
|
73
73
|
runOperation(operationOriginal: Algebra.From, context: IActionContext): Promise<IQueryOperationResult>;
|
|
74
74
|
}
|
|
@@ -4,13 +4,13 @@ exports.ActorQueryOperationFromQuad = void 0;
|
|
|
4
4
|
const bus_query_operation_1 = require("@comunica/bus-query-operation");
|
|
5
5
|
const context_entries_1 = require("@comunica/context-entries");
|
|
6
6
|
const core_1 = require("@comunica/core");
|
|
7
|
-
const
|
|
7
|
+
const utils_algebra_1 = require("@comunica/utils-algebra");
|
|
8
8
|
/**
|
|
9
9
|
* A comunica From Query Operation Actor.
|
|
10
10
|
*/
|
|
11
11
|
class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperationTypedMediated {
|
|
12
12
|
constructor(args) {
|
|
13
|
-
super(args,
|
|
13
|
+
super(args, utils_algebra_1.Algebra.Types.FROM);
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Create a deep copy of the given operation.
|
|
@@ -20,21 +20,22 @@ class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperat
|
|
|
20
20
|
*/
|
|
21
21
|
static copyOperation(operation, recursiveCb) {
|
|
22
22
|
const copiedOperation = {};
|
|
23
|
-
for (const key of Object.
|
|
24
|
-
|
|
23
|
+
for (const [key, value] of Object.entries(operation)) {
|
|
24
|
+
const castedKey = key;
|
|
25
|
+
if (Array.isArray(value) && key !== 'template') {
|
|
25
26
|
// We exclude the 'template' entry, as we don't want to modify the template value of construct operations
|
|
26
27
|
if (key === 'variables') {
|
|
27
|
-
copiedOperation[
|
|
28
|
+
copiedOperation[castedKey] = value;
|
|
28
29
|
}
|
|
29
30
|
else {
|
|
30
|
-
copiedOperation[
|
|
31
|
+
copiedOperation[castedKey] = value.map(recursiveCb);
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(
|
|
34
|
-
copiedOperation[
|
|
34
|
+
else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(value.type)) {
|
|
35
|
+
copiedOperation[castedKey] = recursiveCb(value);
|
|
35
36
|
}
|
|
36
37
|
else {
|
|
37
|
-
copiedOperation[
|
|
38
|
+
copiedOperation[castedKey] = value;
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
return copiedOperation;
|
|
@@ -50,10 +51,9 @@ class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperat
|
|
|
50
51
|
*/
|
|
51
52
|
static applyOperationDefaultGraph(algebraFactory, operation, defaultGraphs) {
|
|
52
53
|
// If the operation is a BGP or Path, change the graph.
|
|
53
|
-
if ((operation.
|
|
54
|
-
operation.
|
|
55
|
-
|
|
56
|
-
if (operation.type === 'bgp') {
|
|
54
|
+
if (((0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.BGP) && operation.patterns.length > 0) ||
|
|
55
|
+
(0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.PATH) || (0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.PATTERN)) {
|
|
56
|
+
if ((0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.BGP)) {
|
|
57
57
|
return ActorQueryOperationFromQuad
|
|
58
58
|
.joinOperations(algebraFactory, operation.patterns.map((pattern) => {
|
|
59
59
|
if (pattern.graph.termType !== 'DefaultGraph') {
|
|
@@ -68,7 +68,7 @@ class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperat
|
|
|
68
68
|
return operation;
|
|
69
69
|
}
|
|
70
70
|
const paths = defaultGraphs.map((graph) => {
|
|
71
|
-
if (operation.
|
|
71
|
+
if ((0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.PATH)) {
|
|
72
72
|
return algebraFactory
|
|
73
73
|
.createPath(operation.subject, operation.predicate, operation.object, graph);
|
|
74
74
|
}
|
|
@@ -77,7 +77,7 @@ class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperat
|
|
|
77
77
|
});
|
|
78
78
|
return ActorQueryOperationFromQuad.unionOperations(algebraFactory, paths);
|
|
79
79
|
}
|
|
80
|
-
return ActorQueryOperationFromQuad.copyOperation(operation,
|
|
80
|
+
return ActorQueryOperationFromQuad.copyOperation(operation, subOperation => this.applyOperationDefaultGraph(algebraFactory, subOperation, defaultGraphs));
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Recursively transform the given operation to use the given graphs as named graph
|
|
@@ -91,21 +91,20 @@ class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperat
|
|
|
91
91
|
*/
|
|
92
92
|
static applyOperationNamedGraph(algebraFactory, operation, namedGraphs, defaultGraphs) {
|
|
93
93
|
// If the operation is a BGP or Path, change the graph.
|
|
94
|
-
if ((operation.
|
|
95
|
-
operation.
|
|
96
|
-
operation.type === 'pattern') {
|
|
94
|
+
if (((0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.BGP) && operation.patterns.length > 0) ||
|
|
95
|
+
(0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.PATH) || (0, utils_algebra_1.isKnownOperation)(operation, utils_algebra_1.Algebra.Types.PATTERN)) {
|
|
97
96
|
const patternGraph = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;
|
|
98
97
|
if (patternGraph.termType === 'DefaultGraph') {
|
|
99
98
|
// SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.
|
|
100
99
|
// The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.
|
|
101
|
-
return
|
|
100
|
+
return algebraFactory.createBgp([]);
|
|
102
101
|
}
|
|
103
102
|
if (patternGraph.termType === 'Variable') {
|
|
104
103
|
if (namedGraphs.length === 1) {
|
|
105
104
|
const graph = namedGraphs[0];
|
|
106
105
|
// If the pattern graph is a variable, replace the graph and bind the variable using VALUES
|
|
107
106
|
const bindings = {};
|
|
108
|
-
bindings[
|
|
107
|
+
bindings[patternGraph.value] = graph;
|
|
109
108
|
const values = algebraFactory
|
|
110
109
|
.createValues([patternGraph], [bindings]);
|
|
111
110
|
let pattern;
|
|
@@ -134,7 +133,7 @@ class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperat
|
|
|
134
133
|
return operation;
|
|
135
134
|
}
|
|
136
135
|
// No-op if the pattern's graph was not selected in a FROM NAMED.
|
|
137
|
-
return
|
|
136
|
+
return algebraFactory.createBgp([]);
|
|
138
137
|
}
|
|
139
138
|
return ActorQueryOperationFromQuad.copyOperation(operation, (subOperation) => this
|
|
140
139
|
.applyOperationNamedGraph(algebraFactory, subOperation, namedGraphs, defaultGraphs));
|
|
@@ -201,11 +200,11 @@ class ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperat
|
|
|
201
200
|
}
|
|
202
201
|
async runOperation(operationOriginal, context) {
|
|
203
202
|
const dataFactory = context.getSafe(context_entries_1.KeysInitQuery.dataFactory);
|
|
204
|
-
const algebraFactory = new
|
|
203
|
+
const algebraFactory = new utils_algebra_1.AlgebraFactory(dataFactory);
|
|
205
204
|
const operation = ActorQueryOperationFromQuad.createOperation(algebraFactory, operationOriginal);
|
|
206
205
|
return this.mediatorQueryOperation.mediate({ operation, context });
|
|
207
206
|
}
|
|
208
207
|
}
|
|
209
208
|
exports.ActorQueryOperationFromQuad = ActorQueryOperationFromQuad;
|
|
210
|
-
ActorQueryOperationFromQuad.ALGEBRA_TYPES = Object.keys(
|
|
209
|
+
ActorQueryOperationFromQuad.ALGEBRA_TYPES = Object.keys(utils_algebra_1.Algebra.Types).map(key => utils_algebra_1.Algebra.Types[key]);
|
|
211
210
|
//# sourceMappingURL=ActorQueryOperationFromQuad.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorQueryOperationFromQuad.js","sourceRoot":"","sources":["ActorQueryOperationFromQuad.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type { ComunicaDataFactory, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica From Query Operation Actor.\n */\nexport class ActorQueryOperationFromQuad extends ActorQueryOperationTypedMediated<Algebra.From> {\n private static readonly ALGEBRA_TYPES: string[] = Object.keys(Algebra.types).map(key => (<any> Algebra.types)[key]);\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'from');\n }\n\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n public static copyOperation(\n operation: Algebra.Operation,\n recursiveCb: (subOperation: Algebra.Operation) => Algebra.Operation,\n ): Algebra.Operation {\n const copiedOperation: Algebra.Operation = <any> {};\n for (const key of Object.keys(operation)) {\n if (Array.isArray(operation[key]) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[key] = operation[key];\n } else {\n copiedOperation[key] = operation[key].map(recursiveCb);\n }\n } else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(operation[key].type)) {\n copiedOperation[key] = recursiveCb(operation[key]);\n } else {\n copiedOperation[key] = operation[key];\n }\n }\n return copiedOperation;\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationDefaultGraph(\n algebraFactory: Factory,\n operation: Algebra.Operation,\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n if (operation.type === 'bgp') {\n return ActorQueryOperationFromQuad\n .joinOperations(algebraFactory, operation.patterns.map((pattern: Algebra.Pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return algebraFactory.createBgp([ pattern ]);\n }\n const bgps = defaultGraphs.map((graph: RDF.Term) =>\n algebraFactory.createBgp([ Object.assign(\n algebraFactory\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph),\n { metadata: pattern.metadata },\n ) ]));\n return ActorQueryOperationFromQuad.unionOperations(algebraFactory, bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map(\n (graph: RDF.Term) => {\n if (operation.type === 'path') {\n return algebraFactory\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return Object.assign(algebraFactory\n .createPattern(\n operation.subject,\n operation.predicate,\n operation.object,\n graph,\n ), { metadata: operation.metadata });\n },\n );\n return ActorQueryOperationFromQuad.unionOperations(algebraFactory, paths);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationDefaultGraph(algebraFactory, subOperation, defaultGraphs),\n );\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationNamedGraph(\n algebraFactory: Factory,\n operation: Algebra.Operation,\n namedGraphs: RDF.NamedNode[],\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n const patternGraph: RDF.Term = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return { type: Algebra.types.BGP, patterns: []};\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph: RDF.NamedNode = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings: Record<string, RDF.Literal | RDF.NamedNode> = {};\n bindings[`?${patternGraph.value}`] = graph;\n const values: Algebra.Values = algebraFactory\n .createValues([ patternGraph ], [ bindings ]);\n\n let pattern: Algebra.Operation;\n if (operation.type === 'bgp') {\n pattern = algebraFactory\n .createBgp(operation.patterns.map((pat: Algebra.Pattern) => algebraFactory\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n } else if (operation.type === 'path') {\n pattern = algebraFactory\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n } else {\n pattern = algebraFactory\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n\n return algebraFactory.createJoin([ values, pattern ]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(algebraFactory, namedGraphs.map(\n (graph: RDF.NamedNode) => ActorQueryOperationFromQuad.applyOperationNamedGraph(\n algebraFactory,\n operation,\n [ graph ],\n defaultGraphs,\n ),\n ));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable: boolean = [ ...namedGraphs, ...defaultGraphs ].some(\n (namedGraph: RDF.Term) => namedGraph.equals(patternGraph),\n );\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return { type: Algebra.types.BGP, patterns: []};\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this\n .applyOperationNamedGraph(algebraFactory, subOperation, namedGraphs, defaultGraphs),\n );\n }\n\n /**\n * Transform the given array of operations into a join operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n public static joinOperations(algebraFactory: Factory, operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return algebraFactory.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n\n /**\n * Transform the given array of operations into a union operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n public static unionOperations(algebraFactory: Factory, operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return algebraFactory.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @package\n * @param algebraFactory The algebra factory.\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n public static createOperation(algebraFactory: Factory, pattern: Algebra.From): Algebra.Operation {\n let operation: Algebra.Operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(algebraFactory, operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad\n .applyOperationNamedGraph(algebraFactory, operation, pattern.named, pattern.default);\n }\n return operation;\n }\n\n public async testOperation(_operation: Algebra.From, _context: IActionContext): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n public async runOperation(\n operationOriginal: Algebra.From,\n context: IActionContext,\n ): Promise<IQueryOperationResult> {\n const dataFactory: ComunicaDataFactory = context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new Factory(dataFactory);\n\n const operation: Algebra.Operation = ActorQueryOperationFromQuad.createOperation(algebraFactory, operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ActorQueryOperationFromQuad.js","sourceRoot":"","sources":["ActorQueryOperationFromQuad.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type { ComunicaDataFactory, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra, AlgebraFactory, isKnownOperation } from '@comunica/utils-algebra';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica From Query Operation Actor.\n */\nexport class ActorQueryOperationFromQuad extends ActorQueryOperationTypedMediated<Algebra.From> {\n private static readonly ALGEBRA_TYPES: string[] = Object.keys(Algebra.Types).map(key => (<any> Algebra.Types)[key]);\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.Types.FROM);\n }\n\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n public static copyOperation(\n operation: Algebra.Operation,\n recursiveCb: (subOperation: Algebra.Operation) => Algebra.Operation,\n ): Algebra.Operation {\n const copiedOperation: Algebra.Operation = <any> {};\n for (const [ key, value ] of Object.entries(operation)) {\n const castedKey = <keyof typeof operation> key;\n if (Array.isArray(value) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[castedKey] = <any> value;\n } else {\n copiedOperation[castedKey] = <any> value.map(recursiveCb);\n }\n } else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(value.type)) {\n copiedOperation[castedKey] = <any> recursiveCb(value);\n } else {\n copiedOperation[castedKey] = value;\n }\n }\n return copiedOperation;\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationDefaultGraph(\n algebraFactory: AlgebraFactory,\n operation: Algebra.Operation,\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((isKnownOperation(operation, Algebra.Types.BGP) && operation.patterns.length > 0) ||\n isKnownOperation(operation, Algebra.Types.PATH) || isKnownOperation(operation, Algebra.Types.PATTERN)) {\n if (isKnownOperation(operation, Algebra.Types.BGP)) {\n return ActorQueryOperationFromQuad\n .joinOperations(algebraFactory, operation.patterns.map((pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return algebraFactory.createBgp([ pattern ]);\n }\n const bgps = defaultGraphs.map((graph: RDF.Term) =>\n algebraFactory.createBgp([ Object.assign(\n algebraFactory\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph),\n { metadata: pattern.metadata },\n ) ]));\n return ActorQueryOperationFromQuad.unionOperations(algebraFactory, bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map(\n (graph: RDF.Term) => {\n if (isKnownOperation(operation, Algebra.Types.PATH)) {\n return algebraFactory\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return Object.assign(algebraFactory\n .createPattern(\n operation.subject,\n operation.predicate,\n operation.object,\n graph,\n ), { metadata: operation.metadata });\n },\n );\n return ActorQueryOperationFromQuad.unionOperations(algebraFactory, paths);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n subOperation => this.applyOperationDefaultGraph(algebraFactory, subOperation, defaultGraphs),\n );\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationNamedGraph(\n algebraFactory: AlgebraFactory,\n operation: Algebra.Operation,\n namedGraphs: RDF.NamedNode[],\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((isKnownOperation(operation, Algebra.Types.BGP) && operation.patterns.length > 0) ||\n isKnownOperation(operation, Algebra.Types.PATH) || isKnownOperation(operation, Algebra.Types.PATTERN)) {\n const patternGraph: RDF.Term = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return algebraFactory.createBgp([]);\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph: RDF.NamedNode = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings: Record<string, RDF.Literal | RDF.NamedNode> = {};\n bindings[patternGraph.value] = graph;\n const values: Algebra.Values = algebraFactory\n .createValues([ patternGraph ], [ bindings ]);\n\n let pattern: Algebra.Operation;\n if (operation.type === 'bgp') {\n pattern = algebraFactory\n .createBgp(operation.patterns.map((pat: Algebra.Pattern) => algebraFactory\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n } else if (operation.type === 'path') {\n pattern = algebraFactory\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n } else {\n pattern = algebraFactory\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n\n return algebraFactory.createJoin([ values, pattern ]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(algebraFactory, namedGraphs.map(\n (graph: RDF.NamedNode) => ActorQueryOperationFromQuad.applyOperationNamedGraph(\n algebraFactory,\n operation,\n [ graph ],\n defaultGraphs,\n ),\n ));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable: boolean = [ ...namedGraphs, ...defaultGraphs ].some(\n (namedGraph: RDF.Term) => namedGraph.equals(patternGraph),\n );\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return algebraFactory.createBgp([]);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this\n .applyOperationNamedGraph(algebraFactory, subOperation, namedGraphs, defaultGraphs),\n );\n }\n\n /**\n * Transform the given array of operations into a join operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n public static joinOperations(algebraFactory: AlgebraFactory, operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return algebraFactory.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n\n /**\n * Transform the given array of operations into a union operation.\n * @package\n * @param algebraFactory The algebra factory.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n public static unionOperations(algebraFactory: AlgebraFactory, operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return algebraFactory.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @package\n * @param algebraFactory The algebra factory.\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n public static createOperation(algebraFactory: AlgebraFactory, pattern: Algebra.From): Algebra.Operation {\n let operation: Algebra.Operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(algebraFactory, operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad\n .applyOperationNamedGraph(algebraFactory, operation, pattern.named, pattern.default);\n }\n return operation;\n }\n\n public async testOperation(_operation: Algebra.From, _context: IActionContext): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n public async runOperation(\n operationOriginal: Algebra.From,\n context: IActionContext,\n ): Promise<IQueryOperationResult> {\n const dataFactory: ComunicaDataFactory = context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new AlgebraFactory(dataFactory);\n\n const operation: Algebra.Operation = ActorQueryOperationFromQuad.createOperation(algebraFactory, operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n"]}
|
package/lib/index.d.ts
CHANGED
|
File without changes
|
package/lib/index.js
CHANGED
|
File without changes
|
package/lib/index.js.map
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/actor-query-operation-from-quad",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.2-alpha.49.0",
|
|
4
4
|
"description": "A from query-operation actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
"build:components": "componentsjs-generator"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@comunica/bus-query-operation": "
|
|
45
|
-
"@comunica/context-entries": "
|
|
46
|
-
"@comunica/core": "
|
|
47
|
-
"@comunica/types": "
|
|
48
|
-
"@
|
|
49
|
-
"
|
|
44
|
+
"@comunica/bus-query-operation": "4.4.2-alpha.49.0",
|
|
45
|
+
"@comunica/context-entries": "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
|
+
"@rdfjs/types": "*"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "ef6f96cfd8faf7c37955bb7e0fe9f6fc6a994bdf"
|
|
52
52
|
}
|