@_linked/core 2.11.1 → 2.12.0-next.20260706124424
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/CHANGELOG.md +39 -0
- package/README.md +3 -3
- package/lib/cjs/expressions/Expr.d.ts +22 -51
- package/lib/cjs/expressions/Expr.js +24 -176
- package/lib/cjs/expressions/Expr.js.map +1 -1
- package/lib/cjs/expressions/ExpressionMethods.d.ts +4 -0
- package/lib/cjs/expressions/ExpressionNode.d.ts +4 -0
- package/lib/cjs/expressions/ExpressionNode.js +13 -0
- package/lib/cjs/expressions/ExpressionNode.js.map +1 -1
- package/lib/cjs/index.d.ts +2 -2
- package/lib/cjs/index.js +6 -138
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces/ICoreIterable.d.ts +1 -1
- package/lib/cjs/package.d.ts +2 -2
- package/lib/cjs/queries/ContextRef.d.ts +15 -4
- package/lib/cjs/queries/ContextRef.js +15 -4
- package/lib/cjs/queries/ContextRef.js.map +1 -1
- package/lib/cjs/queries/CreateBuilder.d.ts +3 -5
- package/lib/cjs/queries/CreateBuilder.js +4 -16
- package/lib/cjs/queries/CreateBuilder.js.map +1 -1
- package/lib/cjs/queries/DeleteBuilder.d.ts +3 -5
- package/lib/cjs/queries/DeleteBuilder.js +8 -20
- package/lib/cjs/queries/DeleteBuilder.js.map +1 -1
- package/lib/cjs/queries/DslJsonExpression.d.ts +8 -8
- package/lib/cjs/queries/DslJsonExpression.js +84 -26
- package/lib/cjs/queries/DslJsonExpression.js.map +1 -1
- package/lib/cjs/queries/FieldSet.d.ts +43 -14
- package/lib/cjs/queries/FieldSet.js +142 -77
- package/lib/cjs/queries/FieldSet.js.map +1 -1
- package/lib/cjs/queries/IRCanonicalize.d.ts +5 -9
- package/lib/cjs/queries/IRCanonicalize.js +7 -23
- package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
- package/lib/cjs/queries/IRDesugar.d.ts +2 -1
- package/lib/cjs/queries/IRDesugar.js +1 -1
- package/lib/cjs/queries/IRDesugar.js.map +1 -1
- package/lib/cjs/queries/IRLower.js +7 -7
- package/lib/cjs/queries/IRLower.js.map +1 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +16 -2
- package/lib/cjs/queries/MutationQuery.d.ts +18 -1
- package/lib/cjs/queries/MutationQuery.js +83 -3
- package/lib/cjs/queries/MutationQuery.js.map +1 -1
- package/lib/cjs/queries/MutationSerialization.d.ts +11 -11
- package/lib/cjs/queries/MutationSerialization.js +51 -31
- package/lib/cjs/queries/MutationSerialization.js.map +1 -1
- package/lib/cjs/queries/MutationThenable.d.ts +18 -0
- package/lib/cjs/queries/MutationThenable.js +32 -0
- package/lib/cjs/queries/MutationThenable.js.map +1 -0
- package/lib/cjs/queries/QueryBuilder.d.ts +1 -1
- package/lib/cjs/queries/QueryBuilder.js +3 -3
- package/lib/cjs/queries/QueryBuilder.js.map +1 -1
- package/lib/cjs/queries/QueryBuilderSerialization.js +3 -4
- package/lib/cjs/queries/QueryBuilderSerialization.js.map +1 -1
- package/lib/cjs/queries/QueryContext.d.ts +1 -1
- package/lib/cjs/queries/QueryContext.js +7 -5
- package/lib/cjs/queries/QueryContext.js.map +1 -1
- package/lib/cjs/queries/QueryFactory.d.ts +0 -7
- package/lib/cjs/queries/QueryFactory.js +1 -20
- package/lib/cjs/queries/QueryFactory.js.map +1 -1
- package/lib/cjs/queries/SelectQuery.d.ts +19 -41
- package/lib/cjs/queries/SelectQuery.js +69 -118
- package/lib/cjs/queries/SelectQuery.js.map +1 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +3 -5
- package/lib/cjs/queries/UpdateBuilder.js +5 -17
- package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
- package/lib/cjs/queries/lower.js +3 -4
- package/lib/cjs/queries/lower.js.map +1 -1
- package/lib/cjs/queries/lowerMutationJSON.js +39 -23
- package/lib/cjs/queries/lowerMutationJSON.js.map +1 -1
- package/lib/cjs/shapes/List.js +2 -9
- package/lib/cjs/shapes/List.js.map +1 -1
- package/lib/cjs/shapes/PathNode.js +5 -18
- package/lib/cjs/shapes/PathNode.js.map +1 -1
- package/lib/cjs/shapes/SHACL.d.ts +10 -0
- package/lib/cjs/shapes/SHACL.js +41 -0
- package/lib/cjs/shapes/SHACL.js.map +1 -1
- package/lib/cjs/shapes/Shape.d.ts +1 -1
- package/lib/cjs/shapes/Shape.js.map +1 -1
- package/lib/cjs/shapes/serializePathToNodeData.js +16 -0
- package/lib/cjs/shapes/serializePathToNodeData.js.map +1 -1
- package/lib/cjs/shapes/syncShapes.js +15 -0
- package/lib/cjs/shapes/syncShapes.js.map +1 -1
- package/lib/cjs/sparql/SparqlAlgebra.d.ts +8 -1
- package/lib/cjs/sparql/algebraToString.js +57 -11
- package/lib/cjs/sparql/algebraToString.js.map +1 -1
- package/lib/cjs/sparql/irToAlgebra.js +89 -31
- package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
- package/lib/cjs/sparql/resultMapping.js +0 -11
- package/lib/cjs/sparql/resultMapping.js.map +1 -1
- package/lib/cjs/sparql/sparqlUtils.d.ts +21 -0
- package/lib/cjs/sparql/sparqlUtils.js +65 -0
- package/lib/cjs/sparql/sparqlUtils.js.map +1 -1
- package/lib/cjs/utils/LinkedStorage.d.ts +1 -2
- package/lib/cjs/utils/LinkedStorage.js +1 -2
- package/lib/cjs/utils/LinkedStorage.js.map +1 -1
- package/lib/cjs/utils/Package.js +11 -4
- package/lib/cjs/utils/Package.js.map +1 -1
- package/lib/cjs/utils/Prefix.d.ts +4 -5
- package/lib/cjs/utils/Prefix.js +13 -7
- package/lib/cjs/utils/Prefix.js.map +1 -1
- package/lib/cjs/utils/ShapeClass.d.ts +0 -11
- package/lib/cjs/utils/ShapeClass.js +0 -83
- package/lib/cjs/utils/ShapeClass.js.map +1 -1
- package/lib/cjs/utils/cached.d.ts +3 -0
- package/lib/cjs/utils/cached.js +26 -16
- package/lib/cjs/utils/cached.js.map +1 -1
- package/lib/cjs/utils/loadStores.js +4 -0
- package/lib/cjs/utils/loadStores.js.map +1 -1
- package/lib/esm/expressions/Expr.d.ts +22 -51
- package/lib/esm/expressions/Expr.js +24 -176
- package/lib/esm/expressions/Expr.js.map +1 -1
- package/lib/esm/expressions/ExpressionMethods.d.ts +4 -0
- package/lib/esm/expressions/ExpressionNode.d.ts +4 -0
- package/lib/esm/expressions/ExpressionNode.js +13 -0
- package/lib/esm/expressions/ExpressionNode.js.map +1 -1
- package/lib/esm/index.d.ts +2 -2
- package/lib/esm/index.js +3 -103
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/interfaces/ICoreIterable.d.ts +1 -1
- package/lib/esm/package.d.ts +2 -2
- package/lib/esm/queries/ContextRef.d.ts +15 -4
- package/lib/esm/queries/ContextRef.js +15 -4
- package/lib/esm/queries/ContextRef.js.map +1 -1
- package/lib/esm/queries/CreateBuilder.d.ts +3 -5
- package/lib/esm/queries/CreateBuilder.js +4 -16
- package/lib/esm/queries/CreateBuilder.js.map +1 -1
- package/lib/esm/queries/DeleteBuilder.d.ts +3 -5
- package/lib/esm/queries/DeleteBuilder.js +8 -20
- package/lib/esm/queries/DeleteBuilder.js.map +1 -1
- package/lib/esm/queries/DslJsonExpression.d.ts +8 -8
- package/lib/esm/queries/DslJsonExpression.js +84 -26
- package/lib/esm/queries/DslJsonExpression.js.map +1 -1
- package/lib/esm/queries/FieldSet.d.ts +43 -14
- package/lib/esm/queries/FieldSet.js +142 -77
- package/lib/esm/queries/FieldSet.js.map +1 -1
- package/lib/esm/queries/IRCanonicalize.d.ts +5 -9
- package/lib/esm/queries/IRCanonicalize.js +6 -21
- package/lib/esm/queries/IRCanonicalize.js.map +1 -1
- package/lib/esm/queries/IRDesugar.d.ts +2 -1
- package/lib/esm/queries/IRDesugar.js +1 -1
- package/lib/esm/queries/IRDesugar.js.map +1 -1
- package/lib/esm/queries/IRLower.js +7 -7
- package/lib/esm/queries/IRLower.js.map +1 -1
- package/lib/esm/queries/IntermediateRepresentation.d.ts +16 -2
- package/lib/esm/queries/MutationQuery.d.ts +18 -1
- package/lib/esm/queries/MutationQuery.js +83 -3
- package/lib/esm/queries/MutationQuery.js.map +1 -1
- package/lib/esm/queries/MutationSerialization.d.ts +11 -11
- package/lib/esm/queries/MutationSerialization.js +51 -31
- package/lib/esm/queries/MutationSerialization.js.map +1 -1
- package/lib/esm/queries/MutationThenable.d.ts +18 -0
- package/lib/esm/queries/MutationThenable.js +28 -0
- package/lib/esm/queries/MutationThenable.js.map +1 -0
- package/lib/esm/queries/QueryBuilder.d.ts +1 -1
- package/lib/esm/queries/QueryBuilder.js +3 -3
- package/lib/esm/queries/QueryBuilder.js.map +1 -1
- package/lib/esm/queries/QueryBuilderSerialization.js +3 -4
- package/lib/esm/queries/QueryBuilderSerialization.js.map +1 -1
- package/lib/esm/queries/QueryContext.d.ts +1 -1
- package/lib/esm/queries/QueryContext.js +7 -5
- package/lib/esm/queries/QueryContext.js.map +1 -1
- package/lib/esm/queries/QueryFactory.d.ts +0 -7
- package/lib/esm/queries/QueryFactory.js +1 -19
- package/lib/esm/queries/QueryFactory.js.map +1 -1
- package/lib/esm/queries/SelectQuery.d.ts +19 -41
- package/lib/esm/queries/SelectQuery.js +69 -118
- package/lib/esm/queries/SelectQuery.js.map +1 -1
- package/lib/esm/queries/UpdateBuilder.d.ts +3 -5
- package/lib/esm/queries/UpdateBuilder.js +5 -17
- package/lib/esm/queries/UpdateBuilder.js.map +1 -1
- package/lib/esm/queries/lower.js +3 -4
- package/lib/esm/queries/lower.js.map +1 -1
- package/lib/esm/queries/lowerMutationJSON.js +39 -23
- package/lib/esm/queries/lowerMutationJSON.js.map +1 -1
- package/lib/esm/shapes/List.js +2 -9
- package/lib/esm/shapes/List.js.map +1 -1
- package/lib/esm/shapes/PathNode.js +5 -18
- package/lib/esm/shapes/PathNode.js.map +1 -1
- package/lib/esm/shapes/SHACL.d.ts +10 -0
- package/lib/esm/shapes/SHACL.js +41 -0
- package/lib/esm/shapes/SHACL.js.map +1 -1
- package/lib/esm/shapes/Shape.d.ts +1 -1
- package/lib/esm/shapes/Shape.js.map +1 -1
- package/lib/esm/shapes/serializePathToNodeData.js +16 -0
- package/lib/esm/shapes/serializePathToNodeData.js.map +1 -1
- package/lib/esm/shapes/syncShapes.js +15 -0
- package/lib/esm/shapes/syncShapes.js.map +1 -1
- package/lib/esm/sparql/SparqlAlgebra.d.ts +8 -1
- package/lib/esm/sparql/algebraToString.js +58 -12
- package/lib/esm/sparql/algebraToString.js.map +1 -1
- package/lib/esm/sparql/irToAlgebra.js +89 -31
- package/lib/esm/sparql/irToAlgebra.js.map +1 -1
- package/lib/esm/sparql/resultMapping.js +0 -11
- package/lib/esm/sparql/resultMapping.js.map +1 -1
- package/lib/esm/sparql/sparqlUtils.d.ts +21 -0
- package/lib/esm/sparql/sparqlUtils.js +62 -0
- package/lib/esm/sparql/sparqlUtils.js.map +1 -1
- package/lib/esm/utils/LinkedStorage.d.ts +1 -2
- package/lib/esm/utils/LinkedStorage.js +1 -2
- package/lib/esm/utils/LinkedStorage.js.map +1 -1
- package/lib/esm/utils/Package.js +11 -4
- package/lib/esm/utils/Package.js.map +1 -1
- package/lib/esm/utils/Prefix.d.ts +4 -5
- package/lib/esm/utils/Prefix.js +13 -7
- package/lib/esm/utils/Prefix.js.map +1 -1
- package/lib/esm/utils/ShapeClass.d.ts +0 -11
- package/lib/esm/utils/ShapeClass.js +0 -79
- package/lib/esm/utils/ShapeClass.js.map +1 -1
- package/lib/esm/utils/cached.d.ts +3 -0
- package/lib/esm/utils/cached.js +26 -16
- package/lib/esm/utils/cached.js.map +1 -1
- package/lib/esm/utils/loadStores.js +4 -0
- package/lib/esm/utils/loadStores.js.map +1 -1
- package/package.json +9 -3
- package/lib/cjs/collections/CoreMap.d.ts +0 -37
- package/lib/cjs/collections/CoreMap.js +0 -101
- package/lib/cjs/collections/CoreMap.js.map +0 -1
- package/lib/cjs/paths/serializePathToSHACL.d.ts +0 -22
- package/lib/cjs/paths/serializePathToSHACL.js +0 -126
- package/lib/cjs/paths/serializePathToSHACL.js.map +0 -1
- package/lib/cjs/queries/WhereCondition.d.ts +0 -18
- package/lib/cjs/queries/WhereCondition.js +0 -3
- package/lib/cjs/queries/WhereCondition.js.map +0 -1
- package/lib/cjs/test-helpers/FusekiStore.d.ts +0 -29
- package/lib/cjs/test-helpers/FusekiStore.js +0 -85
- package/lib/cjs/test-helpers/FusekiStore.js.map +0 -1
- package/lib/cjs/test-helpers/fuseki-test-store.d.ts +0 -46
- package/lib/cjs/test-helpers/fuseki-test-store.js +0 -244
- package/lib/cjs/test-helpers/fuseki-test-store.js.map +0 -1
- package/lib/cjs/test-helpers/query-capture-store.d.ts +0 -11
- package/lib/cjs/test-helpers/query-capture-store.js +0 -109
- package/lib/cjs/test-helpers/query-capture-store.js.map +0 -1
- package/lib/cjs/test-helpers/query-fixtures.d.ts +0 -819
- package/lib/cjs/test-helpers/query-fixtures.js +0 -605
- package/lib/cjs/test-helpers/query-fixtures.js.map +0 -1
- package/lib/cjs/test-helpers/test-utils.d.ts +0 -18
- package/lib/cjs/test-helpers/test-utils.js +0 -47
- package/lib/cjs/test-helpers/test-utils.js.map +0 -1
- package/lib/cjs/utils/Types.d.ts +0 -11
- package/lib/cjs/utils/Types.js +0 -3
- package/lib/cjs/utils/Types.js.map +0 -1
- package/lib/esm/collections/CoreMap.d.ts +0 -37
- package/lib/esm/collections/CoreMap.js +0 -97
- package/lib/esm/collections/CoreMap.js.map +0 -1
- package/lib/esm/paths/serializePathToSHACL.d.ts +0 -22
- package/lib/esm/paths/serializePathToSHACL.js +0 -122
- package/lib/esm/paths/serializePathToSHACL.js.map +0 -1
- package/lib/esm/queries/WhereCondition.d.ts +0 -18
- package/lib/esm/queries/WhereCondition.js +0 -2
- package/lib/esm/queries/WhereCondition.js.map +0 -1
- package/lib/esm/test-helpers/FusekiStore.d.ts +0 -29
- package/lib/esm/test-helpers/FusekiStore.js +0 -81
- package/lib/esm/test-helpers/FusekiStore.js.map +0 -1
- package/lib/esm/test-helpers/fuseki-test-store.d.ts +0 -46
- package/lib/esm/test-helpers/fuseki-test-store.js +0 -232
- package/lib/esm/test-helpers/fuseki-test-store.js.map +0 -1
- package/lib/esm/test-helpers/query-capture-store.d.ts +0 -11
- package/lib/esm/test-helpers/query-capture-store.js +0 -71
- package/lib/esm/test-helpers/query-capture-store.js.map +0 -1
- package/lib/esm/test-helpers/query-fixtures.d.ts +0 -819
- package/lib/esm/test-helpers/query-fixtures.js +0 -602
- package/lib/esm/test-helpers/query-fixtures.js.map +0 -1
- package/lib/esm/test-helpers/test-utils.d.ts +0 -18
- package/lib/esm/test-helpers/test-utils.js +0 -41
- package/lib/esm/test-helpers/test-utils.js.map +0 -1
- package/lib/esm/utils/Types.d.ts +0 -11
- package/lib/esm/utils/Types.js +0 -2
- package/lib/esm/utils/Types.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { formatUri, formatLiteral, escapeSparqlString, collectPrefixes, } from './sparqlUtils.js';
|
|
1
|
+
import { formatUri, formatLiteral, escapeSparqlString, collectPrefixes, assertSafeCallName, sanitizeVarName, } from './sparqlUtils.js';
|
|
2
2
|
function collectUri(collector, uri) {
|
|
3
3
|
collector.uris.add(uri);
|
|
4
4
|
}
|
|
@@ -8,7 +8,7 @@ function collectUri(collector, uri) {
|
|
|
8
8
|
export function serializeTerm(term, collector) {
|
|
9
9
|
switch (term.kind) {
|
|
10
10
|
case 'variable':
|
|
11
|
-
return `?${term.name}`;
|
|
11
|
+
return `?${sanitizeVarName(term.name)}`;
|
|
12
12
|
case 'iri':
|
|
13
13
|
if (collector)
|
|
14
14
|
collectUri(collector, term.value);
|
|
@@ -48,10 +48,45 @@ function serializeTriples(triples, collector) {
|
|
|
48
48
|
// ---------------------------------------------------------------------------
|
|
49
49
|
// Expression serialization
|
|
50
50
|
// ---------------------------------------------------------------------------
|
|
51
|
+
// SPARQL binary-operator precedence (higher binds tighter): multiplicative >
|
|
52
|
+
// additive > relational. Used to parenthesize nested `binary_expr` operands so
|
|
53
|
+
// arithmetic groups correctly (`(a+b)*c`, not `a+b*c`) and relational chains
|
|
54
|
+
// (`a=b=c`, a non-associative syntax error) get parenthesized.
|
|
55
|
+
const RELATIONAL_OPS = new Set(['=', '!=', '<', '>', '<=', '>=']);
|
|
56
|
+
function binaryPrecedence(op) {
|
|
57
|
+
if (op === '*' || op === '/')
|
|
58
|
+
return 3;
|
|
59
|
+
if (op === '+' || op === '-')
|
|
60
|
+
return 2;
|
|
61
|
+
if (RELATIONAL_OPS.has(op))
|
|
62
|
+
return 1;
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Serialize a `binary_expr` operand, wrapping it in parens when omitting them
|
|
67
|
+
* would change how SPARQL parses the expression.
|
|
68
|
+
*/
|
|
69
|
+
function wrapBinaryOperand(operand, parentOp, side, collector) {
|
|
70
|
+
const s = serializeExpression(operand, collector);
|
|
71
|
+
// Logical (&&/||) binds looser than any binary operator → always parenthesize.
|
|
72
|
+
if (operand.kind === 'logical_expr')
|
|
73
|
+
return `(${s})`;
|
|
74
|
+
if (operand.kind !== 'binary_expr')
|
|
75
|
+
return s;
|
|
76
|
+
const parentIsRel = RELATIONAL_OPS.has(parentOp);
|
|
77
|
+
const childIsRel = RELATIONAL_OPS.has(operand.op);
|
|
78
|
+
// Relational is non-associative in SPARQL: any relational-in-relational needs parens.
|
|
79
|
+
if (parentIsRel && childIsRel)
|
|
80
|
+
return `(${s})`;
|
|
81
|
+
const pc = binaryPrecedence(operand.op);
|
|
82
|
+
const pp = binaryPrecedence(parentOp);
|
|
83
|
+
const needs = side === 'left' ? pc < pp : pc <= pp;
|
|
84
|
+
return needs ? `(${s})` : s;
|
|
85
|
+
}
|
|
51
86
|
export function serializeExpression(expr, collector) {
|
|
52
87
|
switch (expr.kind) {
|
|
53
88
|
case 'variable_expr':
|
|
54
|
-
return `?${expr.name}`;
|
|
89
|
+
return `?${sanitizeVarName(expr.name)}`;
|
|
55
90
|
case 'iri_expr':
|
|
56
91
|
if (collector)
|
|
57
92
|
collectUri(collector, expr.value);
|
|
@@ -62,8 +97,8 @@ export function serializeExpression(expr, collector) {
|
|
|
62
97
|
return formatLiteral(expr.value, expr.datatype);
|
|
63
98
|
}
|
|
64
99
|
case 'binary_expr': {
|
|
65
|
-
const left =
|
|
66
|
-
const right =
|
|
100
|
+
const left = wrapBinaryOperand(expr.left, expr.op, 'left', collector);
|
|
101
|
+
const right = wrapBinaryOperand(expr.right, expr.op, 'right', collector);
|
|
67
102
|
return `${left} ${expr.op} ${right}`;
|
|
68
103
|
}
|
|
69
104
|
case 'logical_expr': {
|
|
@@ -81,12 +116,14 @@ export function serializeExpression(expr, collector) {
|
|
|
81
116
|
case 'not_expr':
|
|
82
117
|
return `!(${serializeExpression(expr.inner, collector)})`;
|
|
83
118
|
case 'function_expr': {
|
|
119
|
+
assertSafeCallName(expr.name);
|
|
84
120
|
const args = expr.args
|
|
85
121
|
.map((a) => serializeExpression(a, collector))
|
|
86
122
|
.join(', ');
|
|
87
123
|
return `${expr.name}(${args})`;
|
|
88
124
|
}
|
|
89
125
|
case 'aggregate_expr': {
|
|
126
|
+
assertSafeCallName(expr.name);
|
|
90
127
|
const args = expr.args
|
|
91
128
|
.map((a) => serializeExpression(a, collector))
|
|
92
129
|
.join(', ');
|
|
@@ -99,7 +136,16 @@ export function serializeExpression(expr, collector) {
|
|
|
99
136
|
return `${prefix} {\n${indent(inner)}\n}`;
|
|
100
137
|
}
|
|
101
138
|
case 'bound_expr':
|
|
102
|
-
return `BOUND(?${expr.variable})`;
|
|
139
|
+
return `BOUND(?${sanitizeVarName(expr.variable)})`;
|
|
140
|
+
case 'in_expr': {
|
|
141
|
+
// Empty list: `IN ()` matches nothing, `NOT IN ()` matches everything —
|
|
142
|
+
// fold to a boolean constant rather than emit an empty parenthesis list.
|
|
143
|
+
if (expr.list.length === 0)
|
|
144
|
+
return expr.negated ? 'true' : 'false';
|
|
145
|
+
const val = serializeExpression(expr.value, collector);
|
|
146
|
+
const items = expr.list.map((e) => serializeExpression(e, collector)).join(', ');
|
|
147
|
+
return `${val} ${expr.negated ? 'NOT IN' : 'IN'} (${items})`;
|
|
148
|
+
}
|
|
103
149
|
}
|
|
104
150
|
}
|
|
105
151
|
// ---------------------------------------------------------------------------
|
|
@@ -146,7 +192,7 @@ export function serializeAlgebraNode(node, collector) {
|
|
|
146
192
|
case 'extend': {
|
|
147
193
|
const inner = serializeAlgebraNode(node.inner, collector);
|
|
148
194
|
const expr = serializeExpression(node.expression, collector);
|
|
149
|
-
return `${inner}\nBIND(${expr} AS ?${node.variable})`;
|
|
195
|
+
return `${inner}\nBIND(${expr} AS ?${sanitizeVarName(node.variable)})`;
|
|
150
196
|
}
|
|
151
197
|
case 'graph': {
|
|
152
198
|
if (collector)
|
|
@@ -162,11 +208,11 @@ export function serializeAlgebraNode(node, collector) {
|
|
|
162
208
|
return formatUri(iri);
|
|
163
209
|
})
|
|
164
210
|
.join(' ');
|
|
165
|
-
return `VALUES ?${node.variable} { ${values} }`;
|
|
211
|
+
return `VALUES ?${sanitizeVarName(node.variable)} { ${values} }`;
|
|
166
212
|
}
|
|
167
213
|
case 'subselect': {
|
|
168
214
|
const innerBody = serializeAlgebraNode(node.inner, collector);
|
|
169
|
-
const projection = node.projection.map((v) => `?${v}`).join(' ');
|
|
215
|
+
const projection = node.projection.map((v) => `?${sanitizeVarName(v)}`).join(' ');
|
|
170
216
|
const lines = [`SELECT ${projection} WHERE {`];
|
|
171
217
|
lines.push(indent(innerBody));
|
|
172
218
|
lines.push('}');
|
|
@@ -218,12 +264,12 @@ export function selectPlanToSparql(plan, _options) {
|
|
|
218
264
|
// 2. Build SELECT line
|
|
219
265
|
const projectionParts = plan.projection.map((item) => {
|
|
220
266
|
if (item.kind === 'variable') {
|
|
221
|
-
return `?${item.name}`;
|
|
267
|
+
return `?${sanitizeVarName(item.name)}`;
|
|
222
268
|
}
|
|
223
269
|
else {
|
|
224
270
|
// aggregate or expression projection: (expr AS ?alias)
|
|
225
271
|
const expr = serializeExpression(item.expression, collector);
|
|
226
|
-
return `(${expr} AS ?${item.alias})`;
|
|
272
|
+
return `(${expr} AS ?${sanitizeVarName(item.alias)})`;
|
|
227
273
|
}
|
|
228
274
|
});
|
|
229
275
|
const distinctStr = plan.distinct ? 'DISTINCT ' : '';
|
|
@@ -233,7 +279,7 @@ export function selectPlanToSparql(plan, _options) {
|
|
|
233
279
|
// 4. Build trailing clauses
|
|
234
280
|
const clauses = [];
|
|
235
281
|
if (plan.groupBy && plan.groupBy.length > 0) {
|
|
236
|
-
clauses.push(`GROUP BY ${plan.groupBy.map((v) => `?${v}`).join(' ')}`);
|
|
282
|
+
clauses.push(`GROUP BY ${plan.groupBy.map((v) => `?${sanitizeVarName(v)}`).join(' ')}`);
|
|
237
283
|
}
|
|
238
284
|
if (plan.having) {
|
|
239
285
|
const havingExpr = serializeExpression(plan.having, collector);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algebraToString.js","sourceRoot":"","sources":["../../../src/sparql/algebraToString.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"algebraToString.js","sourceRoot":"","sources":["../../../src/sparql/algebraToString.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,28 +52,62 @@ function resolveShapeScanIri(shapeId) {
|
|
|
52
52
|
* that matched nothing.
|
|
53
53
|
* - No matching shape / unresolvable → `{kind:'iri'}` of the property id itself (unchanged shadow fallback).
|
|
54
54
|
*/
|
|
55
|
+
// Memoizes resolved predicate terms across the many call sites that resolve the
|
|
56
|
+
// same property. Guarded by the shape-registry size so it self-invalidates when
|
|
57
|
+
// new shapes register (e.g. across test-file module instances). Only successful
|
|
58
|
+
// resolutions are cached — a not-found fallback is never stored, so a predicate
|
|
59
|
+
// resolved before its shape registers can still resolve correctly afterwards.
|
|
60
|
+
const predicateTermCache = new Map();
|
|
61
|
+
let predicateTermCacheSize = -1;
|
|
55
62
|
function resolvePropertyPredicateTerm(propertyId) {
|
|
56
63
|
var _a, _b, _c;
|
|
57
64
|
const shapeClasses = getAllShapeClasses();
|
|
65
|
+
if (shapeClasses.size !== predicateTermCacheSize) {
|
|
66
|
+
predicateTermCache.clear();
|
|
67
|
+
predicateTermCacheSize = shapeClasses.size;
|
|
68
|
+
}
|
|
69
|
+
const cached = predicateTermCache.get(propertyId);
|
|
70
|
+
if (cached)
|
|
71
|
+
return cached;
|
|
58
72
|
for (const shapeClass of shapeClasses.values()) {
|
|
59
73
|
const propertyShape = (_c = (_b = (_a = shapeClass.shape) === null || _a === void 0 ? void 0 : _a.getPropertyShapes) === null || _b === void 0 ? void 0 : _b.call(_a, true)) === null || _c === void 0 ? void 0 : _c.find((prop) => prop.id === propertyId);
|
|
60
74
|
if (!propertyShape)
|
|
61
75
|
continue;
|
|
62
76
|
const simplePathId = getSimplePathId(propertyShape.path);
|
|
77
|
+
let term;
|
|
63
78
|
if (simplePathId !== null) {
|
|
64
79
|
// Simple single-IRI path: resolve to the IRI, or fall back to the property id
|
|
65
80
|
// (e.g. unresolvable `linked://tmp/` ids) — unchanged from before.
|
|
66
|
-
|
|
81
|
+
term = iriTerm(shouldResolveShapeOrPropertyId(simplePathId) ? simplePathId : propertyId);
|
|
67
82
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
83
|
+
else {
|
|
84
|
+
// Structured sh:path — emit a property-path predicate instead of a shadow IRI.
|
|
85
|
+
term = {
|
|
86
|
+
kind: 'path',
|
|
87
|
+
value: pathExprToSparql(propertyShape.path),
|
|
88
|
+
uris: collectPathUris(propertyShape.path),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
predicateTermCache.set(propertyId, term);
|
|
92
|
+
return term;
|
|
74
93
|
}
|
|
75
94
|
return iriTerm(propertyId);
|
|
76
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Resolve the predicate term for a traversal/property node: a structured
|
|
98
|
+
* property-path when an explicit `pathExpr` is present, otherwise the
|
|
99
|
+
* registry-resolved predicate for `property`. Centralizes the invariant that
|
|
100
|
+
* these two branches stay in lockstep across every triple-building site.
|
|
101
|
+
*/
|
|
102
|
+
function buildPredicateTerm(spec) {
|
|
103
|
+
return spec.pathExpr
|
|
104
|
+
? {
|
|
105
|
+
kind: 'path',
|
|
106
|
+
value: pathExprToSparql(spec.pathExpr),
|
|
107
|
+
uris: collectPathUris(spec.pathExpr),
|
|
108
|
+
}
|
|
109
|
+
: resolvePropertyPredicateTerm(spec.property);
|
|
110
|
+
}
|
|
77
111
|
/** Produce variable name suffix from the last segment of a property URI. */
|
|
78
112
|
function propertySuffix(propertyUri) {
|
|
79
113
|
const hashIdx = propertyUri.lastIndexOf('#');
|
|
@@ -92,7 +126,7 @@ function sanitizeVarName(name) {
|
|
|
92
126
|
const IR_EXPRESSION_KINDS = new Set([
|
|
93
127
|
'literal_expr', 'property_expr', 'binary_expr', 'logical_expr',
|
|
94
128
|
'not_expr', 'function_expr', 'aggregate_expr', 'reference_expr',
|
|
95
|
-
'alias_expr', 'context_property_expr', 'exists_expr',
|
|
129
|
+
'alias_expr', 'context_property_expr', 'exists_expr', 'in_expr',
|
|
96
130
|
]);
|
|
97
131
|
function isIRExpression(value) {
|
|
98
132
|
return !!value && typeof value === 'object' && 'kind' in value &&
|
|
@@ -122,7 +156,7 @@ function contextAliasKey(contextIri) {
|
|
|
122
156
|
/**
|
|
123
157
|
* Defense-in-depth: a `reference_expr`/`context_property_expr` must arrive here with its
|
|
124
158
|
* IRI already resolved (lowering's `resolveContextRefs` fills it from `contextName`). If it
|
|
125
|
-
* didn't — an unresolved `{
|
|
159
|
+
* didn't — an unresolved `{@ctx}` reaching the algebra through some path that bypassed
|
|
126
160
|
* resolution — fail with a clear `UnresolvedContextError` instead of an opaque
|
|
127
161
|
* `undefined.substring` crash deeper in URI formatting.
|
|
128
162
|
*/
|
|
@@ -182,13 +216,7 @@ function collectTraversalAliases(patterns) {
|
|
|
182
216
|
return aliases;
|
|
183
217
|
}
|
|
184
218
|
function buildTraverseTriple(pattern) {
|
|
185
|
-
const predicate = pattern
|
|
186
|
-
? {
|
|
187
|
-
kind: 'path',
|
|
188
|
-
value: pathExprToSparql(pattern.pathExpr),
|
|
189
|
-
uris: collectPathUris(pattern.pathExpr),
|
|
190
|
-
}
|
|
191
|
-
: resolvePropertyPredicateTerm(pattern.property);
|
|
219
|
+
const predicate = buildPredicateTerm(pattern);
|
|
192
220
|
return tripleOf(varTerm(pattern.from), predicate, varTerm(pattern.to));
|
|
193
221
|
}
|
|
194
222
|
function collectTraversePatternsInOrder(patterns, out = []) {
|
|
@@ -244,6 +272,11 @@ function collectExpressionAliases(expr, aliases) {
|
|
|
244
272
|
collectExpressionAliases(expr.left, aliases);
|
|
245
273
|
collectExpressionAliases(expr.right, aliases);
|
|
246
274
|
break;
|
|
275
|
+
case 'in_expr':
|
|
276
|
+
collectExpressionAliases(expr.value, aliases);
|
|
277
|
+
for (const el of expr.source.list)
|
|
278
|
+
collectExpressionAliases(el, aliases);
|
|
279
|
+
break;
|
|
247
280
|
case 'logical_expr':
|
|
248
281
|
for (const sub of expr.expressions) {
|
|
249
282
|
collectExpressionAliases(sub, aliases);
|
|
@@ -375,6 +408,8 @@ function containsAggregate(expr) {
|
|
|
375
408
|
switch (expr.kind) {
|
|
376
409
|
case 'aggregate_expr':
|
|
377
410
|
return true;
|
|
411
|
+
case 'in_expr':
|
|
412
|
+
return containsAggregate(expr.value) || expr.list.some(containsAggregate);
|
|
378
413
|
case 'binary_expr':
|
|
379
414
|
return containsAggregate(expr.left) || containsAggregate(expr.right);
|
|
380
415
|
case 'logical_expr':
|
|
@@ -568,13 +603,7 @@ export function selectToAlgebra(query, _options) {
|
|
|
568
603
|
// Every pattern here is a root→child paginated traversal (the deep-pagination
|
|
569
604
|
// guard above rejected anything else), so each maps 1:1 to a sub-SELECT.
|
|
570
605
|
for (const pattern of paginatedTraversePatterns) {
|
|
571
|
-
const predicate = pattern
|
|
572
|
-
? {
|
|
573
|
-
kind: 'path',
|
|
574
|
-
value: pathExprToSparql(pattern.pathExpr),
|
|
575
|
-
uris: collectPathUris(pattern.pathExpr),
|
|
576
|
-
}
|
|
577
|
-
: resolvePropertyPredicateTerm(pattern.property);
|
|
606
|
+
const predicate = buildPredicateTerm(pattern);
|
|
578
607
|
const innerTriple = tripleOf(iriTerm(singleSubjectIri), predicate, varTerm(pattern.to));
|
|
579
608
|
// Default ORDER BY ?childVar for a deterministic window, unless the nested
|
|
580
609
|
// select supplied its own ordering. When it did, each ordered property must
|
|
@@ -919,9 +948,7 @@ function processExpressionForProperties(expr, registry, optionalPropertyTriples,
|
|
|
919
948
|
case 'property_expr': {
|
|
920
949
|
if (!registry.has(expr.sourceAlias, expr.property)) {
|
|
921
950
|
const varName = registry.getOrCreate(expr.sourceAlias, expr.property);
|
|
922
|
-
const predicate = expr
|
|
923
|
-
? { kind: 'path', value: pathExprToSparql(expr.pathExpr), uris: collectPathUris(expr.pathExpr) }
|
|
924
|
-
: resolvePropertyPredicateTerm(expr.property);
|
|
951
|
+
const predicate = buildPredicateTerm(expr);
|
|
925
952
|
const triple = tripleOf(varTerm(expr.sourceAlias), predicate, varTerm(varName));
|
|
926
953
|
const triples = requiredPropertyKeys.has(bindingKey(expr.sourceAlias, expr.property))
|
|
927
954
|
? requiredPropertyTriples
|
|
@@ -934,6 +961,10 @@ function processExpressionForProperties(expr, registry, optionalPropertyTriples,
|
|
|
934
961
|
processExpressionForProperties(expr.left, registry, optionalPropertyTriples, requiredPropertyTriples, requiredPropertyKeys);
|
|
935
962
|
processExpressionForProperties(expr.right, registry, optionalPropertyTriples, requiredPropertyTriples, requiredPropertyKeys);
|
|
936
963
|
break;
|
|
964
|
+
case 'in_expr':
|
|
965
|
+
// The tested value binds a property; list elements are constants.
|
|
966
|
+
processExpressionForProperties(expr.value, registry, optionalPropertyTriples, requiredPropertyTriples, requiredPropertyKeys);
|
|
967
|
+
break;
|
|
937
968
|
case 'logical_expr':
|
|
938
969
|
for (const sub of expr.expressions) {
|
|
939
970
|
processExpressionForProperties(sub, registry, optionalPropertyTriples, requiredPropertyTriples, requiredPropertyKeys);
|
|
@@ -990,6 +1021,9 @@ function collectRequiredBindingKeys(expr) {
|
|
|
990
1021
|
return new Set([bindingKey(expr.sourceAlias, expr.property)]);
|
|
991
1022
|
case 'context_property_expr':
|
|
992
1023
|
return new Set([bindingKey(contextAliasKey(resolvedContextIri(expr.contextIri, expr.contextName)), expr.property)]);
|
|
1024
|
+
case 'in_expr':
|
|
1025
|
+
// The tested value must be bound; list elements are constants.
|
|
1026
|
+
return collectRequiredBindingKeys(expr.value);
|
|
993
1027
|
case 'binary_expr':
|
|
994
1028
|
return mergeKeySets(collectRequiredBindingKeys(expr.left), collectRequiredBindingKeys(expr.right));
|
|
995
1029
|
case 'function_expr': {
|
|
@@ -1075,6 +1109,13 @@ function convertExpression(expr, registry, optionalPropertyTriples) {
|
|
|
1075
1109
|
const varName = registry.getOrCreate(expr.sourceAlias, expr.property);
|
|
1076
1110
|
return { kind: 'variable_expr', name: varName };
|
|
1077
1111
|
}
|
|
1112
|
+
case 'in_expr':
|
|
1113
|
+
return {
|
|
1114
|
+
kind: 'in_expr',
|
|
1115
|
+
negated: expr.negated,
|
|
1116
|
+
value: convertExpression(expr.value, registry, optionalPropertyTriples),
|
|
1117
|
+
list: expr.source.list.map((e) => convertExpression(e, registry, optionalPropertyTriples)),
|
|
1118
|
+
};
|
|
1078
1119
|
case 'binary_expr':
|
|
1079
1120
|
return {
|
|
1080
1121
|
kind: 'binary_expr',
|
|
@@ -1150,9 +1191,7 @@ function convertExpression(expr, registry, optionalPropertyTriples) {
|
|
|
1150
1191
|
function convertExistsPattern(pattern, registry) {
|
|
1151
1192
|
switch (pattern.kind) {
|
|
1152
1193
|
case 'traverse': {
|
|
1153
|
-
const existsPredicate = pattern
|
|
1154
|
-
? { kind: 'path', value: pathExprToSparql(pattern.pathExpr), uris: collectPathUris(pattern.pathExpr) }
|
|
1155
|
-
: resolvePropertyPredicateTerm(pattern.property);
|
|
1194
|
+
const existsPredicate = buildPredicateTerm(pattern);
|
|
1156
1195
|
const triple = tripleOf(varTerm(pattern.from), existsPredicate, varTerm(pattern.to));
|
|
1157
1196
|
return { type: 'bgp', triples: [triple] };
|
|
1158
1197
|
}
|
|
@@ -1237,6 +1276,14 @@ function fieldValueToTerms(value, options) {
|
|
|
1237
1276
|
if (value instanceof Date) {
|
|
1238
1277
|
return [literalTerm(value.toISOString(), XSD_DATETIME)];
|
|
1239
1278
|
}
|
|
1279
|
+
// Computed/expression value in create: create lowers to INSERT DATA (ground
|
|
1280
|
+
// triples, no WHERE), so an expression can't be evaluated here. Fail loudly
|
|
1281
|
+
// instead of silently emitting no triple (report 021 §3, G4).
|
|
1282
|
+
if (value &&
|
|
1283
|
+
typeof value === 'object' &&
|
|
1284
|
+
(isIRExpression(value) || 'ir' in value)) {
|
|
1285
|
+
throw new Error('Computed/expression values are not supported in create (INSERT DATA has no WHERE clause to evaluate them). Use a literal value, or use update.');
|
|
1286
|
+
}
|
|
1240
1287
|
// NodeReferenceValue
|
|
1241
1288
|
if (typeof value === 'object' && 'id' in value && !('shape' in value) && !('fields' in value)) {
|
|
1242
1289
|
return [iriTerm(value.id)];
|
|
@@ -1587,12 +1634,21 @@ function shapeHasContainsProperty(shapeId) {
|
|
|
1587
1634
|
.getPropertyShapes(true)
|
|
1588
1635
|
.some((ps) => ps.contains);
|
|
1589
1636
|
}
|
|
1637
|
+
// Memoized registry scan for cascade lowering — called once per update/delete and
|
|
1638
|
+
// again per owned-cascade item inside loops. Guarded by registry size (same rationale
|
|
1639
|
+
// as predicateTermCache). Callers treat the result as read-only.
|
|
1640
|
+
let containmentCache = null;
|
|
1641
|
+
let containmentCacheSize = -1;
|
|
1590
1642
|
/** Gather contains-predicate IRIs and dependent targetClass IRIs from the registry. */
|
|
1591
1643
|
function collectContainment() {
|
|
1592
1644
|
var _a;
|
|
1645
|
+
const shapeClasses = getAllShapeClasses();
|
|
1646
|
+
if (containmentCache && shapeClasses.size === containmentCacheSize) {
|
|
1647
|
+
return containmentCache;
|
|
1648
|
+
}
|
|
1593
1649
|
const containsPreds = new Set();
|
|
1594
1650
|
const dependentTypes = new Set();
|
|
1595
|
-
for (const [, shapeClass] of
|
|
1651
|
+
for (const [, shapeClass] of shapeClasses) {
|
|
1596
1652
|
const nodeShape = shapeClass === null || shapeClass === void 0 ? void 0 : shapeClass.shape;
|
|
1597
1653
|
if (!nodeShape)
|
|
1598
1654
|
continue;
|
|
@@ -1610,7 +1666,9 @@ function collectContainment() {
|
|
|
1610
1666
|
}
|
|
1611
1667
|
}
|
|
1612
1668
|
}
|
|
1613
|
-
|
|
1669
|
+
containmentCache = { containsPreds: [...containsPreds], dependentTypes: [...dependentTypes] };
|
|
1670
|
+
containmentCacheSize = shapeClasses.size;
|
|
1671
|
+
return containmentCache;
|
|
1614
1672
|
}
|
|
1615
1673
|
/**
|
|
1616
1674
|
* Build DELETE patterns + WHERE OPTIONAL blocks that cascade-delete the owned subtree
|