@_linked/core 2.12.0 → 2.13.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/CHANGELOG.md +6 -0
- package/lib/esm/queries/IRPipeline.d.ts +7 -1
- package/lib/esm/queries/IRPipeline.js +20 -6
- package/lib/esm/queries/IRPipeline.js.map +1 -1
- package/lib/esm/queries/queryDispatch.js +12 -2
- package/lib/esm/queries/queryDispatch.js.map +1 -1
- package/package.json +10 -13
- package/lib/cjs/collections/CoreSet.d.ts +0 -47
- package/lib/cjs/collections/CoreSet.js +0 -136
- package/lib/cjs/collections/CoreSet.js.map +0 -1
- package/lib/cjs/collections/ShapeSet.d.ts +0 -6
- package/lib/cjs/collections/ShapeSet.js +0 -20
- package/lib/cjs/collections/ShapeSet.js.map +0 -1
- package/lib/cjs/expressions/Expr.d.ts +0 -29
- package/lib/cjs/expressions/Expr.js +0 -80
- package/lib/cjs/expressions/Expr.js.map +0 -1
- package/lib/cjs/expressions/ExpressionMethods.d.ts +0 -85
- package/lib/cjs/expressions/ExpressionMethods.js +0 -3
- package/lib/cjs/expressions/ExpressionMethods.js.map +0 -1
- package/lib/cjs/expressions/ExpressionNode.d.ts +0 -144
- package/lib/cjs/expressions/ExpressionNode.js +0 -432
- package/lib/cjs/expressions/ExpressionNode.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -29
- package/lib/cjs/index.js +0 -65
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/interfaces/ICoreIterable.d.ts +0 -14
- package/lib/cjs/interfaces/ICoreIterable.js +0 -3
- package/lib/cjs/interfaces/ICoreIterable.js.map +0 -1
- package/lib/cjs/interfaces/IDataset.d.ts +0 -26
- package/lib/cjs/interfaces/IDataset.js +0 -3
- package/lib/cjs/interfaces/IDataset.js.map +0 -1
- package/lib/cjs/interfaces/IFileStore.d.ts +0 -16
- package/lib/cjs/interfaces/IFileStore.js +0 -3
- package/lib/cjs/interfaces/IFileStore.js.map +0 -1
- package/lib/cjs/ontologies/linked-core.d.ts +0 -15
- package/lib/cjs/ontologies/linked-core.js +0 -38
- package/lib/cjs/ontologies/linked-core.js.map +0 -1
- package/lib/cjs/ontologies/npm.d.ts +0 -6
- package/lib/cjs/ontologies/npm.js +0 -15
- package/lib/cjs/ontologies/npm.js.map +0 -1
- package/lib/cjs/ontologies/owl.d.ts +0 -14
- package/lib/cjs/ontologies/owl.js +0 -21
- package/lib/cjs/ontologies/owl.js.map +0 -1
- package/lib/cjs/ontologies/rdf.d.ts +0 -13
- package/lib/cjs/ontologies/rdf.js +0 -27
- package/lib/cjs/ontologies/rdf.js.map +0 -1
- package/lib/cjs/ontologies/rdfs.d.ts +0 -16
- package/lib/cjs/ontologies/rdfs.js +0 -33
- package/lib/cjs/ontologies/rdfs.js.map +0 -1
- package/lib/cjs/ontologies/shacl.d.ts +0 -103
- package/lib/cjs/ontologies/shacl.js +0 -152
- package/lib/cjs/ontologies/shacl.js.map +0 -1
- package/lib/cjs/ontologies/xsd.d.ts +0 -19
- package/lib/cjs/ontologies/xsd.js +0 -41
- package/lib/cjs/ontologies/xsd.js.map +0 -1
- package/lib/cjs/package.d.ts +0 -4
- package/lib/cjs/package.js +0 -6
- package/lib/cjs/package.js.map +0 -1
- package/lib/cjs/package.json +0 -9
- package/lib/cjs/paths/PropertyPathExpr.d.ts +0 -38
- package/lib/cjs/paths/PropertyPathExpr.js +0 -221
- package/lib/cjs/paths/PropertyPathExpr.js.map +0 -1
- package/lib/cjs/paths/normalizePropertyPath.d.ts +0 -23
- package/lib/cjs/paths/normalizePropertyPath.js +0 -75
- package/lib/cjs/paths/normalizePropertyPath.js.map +0 -1
- package/lib/cjs/paths/pathExprToSparql.d.ts +0 -14
- package/lib/cjs/paths/pathExprToSparql.js +0 -136
- package/lib/cjs/paths/pathExprToSparql.js.map +0 -1
- package/lib/cjs/queries/ContextRef.d.ts +0 -32
- package/lib/cjs/queries/ContextRef.js +0 -69
- package/lib/cjs/queries/ContextRef.js.map +0 -1
- package/lib/cjs/queries/CreateBuilder.d.ts +0 -59
- package/lib/cjs/queries/CreateBuilder.js +0 -138
- package/lib/cjs/queries/CreateBuilder.js.map +0 -1
- package/lib/cjs/queries/CreateQuery.d.ts +0 -20
- package/lib/cjs/queries/CreateQuery.js +0 -3
- package/lib/cjs/queries/CreateQuery.js.map +0 -1
- package/lib/cjs/queries/DeleteBuilder.d.ts +0 -56
- package/lib/cjs/queries/DeleteBuilder.js +0 -172
- package/lib/cjs/queries/DeleteBuilder.js.map +0 -1
- package/lib/cjs/queries/DeleteQuery.d.ts +0 -37
- package/lib/cjs/queries/DeleteQuery.js +0 -3
- package/lib/cjs/queries/DeleteQuery.js.map +0 -1
- package/lib/cjs/queries/DslJsonExpression.d.ts +0 -68
- package/lib/cjs/queries/DslJsonExpression.js +0 -427
- package/lib/cjs/queries/DslJsonExpression.js.map +0 -1
- package/lib/cjs/queries/FieldSet.d.ts +0 -310
- package/lib/cjs/queries/FieldSet.js +0 -802
- package/lib/cjs/queries/FieldSet.js.map +0 -1
- package/lib/cjs/queries/IRAliasScope.d.ts +0 -20
- package/lib/cjs/queries/IRAliasScope.js +0 -52
- package/lib/cjs/queries/IRAliasScope.js.map +0 -1
- package/lib/cjs/queries/IRCanonicalize.d.ts +0 -19
- package/lib/cjs/queries/IRCanonicalize.js +0 -19
- package/lib/cjs/queries/IRCanonicalize.js.map +0 -1
- package/lib/cjs/queries/IRDesugar.d.ts +0 -123
- package/lib/cjs/queries/IRDesugar.js +0 -261
- package/lib/cjs/queries/IRDesugar.js.map +0 -1
- package/lib/cjs/queries/IRLower.d.ts +0 -25
- package/lib/cjs/queries/IRLower.js +0 -398
- package/lib/cjs/queries/IRLower.js.map +0 -1
- package/lib/cjs/queries/IRMutation.d.ts +0 -53
- package/lib/cjs/queries/IRMutation.js +0 -130
- package/lib/cjs/queries/IRMutation.js.map +0 -1
- package/lib/cjs/queries/IRPipeline.d.ts +0 -8
- package/lib/cjs/queries/IRPipeline.js +0 -25
- package/lib/cjs/queries/IRPipeline.js.map +0 -1
- package/lib/cjs/queries/IRProjection.d.ts +0 -39
- package/lib/cjs/queries/IRProjection.js +0 -105
- package/lib/cjs/queries/IRProjection.js.map +0 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +0 -282
- package/lib/cjs/queries/IntermediateRepresentation.js +0 -3
- package/lib/cjs/queries/IntermediateRepresentation.js.map +0 -1
- package/lib/cjs/queries/MutationQuery.d.ts +0 -50
- package/lib/cjs/queries/MutationQuery.js +0 -334
- package/lib/cjs/queries/MutationQuery.js.map +0 -1
- package/lib/cjs/queries/MutationSerialization.d.ts +0 -102
- package/lib/cjs/queries/MutationSerialization.js +0 -207
- package/lib/cjs/queries/MutationSerialization.js.map +0 -1
- package/lib/cjs/queries/MutationThenable.d.ts +0 -18
- package/lib/cjs/queries/MutationThenable.js +0 -32
- package/lib/cjs/queries/MutationThenable.js.map +0 -1
- package/lib/cjs/queries/PropertyPath.d.ts +0 -38
- package/lib/cjs/queries/PropertyPath.js +0 -82
- package/lib/cjs/queries/PropertyPath.js.map +0 -1
- package/lib/cjs/queries/ProxiedPathBuilder.d.ts +0 -14
- package/lib/cjs/queries/ProxiedPathBuilder.js +0 -29
- package/lib/cjs/queries/ProxiedPathBuilder.js.map +0 -1
- package/lib/cjs/queries/QueryBuilder.d.ts +0 -193
- package/lib/cjs/queries/QueryBuilder.js +0 -519
- package/lib/cjs/queries/QueryBuilder.js.map +0 -1
- package/lib/cjs/queries/QueryBuilderSerialization.d.ts +0 -31
- package/lib/cjs/queries/QueryBuilderSerialization.js +0 -68
- package/lib/cjs/queries/QueryBuilderSerialization.js.map +0 -1
- package/lib/cjs/queries/QueryContext.d.ts +0 -50
- package/lib/cjs/queries/QueryContext.js +0 -147
- package/lib/cjs/queries/QueryContext.js.map +0 -1
- package/lib/cjs/queries/QueryFactory.d.ts +0 -80
- package/lib/cjs/queries/QueryFactory.js +0 -21
- package/lib/cjs/queries/QueryFactory.js.map +0 -1
- package/lib/cjs/queries/SelectQuery.d.ts +0 -302
- package/lib/cjs/queries/SelectQuery.js +0 -761
- package/lib/cjs/queries/SelectQuery.js.map +0 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +0 -69
- package/lib/cjs/queries/UpdateBuilder.js +0 -199
- package/lib/cjs/queries/UpdateBuilder.js.map +0 -1
- package/lib/cjs/queries/UpdateQuery.d.ts +0 -18
- package/lib/cjs/queries/UpdateQuery.js +0 -3
- package/lib/cjs/queries/UpdateQuery.js.map +0 -1
- package/lib/cjs/queries/fromJSON.d.ts +0 -16
- package/lib/cjs/queries/fromJSON.js +0 -41
- package/lib/cjs/queries/fromJSON.js.map +0 -1
- package/lib/cjs/queries/lower.d.ts +0 -28
- package/lib/cjs/queries/lower.js +0 -114
- package/lib/cjs/queries/lower.js.map +0 -1
- package/lib/cjs/queries/lowerMutationJSON.d.ts +0 -25
- package/lib/cjs/queries/lowerMutationJSON.js +0 -173
- package/lib/cjs/queries/lowerMutationJSON.js.map +0 -1
- package/lib/cjs/queries/mutationLowerSpec.d.ts +0 -32
- package/lib/cjs/queries/mutationLowerSpec.js +0 -8
- package/lib/cjs/queries/mutationLowerSpec.js.map +0 -1
- package/lib/cjs/queries/queryDispatch.d.ts +0 -33
- package/lib/cjs/queries/queryDispatch.js +0 -33
- package/lib/cjs/queries/queryDispatch.js.map +0 -1
- package/lib/cjs/queries/resolveShape.d.ts +0 -10
- package/lib/cjs/queries/resolveShape.js +0 -23
- package/lib/cjs/queries/resolveShape.js.map +0 -1
- package/lib/cjs/queries/wireVersion.d.ts +0 -7
- package/lib/cjs/queries/wireVersion.js +0 -25
- package/lib/cjs/queries/wireVersion.js.map +0 -1
- package/lib/cjs/shapes/List.d.ts +0 -35
- package/lib/cjs/shapes/List.js +0 -72
- package/lib/cjs/shapes/List.js.map +0 -1
- package/lib/cjs/shapes/PathNode.d.ts +0 -20
- package/lib/cjs/shapes/PathNode.js +0 -68
- package/lib/cjs/shapes/PathNode.js.map +0 -1
- package/lib/cjs/shapes/SHACL.d.ts +0 -300
- package/lib/cjs/shapes/SHACL.js +0 -612
- package/lib/cjs/shapes/SHACL.js.map +0 -1
- package/lib/cjs/shapes/Shape.d.ts +0 -74
- package/lib/cjs/shapes/Shape.js +0 -124
- package/lib/cjs/shapes/Shape.js.map +0 -1
- package/lib/cjs/shapes/serializePathToNodeData.d.ts +0 -24
- package/lib/cjs/shapes/serializePathToNodeData.js +0 -67
- package/lib/cjs/shapes/serializePathToNodeData.js.map +0 -1
- package/lib/cjs/shapes/syncShapes.d.ts +0 -38
- package/lib/cjs/shapes/syncShapes.js +0 -214
- package/lib/cjs/shapes/syncShapes.js.map +0 -1
- package/lib/cjs/sparql/SparqlAlgebra.d.ts +0 -190
- package/lib/cjs/sparql/SparqlAlgebra.js +0 -4
- package/lib/cjs/sparql/SparqlAlgebra.js.map +0 -1
- package/lib/cjs/sparql/SparqlDataset.d.ts +0 -60
- package/lib/cjs/sparql/SparqlDataset.js +0 -117
- package/lib/cjs/sparql/SparqlDataset.js.map +0 -1
- package/lib/cjs/sparql/algebraToString.d.ts +0 -13
- package/lib/cjs/sparql/algebraToString.js +0 -385
- package/lib/cjs/sparql/algebraToString.js.map +0 -1
- package/lib/cjs/sparql/index.d.ts +0 -9
- package/lib/cjs/sparql/index.js +0 -41
- package/lib/cjs/sparql/index.js.map +0 -1
- package/lib/cjs/sparql/irToAlgebra.d.ts +0 -79
- package/lib/cjs/sparql/irToAlgebra.js +0 -2042
- package/lib/cjs/sparql/irToAlgebra.js.map +0 -1
- package/lib/cjs/sparql/resultMapping.d.ts +0 -36
- package/lib/cjs/sparql/resultMapping.js +0 -563
- package/lib/cjs/sparql/resultMapping.js.map +0 -1
- package/lib/cjs/sparql/sparqlUtils.d.ts +0 -53
- package/lib/cjs/sparql/sparqlUtils.js +0 -154
- package/lib/cjs/sparql/sparqlUtils.js.map +0 -1
- package/lib/cjs/utils/LinkedErrorLogging.d.ts +0 -13
- package/lib/cjs/utils/LinkedErrorLogging.js +0 -22
- package/lib/cjs/utils/LinkedErrorLogging.js.map +0 -1
- package/lib/cjs/utils/LinkedFileStorage.d.ts +0 -23
- package/lib/cjs/utils/LinkedFileStorage.js +0 -62
- package/lib/cjs/utils/LinkedFileStorage.js.map +0 -1
- package/lib/cjs/utils/LinkedStorage.d.ts +0 -40
- package/lib/cjs/utils/LinkedStorage.js +0 -148
- package/lib/cjs/utils/LinkedStorage.js.map +0 -1
- package/lib/cjs/utils/NameSpace.d.ts +0 -2
- package/lib/cjs/utils/NameSpace.js +0 -8
- package/lib/cjs/utils/NameSpace.js.map +0 -1
- package/lib/cjs/utils/NodeReference.d.ts +0 -30
- package/lib/cjs/utils/NodeReference.js +0 -54
- package/lib/cjs/utils/NodeReference.js.map +0 -1
- package/lib/cjs/utils/Package.d.ts +0 -153
- package/lib/cjs/utils/Package.js +0 -419
- package/lib/cjs/utils/Package.js.map +0 -1
- package/lib/cjs/utils/Prefix.d.ts +0 -22
- package/lib/cjs/utils/Prefix.js +0 -104
- package/lib/cjs/utils/Prefix.js.map +0 -1
- package/lib/cjs/utils/ShapeClass.d.ts +0 -30
- package/lib/cjs/utils/ShapeClass.js +0 -180
- package/lib/cjs/utils/ShapeClass.js.map +0 -1
- package/lib/cjs/utils/URI.d.ts +0 -18
- package/lib/cjs/utils/URI.js +0 -42
- package/lib/cjs/utils/URI.js.map +0 -1
- package/lib/cjs/utils/cached.d.ts +0 -14
- package/lib/cjs/utils/cached.js +0 -71
- package/lib/cjs/utils/cached.js.map +0 -1
- package/lib/cjs/utils/loadStores.d.ts +0 -34
- package/lib/cjs/utils/loadStores.js +0 -105
- package/lib/cjs/utils/loadStores.js.map +0 -1
- package/lib/cjs/utils/parseDatasetsConfig.d.ts +0 -49
- package/lib/cjs/utils/parseDatasetsConfig.js +0 -110
- package/lib/cjs/utils/parseDatasetsConfig.js.map +0 -1
- package/lib/esm/package.json +0 -9
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serializeTerm = serializeTerm;
|
|
4
|
-
exports.serializeExpression = serializeExpression;
|
|
5
|
-
exports.serializeAlgebraNode = serializeAlgebraNode;
|
|
6
|
-
exports.selectPlanToSparql = selectPlanToSparql;
|
|
7
|
-
exports.insertDataPlanToSparql = insertDataPlanToSparql;
|
|
8
|
-
exports.deleteInsertPlanToSparql = deleteInsertPlanToSparql;
|
|
9
|
-
exports.deleteWherePlanToSparql = deleteWherePlanToSparql;
|
|
10
|
-
const sparqlUtils_js_1 = require("./sparqlUtils.js");
|
|
11
|
-
function collectUri(collector, uri) {
|
|
12
|
-
collector.uris.add(uri);
|
|
13
|
-
}
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
// Term serialization
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
function serializeTerm(term, collector) {
|
|
18
|
-
switch (term.kind) {
|
|
19
|
-
case 'variable':
|
|
20
|
-
return `?${(0, sparqlUtils_js_1.sanitizeVarName)(term.name)}`;
|
|
21
|
-
case 'iri':
|
|
22
|
-
if (collector)
|
|
23
|
-
collectUri(collector, term.value);
|
|
24
|
-
return (0, sparqlUtils_js_1.formatUri)(term.value);
|
|
25
|
-
case 'literal': {
|
|
26
|
-
if (term.language) {
|
|
27
|
-
return `"${(0, sparqlUtils_js_1.escapeSparqlString)(term.value)}"@${term.language}`;
|
|
28
|
-
}
|
|
29
|
-
if (term.datatype) {
|
|
30
|
-
if (collector)
|
|
31
|
-
collectUri(collector, term.datatype);
|
|
32
|
-
}
|
|
33
|
-
return (0, sparqlUtils_js_1.formatLiteral)(term.value, term.datatype);
|
|
34
|
-
}
|
|
35
|
-
case 'path':
|
|
36
|
-
if (collector && term.uris) {
|
|
37
|
-
for (const uri of term.uris)
|
|
38
|
-
collectUri(collector, uri);
|
|
39
|
-
}
|
|
40
|
-
return term.value;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// ---------------------------------------------------------------------------
|
|
44
|
-
// Triple serialization
|
|
45
|
-
// ---------------------------------------------------------------------------
|
|
46
|
-
function serializeTriple(triple, collector) {
|
|
47
|
-
const s = serializeTerm(triple.subject, collector);
|
|
48
|
-
const p = serializeTerm(triple.predicate, collector);
|
|
49
|
-
const o = serializeTerm(triple.object, collector);
|
|
50
|
-
return `${s} ${p} ${o}`;
|
|
51
|
-
}
|
|
52
|
-
function serializeTriples(triples, collector) {
|
|
53
|
-
return triples
|
|
54
|
-
.map((t) => serializeTriple(t, collector) + ' .')
|
|
55
|
-
.join('\n');
|
|
56
|
-
}
|
|
57
|
-
// ---------------------------------------------------------------------------
|
|
58
|
-
// Expression serialization
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
// SPARQL binary-operator precedence (higher binds tighter): multiplicative >
|
|
61
|
-
// additive > relational. Used to parenthesize nested `binary_expr` operands so
|
|
62
|
-
// arithmetic groups correctly (`(a+b)*c`, not `a+b*c`) and relational chains
|
|
63
|
-
// (`a=b=c`, a non-associative syntax error) get parenthesized.
|
|
64
|
-
const RELATIONAL_OPS = new Set(['=', '!=', '<', '>', '<=', '>=']);
|
|
65
|
-
function binaryPrecedence(op) {
|
|
66
|
-
if (op === '*' || op === '/')
|
|
67
|
-
return 3;
|
|
68
|
-
if (op === '+' || op === '-')
|
|
69
|
-
return 2;
|
|
70
|
-
if (RELATIONAL_OPS.has(op))
|
|
71
|
-
return 1;
|
|
72
|
-
return 0;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Serialize a `binary_expr` operand, wrapping it in parens when omitting them
|
|
76
|
-
* would change how SPARQL parses the expression.
|
|
77
|
-
*/
|
|
78
|
-
function wrapBinaryOperand(operand, parentOp, side, collector) {
|
|
79
|
-
const s = serializeExpression(operand, collector);
|
|
80
|
-
// Logical (&&/||) binds looser than any binary operator → always parenthesize.
|
|
81
|
-
if (operand.kind === 'logical_expr')
|
|
82
|
-
return `(${s})`;
|
|
83
|
-
if (operand.kind !== 'binary_expr')
|
|
84
|
-
return s;
|
|
85
|
-
const parentIsRel = RELATIONAL_OPS.has(parentOp);
|
|
86
|
-
const childIsRel = RELATIONAL_OPS.has(operand.op);
|
|
87
|
-
// Relational is non-associative in SPARQL: any relational-in-relational needs parens.
|
|
88
|
-
if (parentIsRel && childIsRel)
|
|
89
|
-
return `(${s})`;
|
|
90
|
-
const pc = binaryPrecedence(operand.op);
|
|
91
|
-
const pp = binaryPrecedence(parentOp);
|
|
92
|
-
const needs = side === 'left' ? pc < pp : pc <= pp;
|
|
93
|
-
return needs ? `(${s})` : s;
|
|
94
|
-
}
|
|
95
|
-
function serializeExpression(expr, collector) {
|
|
96
|
-
switch (expr.kind) {
|
|
97
|
-
case 'variable_expr':
|
|
98
|
-
return `?${(0, sparqlUtils_js_1.sanitizeVarName)(expr.name)}`;
|
|
99
|
-
case 'iri_expr':
|
|
100
|
-
if (collector)
|
|
101
|
-
collectUri(collector, expr.value);
|
|
102
|
-
return (0, sparqlUtils_js_1.formatUri)(expr.value);
|
|
103
|
-
case 'literal_expr': {
|
|
104
|
-
if (expr.datatype && collector)
|
|
105
|
-
collectUri(collector, expr.datatype);
|
|
106
|
-
return (0, sparqlUtils_js_1.formatLiteral)(expr.value, expr.datatype);
|
|
107
|
-
}
|
|
108
|
-
case 'binary_expr': {
|
|
109
|
-
const left = wrapBinaryOperand(expr.left, expr.op, 'left', collector);
|
|
110
|
-
const right = wrapBinaryOperand(expr.right, expr.op, 'right', collector);
|
|
111
|
-
return `${left} ${expr.op} ${right}`;
|
|
112
|
-
}
|
|
113
|
-
case 'logical_expr': {
|
|
114
|
-
const op = expr.op === 'and' ? '&&' : '||';
|
|
115
|
-
const parts = expr.exprs.map((e) => {
|
|
116
|
-
const s = serializeExpression(e, collector);
|
|
117
|
-
// Parenthesize OR children inside AND (AND binds tighter than OR)
|
|
118
|
-
if (expr.op === 'and' && e.kind === 'logical_expr' && e.op === 'or') {
|
|
119
|
-
return `(${s})`;
|
|
120
|
-
}
|
|
121
|
-
return s;
|
|
122
|
-
});
|
|
123
|
-
return parts.join(` ${op} `);
|
|
124
|
-
}
|
|
125
|
-
case 'not_expr':
|
|
126
|
-
return `!(${serializeExpression(expr.inner, collector)})`;
|
|
127
|
-
case 'function_expr': {
|
|
128
|
-
(0, sparqlUtils_js_1.assertSafeCallName)(expr.name);
|
|
129
|
-
const args = expr.args
|
|
130
|
-
.map((a) => serializeExpression(a, collector))
|
|
131
|
-
.join(', ');
|
|
132
|
-
return `${expr.name}(${args})`;
|
|
133
|
-
}
|
|
134
|
-
case 'aggregate_expr': {
|
|
135
|
-
(0, sparqlUtils_js_1.assertSafeCallName)(expr.name);
|
|
136
|
-
const args = expr.args
|
|
137
|
-
.map((a) => serializeExpression(a, collector))
|
|
138
|
-
.join(', ');
|
|
139
|
-
const distinctPrefix = expr.distinct ? 'DISTINCT ' : '';
|
|
140
|
-
return `${expr.name}(${distinctPrefix}${args})`;
|
|
141
|
-
}
|
|
142
|
-
case 'exists_expr': {
|
|
143
|
-
const inner = serializeAlgebraNode(expr.pattern, collector);
|
|
144
|
-
const prefix = expr.negated ? 'NOT EXISTS' : 'EXISTS';
|
|
145
|
-
return `${prefix} {\n${indent(inner)}\n}`;
|
|
146
|
-
}
|
|
147
|
-
case 'bound_expr':
|
|
148
|
-
return `BOUND(?${(0, sparqlUtils_js_1.sanitizeVarName)(expr.variable)})`;
|
|
149
|
-
case 'in_expr': {
|
|
150
|
-
// Empty list: `IN ()` matches nothing, `NOT IN ()` matches everything —
|
|
151
|
-
// fold to a boolean constant rather than emit an empty parenthesis list.
|
|
152
|
-
if (expr.list.length === 0)
|
|
153
|
-
return expr.negated ? 'true' : 'false';
|
|
154
|
-
const val = serializeExpression(expr.value, collector);
|
|
155
|
-
const items = expr.list.map((e) => serializeExpression(e, collector)).join(', ');
|
|
156
|
-
return `${val} ${expr.negated ? 'NOT IN' : 'IN'} (${items})`;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// ---------------------------------------------------------------------------
|
|
161
|
-
// Algebra node serialization
|
|
162
|
-
// ---------------------------------------------------------------------------
|
|
163
|
-
function serializeAlgebraNode(node, collector) {
|
|
164
|
-
switch (node.type) {
|
|
165
|
-
case 'bgp':
|
|
166
|
-
return serializeTriples(node.triples, collector);
|
|
167
|
-
case 'join': {
|
|
168
|
-
const left = serializeAlgebraNode(node.left, collector);
|
|
169
|
-
const right = serializeAlgebraNode(node.right, collector);
|
|
170
|
-
return `${left}\n${right}`;
|
|
171
|
-
}
|
|
172
|
-
case 'left_join': {
|
|
173
|
-
const left = serializeAlgebraNode(node.left, collector);
|
|
174
|
-
const right = serializeAlgebraNode(node.right, collector);
|
|
175
|
-
let optionalBlock = `OPTIONAL {\n${indent(right)}\n}`;
|
|
176
|
-
if (node.condition) {
|
|
177
|
-
const cond = serializeExpression(node.condition, collector);
|
|
178
|
-
// OPTIONAL with filter: OPTIONAL { pattern FILTER(cond) }
|
|
179
|
-
// Re-build to include filter inside the OPTIONAL block
|
|
180
|
-
optionalBlock = `OPTIONAL {\n${indent(right)}\n FILTER(${cond})\n}`;
|
|
181
|
-
}
|
|
182
|
-
// If left side is empty (e.g. UPDATE WHERE with all-OPTIONAL triples),
|
|
183
|
-
// omit the empty prefix to avoid blank lines
|
|
184
|
-
return left ? `${left}\n${optionalBlock}` : optionalBlock;
|
|
185
|
-
}
|
|
186
|
-
case 'filter': {
|
|
187
|
-
const inner = serializeAlgebraNode(node.inner, collector);
|
|
188
|
-
const expr = serializeExpression(node.expression, collector);
|
|
189
|
-
return `${inner}\nFILTER(${expr})`;
|
|
190
|
-
}
|
|
191
|
-
case 'union': {
|
|
192
|
-
const left = serializeAlgebraNode(node.left, collector);
|
|
193
|
-
const right = serializeAlgebraNode(node.right, collector);
|
|
194
|
-
return `{\n${indent(left)}\n}\nUNION\n{\n${indent(right)}\n}`;
|
|
195
|
-
}
|
|
196
|
-
case 'minus': {
|
|
197
|
-
const left = serializeAlgebraNode(node.left, collector);
|
|
198
|
-
const right = serializeAlgebraNode(node.right, collector);
|
|
199
|
-
return `${left}\nMINUS {\n${indent(right)}\n}`;
|
|
200
|
-
}
|
|
201
|
-
case 'extend': {
|
|
202
|
-
const inner = serializeAlgebraNode(node.inner, collector);
|
|
203
|
-
const expr = serializeExpression(node.expression, collector);
|
|
204
|
-
return `${inner}\nBIND(${expr} AS ?${(0, sparqlUtils_js_1.sanitizeVarName)(node.variable)})`;
|
|
205
|
-
}
|
|
206
|
-
case 'graph': {
|
|
207
|
-
if (collector)
|
|
208
|
-
collectUri(collector, node.iri);
|
|
209
|
-
const inner = serializeAlgebraNode(node.inner, collector);
|
|
210
|
-
return `GRAPH ${(0, sparqlUtils_js_1.formatUri)(node.iri)} {\n${indent(inner)}\n}`;
|
|
211
|
-
}
|
|
212
|
-
case 'values': {
|
|
213
|
-
const values = node.iris
|
|
214
|
-
.map((iri) => {
|
|
215
|
-
if (collector)
|
|
216
|
-
collectUri(collector, iri);
|
|
217
|
-
return (0, sparqlUtils_js_1.formatUri)(iri);
|
|
218
|
-
})
|
|
219
|
-
.join(' ');
|
|
220
|
-
return `VALUES ?${(0, sparqlUtils_js_1.sanitizeVarName)(node.variable)} { ${values} }`;
|
|
221
|
-
}
|
|
222
|
-
case 'subselect': {
|
|
223
|
-
const innerBody = serializeAlgebraNode(node.inner, collector);
|
|
224
|
-
const projection = node.projection.map((v) => `?${(0, sparqlUtils_js_1.sanitizeVarName)(v)}`).join(' ');
|
|
225
|
-
const lines = [`SELECT ${projection} WHERE {`];
|
|
226
|
-
lines.push(indent(innerBody));
|
|
227
|
-
lines.push('}');
|
|
228
|
-
const trailing = [];
|
|
229
|
-
if (node.orderBy && node.orderBy.length > 0) {
|
|
230
|
-
const orderParts = node.orderBy.map((cond) => {
|
|
231
|
-
const expr = serializeExpression(cond.expression, collector);
|
|
232
|
-
return `${cond.direction}(${expr})`;
|
|
233
|
-
});
|
|
234
|
-
trailing.push(`ORDER BY ${orderParts.join(' ')}`);
|
|
235
|
-
}
|
|
236
|
-
if (node.limit !== undefined) {
|
|
237
|
-
trailing.push(`LIMIT ${node.limit}`);
|
|
238
|
-
}
|
|
239
|
-
if (node.offset !== undefined) {
|
|
240
|
-
trailing.push(`OFFSET ${node.offset}`);
|
|
241
|
-
}
|
|
242
|
-
const subSelectStr = trailing.length > 0
|
|
243
|
-
? `${lines.join('\n')} ${trailing.join(' ')}`
|
|
244
|
-
: lines.join('\n');
|
|
245
|
-
return `{\n${indent(subSelectStr)}\n}`;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
// ---------------------------------------------------------------------------
|
|
250
|
-
// Helpers
|
|
251
|
-
// ---------------------------------------------------------------------------
|
|
252
|
-
function indent(text, level = 1) {
|
|
253
|
-
const prefix = ' '.repeat(level);
|
|
254
|
-
return text
|
|
255
|
-
.split('\n')
|
|
256
|
-
.map((line) => prefix + line)
|
|
257
|
-
.join('\n');
|
|
258
|
-
}
|
|
259
|
-
function buildPrefixBlock(usedUris) {
|
|
260
|
-
const prefixes = (0, sparqlUtils_js_1.collectPrefixes)([...usedUris]);
|
|
261
|
-
const lines = Object.entries(prefixes)
|
|
262
|
-
.sort(([a], [b]) => a.localeCompare(b))
|
|
263
|
-
.map(([prefix, uri]) => `PREFIX ${prefix}: <${uri}>`);
|
|
264
|
-
return lines.join('\n');
|
|
265
|
-
}
|
|
266
|
-
// ---------------------------------------------------------------------------
|
|
267
|
-
// Top-level plan serializers
|
|
268
|
-
// ---------------------------------------------------------------------------
|
|
269
|
-
function selectPlanToSparql(plan, _options) {
|
|
270
|
-
const collector = { uris: new Set() };
|
|
271
|
-
// 1. Serialize WHERE body
|
|
272
|
-
const body = serializeAlgebraNode(plan.algebra, collector);
|
|
273
|
-
// 2. Build SELECT line
|
|
274
|
-
const projectionParts = plan.projection.map((item) => {
|
|
275
|
-
if (item.kind === 'variable') {
|
|
276
|
-
return `?${(0, sparqlUtils_js_1.sanitizeVarName)(item.name)}`;
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
// aggregate or expression projection: (expr AS ?alias)
|
|
280
|
-
const expr = serializeExpression(item.expression, collector);
|
|
281
|
-
return `(${expr} AS ?${(0, sparqlUtils_js_1.sanitizeVarName)(item.alias)})`;
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
const distinctStr = plan.distinct ? 'DISTINCT ' : '';
|
|
285
|
-
const selectLine = `SELECT ${distinctStr}${projectionParts.join(' ')}`;
|
|
286
|
-
// 3. Build WHERE block
|
|
287
|
-
const whereBlock = `WHERE {\n${indent(body)}\n}`;
|
|
288
|
-
// 4. Build trailing clauses
|
|
289
|
-
const clauses = [];
|
|
290
|
-
if (plan.groupBy && plan.groupBy.length > 0) {
|
|
291
|
-
clauses.push(`GROUP BY ${plan.groupBy.map((v) => `?${(0, sparqlUtils_js_1.sanitizeVarName)(v)}`).join(' ')}`);
|
|
292
|
-
}
|
|
293
|
-
if (plan.having) {
|
|
294
|
-
const havingExpr = serializeExpression(plan.having, collector);
|
|
295
|
-
clauses.push(`HAVING(${havingExpr})`);
|
|
296
|
-
}
|
|
297
|
-
if (plan.orderBy && plan.orderBy.length > 0) {
|
|
298
|
-
const orderParts = plan.orderBy.map((cond) => {
|
|
299
|
-
const expr = serializeExpression(cond.expression, collector);
|
|
300
|
-
return `${cond.direction}(${expr})`;
|
|
301
|
-
});
|
|
302
|
-
clauses.push(`ORDER BY ${orderParts.join(' ')}`);
|
|
303
|
-
}
|
|
304
|
-
if (plan.limit !== undefined) {
|
|
305
|
-
clauses.push(`LIMIT ${plan.limit}`);
|
|
306
|
-
}
|
|
307
|
-
if (plan.offset !== undefined) {
|
|
308
|
-
clauses.push(`OFFSET ${plan.offset}`);
|
|
309
|
-
}
|
|
310
|
-
// 5. Build PREFIX block (after collecting all URIs)
|
|
311
|
-
const prefixBlock = buildPrefixBlock(collector.uris);
|
|
312
|
-
// 6. Assemble
|
|
313
|
-
const parts = [];
|
|
314
|
-
if (prefixBlock)
|
|
315
|
-
parts.push(prefixBlock);
|
|
316
|
-
parts.push(selectLine);
|
|
317
|
-
parts.push(whereBlock);
|
|
318
|
-
parts.push(...clauses);
|
|
319
|
-
return parts.join('\n');
|
|
320
|
-
}
|
|
321
|
-
function insertDataPlanToSparql(plan, _options) {
|
|
322
|
-
const collector = { uris: new Set() };
|
|
323
|
-
let triplesStr;
|
|
324
|
-
if (plan.graph) {
|
|
325
|
-
if (collector)
|
|
326
|
-
collectUri(collector, plan.graph);
|
|
327
|
-
const innerTriples = serializeTriples(plan.triples, collector);
|
|
328
|
-
triplesStr = `GRAPH ${(0, sparqlUtils_js_1.formatUri)(plan.graph)} {\n${indent(innerTriples)}\n}`;
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
triplesStr = serializeTriples(plan.triples, collector);
|
|
332
|
-
}
|
|
333
|
-
const body = `INSERT DATA {\n${indent(triplesStr)}\n}`;
|
|
334
|
-
const prefixBlock = buildPrefixBlock(collector.uris);
|
|
335
|
-
const parts = [];
|
|
336
|
-
if (prefixBlock)
|
|
337
|
-
parts.push(prefixBlock);
|
|
338
|
-
parts.push(body);
|
|
339
|
-
return parts.join('\n');
|
|
340
|
-
}
|
|
341
|
-
function deleteInsertPlanToSparql(plan, _options) {
|
|
342
|
-
const collector = { uris: new Set() };
|
|
343
|
-
// DELETE block
|
|
344
|
-
const deleteTriples = serializeTriples(plan.deletePatterns, collector);
|
|
345
|
-
const deletePart = `DELETE {\n${indent(deleteTriples)}\n}`;
|
|
346
|
-
// INSERT block (may be empty)
|
|
347
|
-
let insertPart = '';
|
|
348
|
-
if (plan.insertPatterns.length > 0) {
|
|
349
|
-
const insertTriples = serializeTriples(plan.insertPatterns, collector);
|
|
350
|
-
insertPart = `INSERT {\n${indent(insertTriples)}\n}\n`;
|
|
351
|
-
}
|
|
352
|
-
// WHERE block
|
|
353
|
-
const whereBody = serializeAlgebraNode(plan.whereAlgebra, collector);
|
|
354
|
-
const wherePart = `WHERE {\n${indent(whereBody)}\n}`;
|
|
355
|
-
const prefixBlock = buildPrefixBlock(collector.uris);
|
|
356
|
-
const parts = [];
|
|
357
|
-
if (prefixBlock)
|
|
358
|
-
parts.push(prefixBlock);
|
|
359
|
-
parts.push(deletePart);
|
|
360
|
-
if (insertPart)
|
|
361
|
-
parts.push(insertPart.trimEnd());
|
|
362
|
-
parts.push(wherePart);
|
|
363
|
-
return parts.join('\n');
|
|
364
|
-
}
|
|
365
|
-
function deleteWherePlanToSparql(plan, _options) {
|
|
366
|
-
const collector = { uris: new Set() };
|
|
367
|
-
const body = serializeAlgebraNode(plan.patterns, collector);
|
|
368
|
-
let content;
|
|
369
|
-
if (plan.graph) {
|
|
370
|
-
if (collector)
|
|
371
|
-
collectUri(collector, plan.graph);
|
|
372
|
-
content = `GRAPH ${(0, sparqlUtils_js_1.formatUri)(plan.graph)} {\n${indent(body)}\n}`;
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
content = body;
|
|
376
|
-
}
|
|
377
|
-
const result = `DELETE WHERE {\n${indent(content)}\n}`;
|
|
378
|
-
const prefixBlock = buildPrefixBlock(collector.uris);
|
|
379
|
-
const parts = [];
|
|
380
|
-
if (prefixBlock)
|
|
381
|
-
parts.push(prefixBlock);
|
|
382
|
-
parts.push(result);
|
|
383
|
-
return parts.join('\n');
|
|
384
|
-
}
|
|
385
|
-
//# sourceMappingURL=algebraToString.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"algebraToString.js","sourceRoot":"","sources":["../../../src/sparql/algebraToString.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export type * from './SparqlAlgebra.js';
|
|
2
|
-
export type { SparqlOptions } from './sparqlUtils.js';
|
|
3
|
-
export { formatUri, formatLiteral, escapeSparqlString, collectPrefixes, generateEntityUri, } from './sparqlUtils.js';
|
|
4
|
-
export { selectToAlgebra, createToAlgebra, updateToAlgebra, deleteToAlgebra, } from './irToAlgebra.js';
|
|
5
|
-
export { selectToSparql, createToSparql, updateToSparql, deleteToSparql, } from './irToAlgebra.js';
|
|
6
|
-
export { serializeAlgebraNode, serializeExpression, serializeTerm, selectPlanToSparql, insertDataPlanToSparql, deleteInsertPlanToSparql, deleteWherePlanToSparql, } from './algebraToString.js';
|
|
7
|
-
export { mapSparqlSelectResult, mapSparqlCreateResult, mapSparqlUpdateResult, } from './resultMapping.js';
|
|
8
|
-
export type { SparqlJsonResults, SparqlBinding } from './resultMapping.js';
|
|
9
|
-
export { SparqlDataset, SparqlStore } from './SparqlDataset.js';
|
package/lib/cjs/sparql/index.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SparqlStore = exports.SparqlDataset = exports.mapSparqlUpdateResult = exports.mapSparqlCreateResult = exports.mapSparqlSelectResult = exports.deleteWherePlanToSparql = exports.deleteInsertPlanToSparql = exports.insertDataPlanToSparql = exports.selectPlanToSparql = exports.serializeTerm = exports.serializeExpression = exports.serializeAlgebraNode = exports.deleteToSparql = exports.updateToSparql = exports.createToSparql = exports.selectToSparql = exports.deleteToAlgebra = exports.updateToAlgebra = exports.createToAlgebra = exports.selectToAlgebra = exports.generateEntityUri = exports.collectPrefixes = exports.escapeSparqlString = exports.formatLiteral = exports.formatUri = void 0;
|
|
4
|
-
// Utilities
|
|
5
|
-
var sparqlUtils_js_1 = require("./sparqlUtils.js");
|
|
6
|
-
Object.defineProperty(exports, "formatUri", { enumerable: true, get: function () { return sparqlUtils_js_1.formatUri; } });
|
|
7
|
-
Object.defineProperty(exports, "formatLiteral", { enumerable: true, get: function () { return sparqlUtils_js_1.formatLiteral; } });
|
|
8
|
-
Object.defineProperty(exports, "escapeSparqlString", { enumerable: true, get: function () { return sparqlUtils_js_1.escapeSparqlString; } });
|
|
9
|
-
Object.defineProperty(exports, "collectPrefixes", { enumerable: true, get: function () { return sparqlUtils_js_1.collectPrefixes; } });
|
|
10
|
-
Object.defineProperty(exports, "generateEntityUri", { enumerable: true, get: function () { return sparqlUtils_js_1.generateEntityUri; } });
|
|
11
|
-
// IR → Algebra conversion (Layer 1)
|
|
12
|
-
var irToAlgebra_js_1 = require("./irToAlgebra.js");
|
|
13
|
-
Object.defineProperty(exports, "selectToAlgebra", { enumerable: true, get: function () { return irToAlgebra_js_1.selectToAlgebra; } });
|
|
14
|
-
Object.defineProperty(exports, "createToAlgebra", { enumerable: true, get: function () { return irToAlgebra_js_1.createToAlgebra; } });
|
|
15
|
-
Object.defineProperty(exports, "updateToAlgebra", { enumerable: true, get: function () { return irToAlgebra_js_1.updateToAlgebra; } });
|
|
16
|
-
Object.defineProperty(exports, "deleteToAlgebra", { enumerable: true, get: function () { return irToAlgebra_js_1.deleteToAlgebra; } });
|
|
17
|
-
// High-level IR → SPARQL string (convenience wrappers)
|
|
18
|
-
var irToAlgebra_js_2 = require("./irToAlgebra.js");
|
|
19
|
-
Object.defineProperty(exports, "selectToSparql", { enumerable: true, get: function () { return irToAlgebra_js_2.selectToSparql; } });
|
|
20
|
-
Object.defineProperty(exports, "createToSparql", { enumerable: true, get: function () { return irToAlgebra_js_2.createToSparql; } });
|
|
21
|
-
Object.defineProperty(exports, "updateToSparql", { enumerable: true, get: function () { return irToAlgebra_js_2.updateToSparql; } });
|
|
22
|
-
Object.defineProperty(exports, "deleteToSparql", { enumerable: true, get: function () { return irToAlgebra_js_2.deleteToSparql; } });
|
|
23
|
-
// Algebra → SPARQL string serialization (layer 3)
|
|
24
|
-
var algebraToString_js_1 = require("./algebraToString.js");
|
|
25
|
-
Object.defineProperty(exports, "serializeAlgebraNode", { enumerable: true, get: function () { return algebraToString_js_1.serializeAlgebraNode; } });
|
|
26
|
-
Object.defineProperty(exports, "serializeExpression", { enumerable: true, get: function () { return algebraToString_js_1.serializeExpression; } });
|
|
27
|
-
Object.defineProperty(exports, "serializeTerm", { enumerable: true, get: function () { return algebraToString_js_1.serializeTerm; } });
|
|
28
|
-
Object.defineProperty(exports, "selectPlanToSparql", { enumerable: true, get: function () { return algebraToString_js_1.selectPlanToSparql; } });
|
|
29
|
-
Object.defineProperty(exports, "insertDataPlanToSparql", { enumerable: true, get: function () { return algebraToString_js_1.insertDataPlanToSparql; } });
|
|
30
|
-
Object.defineProperty(exports, "deleteInsertPlanToSparql", { enumerable: true, get: function () { return algebraToString_js_1.deleteInsertPlanToSparql; } });
|
|
31
|
-
Object.defineProperty(exports, "deleteWherePlanToSparql", { enumerable: true, get: function () { return algebraToString_js_1.deleteWherePlanToSparql; } });
|
|
32
|
-
// Result mapping
|
|
33
|
-
var resultMapping_js_1 = require("./resultMapping.js");
|
|
34
|
-
Object.defineProperty(exports, "mapSparqlSelectResult", { enumerable: true, get: function () { return resultMapping_js_1.mapSparqlSelectResult; } });
|
|
35
|
-
Object.defineProperty(exports, "mapSparqlCreateResult", { enumerable: true, get: function () { return resultMapping_js_1.mapSparqlCreateResult; } });
|
|
36
|
-
Object.defineProperty(exports, "mapSparqlUpdateResult", { enumerable: true, get: function () { return resultMapping_js_1.mapSparqlUpdateResult; } });
|
|
37
|
-
// Dataset base class
|
|
38
|
-
var SparqlDataset_js_1 = require("./SparqlDataset.js");
|
|
39
|
-
Object.defineProperty(exports, "SparqlDataset", { enumerable: true, get: function () { return SparqlDataset_js_1.SparqlDataset; } });
|
|
40
|
-
Object.defineProperty(exports, "SparqlStore", { enumerable: true, get: function () { return SparqlDataset_js_1.SparqlStore; } });
|
|
41
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sparql/index.ts"],"names":[],"mappings":";;;AAIA,YAAY;AACZ,mDAM0B;AALxB,2GAAA,SAAS,OAAA;AACT,+GAAA,aAAa,OAAA;AACb,oHAAA,kBAAkB,OAAA;AAClB,iHAAA,eAAe,OAAA;AACf,mHAAA,iBAAiB,OAAA;AAGnB,oCAAoC;AACpC,mDAK0B;AAJxB,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AAGjB,uDAAuD;AACvD,mDAK0B;AAJxB,gHAAA,cAAc,OAAA;AACd,gHAAA,cAAc,OAAA;AACd,gHAAA,cAAc,OAAA;AACd,gHAAA,cAAc,OAAA;AAGhB,kDAAkD;AAClD,2DAQ8B;AAP5B,0HAAA,oBAAoB,OAAA;AACpB,yHAAA,mBAAmB,OAAA;AACnB,mHAAA,aAAa,OAAA;AACb,wHAAA,kBAAkB,OAAA;AAClB,4HAAA,sBAAsB,OAAA;AACtB,8HAAA,wBAAwB,OAAA;AACxB,6HAAA,uBAAuB,OAAA;AAGzB,iBAAiB;AACjB,uDAI4B;AAH1B,yHAAA,qBAAqB,OAAA;AACrB,yHAAA,qBAAqB,OAAA;AACrB,yHAAA,qBAAqB,OAAA;AAIvB,qBAAqB;AACrB,uDAA8D;AAAtD,iHAAA,aAAa,OAAA;AAAE,+GAAA,WAAW,OAAA"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { IRSelectQuery, IRCreateMutation, IRUpdateMutation, IRDeleteMutation, IRDeleteAllMutation, IRDeleteWhereMutation, IRUpdateWhereMutation } from '../queries/IntermediateRepresentation.js';
|
|
2
|
-
import type { SparqlSelectPlan, SparqlInsertDataPlan, SparqlDeleteInsertPlan, SparqlAlgebraNode, SparqlTriple, SparqlTerm } from './SparqlAlgebra.js';
|
|
3
|
-
import { type SparqlOptions } from './sparqlUtils.js';
|
|
4
|
-
/**
|
|
5
|
-
* Converts an IRSelectQuery to a SparqlSelectPlan.
|
|
6
|
-
*/
|
|
7
|
-
export declare function selectToAlgebra(query: IRSelectQuery, _options?: SparqlOptions): SparqlSelectPlan;
|
|
8
|
-
/**
|
|
9
|
-
* Converts an IRCreateMutation to a SparqlInsertDataPlan.
|
|
10
|
-
*/
|
|
11
|
-
export declare function createToAlgebra(query: IRCreateMutation, options?: SparqlOptions): SparqlInsertDataPlan;
|
|
12
|
-
/**
|
|
13
|
-
* Converts an IRUpdateMutation to a SparqlDeleteInsertPlan.
|
|
14
|
-
*/
|
|
15
|
-
export declare function updateToAlgebra(query: IRUpdateMutation, options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
16
|
-
/**
|
|
17
|
-
* Build DELETE patterns + WHERE OPTIONAL blocks that cascade-delete the owned subtree
|
|
18
|
-
* reachable from `rootTerm` via `contains` edges. `varPrefix` keeps generated variables
|
|
19
|
-
* unique across multiple roots in one query. Returns empty when nothing is owned.
|
|
20
|
-
*/
|
|
21
|
-
export declare function buildOwnedCascade(rootTerm: SparqlTerm, varPrefix: string): {
|
|
22
|
-
deletePatterns: SparqlTriple[];
|
|
23
|
-
whereOptionals: SparqlAlgebraNode[];
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Converts an IRDeleteMutation to a SparqlDeleteInsertPlan (DELETE + WHERE).
|
|
27
|
-
*/
|
|
28
|
-
export declare function deleteToAlgebra(query: IRDeleteMutation, _options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
29
|
-
/**
|
|
30
|
-
* Converts an IRDeleteAllMutation to a SparqlDeleteInsertPlan.
|
|
31
|
-
*
|
|
32
|
-
* Generates DELETE { ?a0 ?p ?o . [blank node wildcards] }
|
|
33
|
-
* WHERE { ?a0 a <Shape> . ?a0 ?p ?o . OPTIONAL { [blank node traversals] } }
|
|
34
|
-
*/
|
|
35
|
-
export declare function deleteAllToAlgebra(query: IRDeleteAllMutation, _options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
36
|
-
/**
|
|
37
|
-
* Converts an IRDeleteWhereMutation to a SparqlDeleteInsertPlan.
|
|
38
|
-
*
|
|
39
|
-
* Like deleteAllToAlgebra but adds filter conditions from the where clause.
|
|
40
|
-
*/
|
|
41
|
-
export declare function deleteWhereToAlgebra(query: IRDeleteWhereMutation, _options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
42
|
-
/**
|
|
43
|
-
* Converts an IRUpdateWhereMutation to a SparqlDeleteInsertPlan.
|
|
44
|
-
*
|
|
45
|
-
* Like updateToAlgebra but uses a variable subject (?a0) instead of a
|
|
46
|
-
* hardcoded entity IRI, adds a type triple, and optionally includes
|
|
47
|
-
* filter conditions from the where clause.
|
|
48
|
-
*/
|
|
49
|
-
export declare function updateWhereToAlgebra(query: IRUpdateWhereMutation, options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
50
|
-
/**
|
|
51
|
-
* Converts an IRSelectQuery to a SPARQL string.
|
|
52
|
-
*/
|
|
53
|
-
export declare function selectToSparql(query: IRSelectQuery, options?: SparqlOptions): string;
|
|
54
|
-
/**
|
|
55
|
-
* Converts an IRCreateMutation to a SPARQL string.
|
|
56
|
-
* Stub: will be implemented when algebraToString is available.
|
|
57
|
-
*/
|
|
58
|
-
export declare function createToSparql(query: IRCreateMutation, options?: SparqlOptions): string;
|
|
59
|
-
/**
|
|
60
|
-
* Converts an IRUpdateMutation to a SPARQL string.
|
|
61
|
-
* Stub: will be implemented when algebraToString is available.
|
|
62
|
-
*/
|
|
63
|
-
export declare function updateToSparql(query: IRUpdateMutation, options?: SparqlOptions): string;
|
|
64
|
-
/**
|
|
65
|
-
* Converts an IRDeleteMutation to a SPARQL string.
|
|
66
|
-
*/
|
|
67
|
-
export declare function deleteToSparql(query: IRDeleteMutation, options?: SparqlOptions): string;
|
|
68
|
-
/**
|
|
69
|
-
* Converts an IRDeleteAllMutation to a SPARQL string.
|
|
70
|
-
*/
|
|
71
|
-
export declare function deleteAllToSparql(query: IRDeleteAllMutation, options?: SparqlOptions): string;
|
|
72
|
-
/**
|
|
73
|
-
* Converts an IRDeleteWhereMutation to a SPARQL string.
|
|
74
|
-
*/
|
|
75
|
-
export declare function deleteWhereToSparql(query: IRDeleteWhereMutation, options?: SparqlOptions): string;
|
|
76
|
-
/**
|
|
77
|
-
* Converts an IRUpdateWhereMutation to a SPARQL string.
|
|
78
|
-
*/
|
|
79
|
-
export declare function updateWhereToSparql(query: IRUpdateWhereMutation, options?: SparqlOptions): string;
|