@_linked/core 2.0.0 → 2.0.1
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 +27 -0
- package/README.md +50 -24
- package/lib/cjs/queries/DeleteBuilder.d.ts +17 -20
- package/lib/cjs/queries/DeleteBuilder.js +46 -19
- package/lib/cjs/queries/DeleteBuilder.js.map +1 -1
- package/lib/cjs/queries/DeleteQuery.d.ts +2 -2
- package/lib/cjs/queries/DeleteQuery.js.map +1 -1
- package/lib/cjs/queries/IRCanonicalize.d.ts +9 -2
- package/lib/cjs/queries/IRCanonicalize.js +6 -1
- package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
- package/lib/cjs/queries/IRDesugar.d.ts +19 -0
- package/lib/cjs/queries/IRDesugar.js +15 -9
- package/lib/cjs/queries/IRDesugar.js.map +1 -1
- package/lib/cjs/queries/IRLower.d.ts +10 -2
- package/lib/cjs/queries/IRLower.js +104 -2
- package/lib/cjs/queries/IRLower.js.map +1 -1
- package/lib/cjs/queries/IRMutation.d.ts +21 -1
- package/lib/cjs/queries/IRMutation.js +30 -1
- package/lib/cjs/queries/IRMutation.js.map +1 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +24 -2
- package/lib/cjs/queries/QueryBuilder.d.ts +14 -1
- package/lib/cjs/queries/QueryBuilder.js +59 -2
- package/lib/cjs/queries/QueryBuilder.js.map +1 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +20 -13
- package/lib/cjs/queries/UpdateBuilder.js +61 -11
- package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
- package/lib/cjs/queries/UpdateQuery.d.ts +2 -2
- package/lib/cjs/shapes/Shape.d.ts +6 -2
- package/lib/cjs/shapes/Shape.js +9 -5
- package/lib/cjs/shapes/Shape.js.map +1 -1
- package/lib/cjs/sparql/SparqlStore.js +15 -0
- package/lib/cjs/sparql/SparqlStore.js.map +1 -1
- package/lib/cjs/sparql/irToAlgebra.d.ts +34 -3
- package/lib/cjs/sparql/irToAlgebra.js +294 -35
- package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
- package/lib/cjs/test-helpers/query-fixtures.d.ts +1464 -16
- package/lib/cjs/test-helpers/query-fixtures.js +31 -2
- package/lib/cjs/test-helpers/query-fixtures.js.map +1 -1
- package/lib/esm/queries/DeleteBuilder.d.ts +17 -20
- package/lib/esm/queries/DeleteBuilder.js +46 -19
- package/lib/esm/queries/DeleteBuilder.js.map +1 -1
- package/lib/esm/queries/DeleteQuery.d.ts +2 -2
- package/lib/esm/queries/DeleteQuery.js.map +1 -1
- package/lib/esm/queries/IRCanonicalize.d.ts +9 -2
- package/lib/esm/queries/IRCanonicalize.js +6 -1
- package/lib/esm/queries/IRCanonicalize.js.map +1 -1
- package/lib/esm/queries/IRDesugar.d.ts +19 -0
- package/lib/esm/queries/IRDesugar.js +7 -2
- package/lib/esm/queries/IRDesugar.js.map +1 -1
- package/lib/esm/queries/IRLower.d.ts +10 -2
- package/lib/esm/queries/IRLower.js +102 -1
- package/lib/esm/queries/IRLower.js.map +1 -1
- package/lib/esm/queries/IRMutation.d.ts +21 -1
- package/lib/esm/queries/IRMutation.js +26 -0
- package/lib/esm/queries/IRMutation.js.map +1 -1
- package/lib/esm/queries/IntermediateRepresentation.d.ts +24 -2
- package/lib/esm/queries/QueryBuilder.d.ts +14 -1
- package/lib/esm/queries/QueryBuilder.js +59 -2
- package/lib/esm/queries/QueryBuilder.js.map +1 -1
- package/lib/esm/queries/UpdateBuilder.d.ts +20 -13
- package/lib/esm/queries/UpdateBuilder.js +61 -11
- package/lib/esm/queries/UpdateBuilder.js.map +1 -1
- package/lib/esm/queries/UpdateQuery.d.ts +2 -2
- package/lib/esm/shapes/Shape.d.ts +6 -2
- package/lib/esm/shapes/Shape.js +9 -5
- package/lib/esm/shapes/Shape.js.map +1 -1
- package/lib/esm/sparql/SparqlStore.js +16 -1
- package/lib/esm/sparql/SparqlStore.js.map +1 -1
- package/lib/esm/sparql/irToAlgebra.d.ts +34 -3
- package/lib/esm/sparql/irToAlgebra.js +288 -35
- package/lib/esm/sparql/irToAlgebra.js.map +1 -1
- package/lib/esm/test-helpers/query-fixtures.d.ts +1464 -16
- package/lib/esm/test-helpers/query-fixtures.js +31 -2
- package/lib/esm/test-helpers/query-fixtures.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,11 @@ exports.UpdateBuilder = void 0;
|
|
|
4
4
|
const resolveShape_js_1 = require("./resolveShape.js");
|
|
5
5
|
const UpdateQuery_js_1 = require("./UpdateQuery.js");
|
|
6
6
|
const queryDispatch_js_1 = require("./queryDispatch.js");
|
|
7
|
+
const SelectQuery_js_1 = require("./SelectQuery.js");
|
|
8
|
+
const IRMutation_js_1 = require("./IRMutation.js");
|
|
9
|
+
const IRDesugar_js_1 = require("./IRDesugar.js");
|
|
10
|
+
const IRCanonicalize_js_1 = require("./IRCanonicalize.js");
|
|
11
|
+
const IRLower_js_1 = require("./IRLower.js");
|
|
7
12
|
/**
|
|
8
13
|
* An immutable, fluent builder for update mutations.
|
|
9
14
|
*
|
|
@@ -12,20 +17,21 @@ const queryDispatch_js_1 = require("./queryDispatch.js");
|
|
|
12
17
|
* Implements PromiseLike so mutations execute on `await`:
|
|
13
18
|
* ```ts
|
|
14
19
|
* const result = await UpdateBuilder.from(Person).for({id: '...'}).set({name: 'Bob'});
|
|
20
|
+
* await UpdateBuilder.from(Person).set({hobby: 'x'}).forAll(); // returns void
|
|
15
21
|
* ```
|
|
16
22
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* Internally delegates to UpdateQueryFactory for IR generation.
|
|
23
|
+
* R is the resolved type: AddId<U> for ID-based, void for bulk operations.
|
|
20
24
|
*/
|
|
21
25
|
class UpdateBuilder {
|
|
22
26
|
constructor(init) {
|
|
23
27
|
this._shape = init.shape;
|
|
24
28
|
this._data = init.data;
|
|
25
29
|
this._targetId = init.targetId;
|
|
30
|
+
this._mode = init.mode;
|
|
31
|
+
this._whereFn = init.whereFn;
|
|
26
32
|
}
|
|
27
33
|
clone(overrides = {}) {
|
|
28
|
-
return new UpdateBuilder(Object.assign({ shape: this._shape, data: this._data, targetId: this._targetId }, overrides));
|
|
34
|
+
return new UpdateBuilder(Object.assign({ shape: this._shape, data: this._data, targetId: this._targetId, mode: this._mode, whereFn: this._whereFn }, overrides));
|
|
29
35
|
}
|
|
30
36
|
// ---------------------------------------------------------------------------
|
|
31
37
|
// Static constructors
|
|
@@ -37,31 +43,75 @@ class UpdateBuilder {
|
|
|
37
43
|
// ---------------------------------------------------------------------------
|
|
38
44
|
// Fluent API
|
|
39
45
|
// ---------------------------------------------------------------------------
|
|
40
|
-
/** Target a specific entity by ID.
|
|
46
|
+
/** Target a specific entity by ID. */
|
|
41
47
|
for(id) {
|
|
42
48
|
const resolvedId = typeof id === 'string' ? id : id.id;
|
|
43
|
-
return this.clone({ targetId: resolvedId });
|
|
49
|
+
return this.clone({ targetId: resolvedId, mode: 'for' });
|
|
50
|
+
}
|
|
51
|
+
/** Update all instances of this shape type. Returns void. */
|
|
52
|
+
forAll() {
|
|
53
|
+
return this.clone({ mode: 'forAll', targetId: undefined, whereFn: undefined });
|
|
54
|
+
}
|
|
55
|
+
/** Update instances matching a condition. Returns void. */
|
|
56
|
+
where(fn) {
|
|
57
|
+
return this.clone({ mode: 'where', whereFn: fn, targetId: undefined });
|
|
44
58
|
}
|
|
45
|
-
/**
|
|
59
|
+
/** Replace the update data. */
|
|
46
60
|
set(data) {
|
|
47
61
|
return this.clone({ data });
|
|
48
62
|
}
|
|
49
63
|
// ---------------------------------------------------------------------------
|
|
50
64
|
// Build & execute
|
|
51
65
|
// ---------------------------------------------------------------------------
|
|
52
|
-
/** Build the IR mutation.
|
|
66
|
+
/** Build the IR mutation. */
|
|
53
67
|
build() {
|
|
54
|
-
if (!this._targetId) {
|
|
55
|
-
throw new Error('UpdateBuilder requires .for(id) before .build(). Specify which entity to update.');
|
|
56
|
-
}
|
|
57
68
|
if (!this._data) {
|
|
58
69
|
throw new Error('UpdateBuilder requires .set(data) before .build(). Specify what to update.');
|
|
59
70
|
}
|
|
71
|
+
const mode = this._mode || (this._targetId ? 'for' : undefined);
|
|
72
|
+
if (mode === 'forAll') {
|
|
73
|
+
return this.buildUpdateWhere();
|
|
74
|
+
}
|
|
75
|
+
if (mode === 'where') {
|
|
76
|
+
if (!this._whereFn) {
|
|
77
|
+
throw new Error('UpdateBuilder.where() requires a condition callback.');
|
|
78
|
+
}
|
|
79
|
+
return this.buildUpdateWhere();
|
|
80
|
+
}
|
|
81
|
+
// Default: ID-based update
|
|
82
|
+
if (!this._targetId) {
|
|
83
|
+
throw new Error('UpdateBuilder requires .for(id), .forAll(), or .where() before .build().');
|
|
84
|
+
}
|
|
60
85
|
const factory = new UpdateQuery_js_1.UpdateQueryFactory(this._shape, this._targetId, this._data);
|
|
61
86
|
return factory.build();
|
|
62
87
|
}
|
|
88
|
+
buildUpdateWhere() {
|
|
89
|
+
const factory = new UpdateQuery_js_1.UpdateQueryFactory(this._shape, '__placeholder__', // not used for where/forAll
|
|
90
|
+
this._data);
|
|
91
|
+
const description = factory.fields;
|
|
92
|
+
let where;
|
|
93
|
+
let wherePatterns;
|
|
94
|
+
if (this._whereFn) {
|
|
95
|
+
const wherePath = (0, SelectQuery_js_1.processWhereClause)(this._whereFn, this._shape);
|
|
96
|
+
const desugared = (0, IRDesugar_js_1.toWhere)(wherePath);
|
|
97
|
+
const canonical = (0, IRCanonicalize_js_1.canonicalizeWhere)(desugared);
|
|
98
|
+
const lowered = (0, IRLower_js_1.lowerWhereToIR)(canonical);
|
|
99
|
+
where = lowered.where;
|
|
100
|
+
wherePatterns = lowered.wherePatterns;
|
|
101
|
+
}
|
|
102
|
+
return (0, IRMutation_js_1.buildCanonicalUpdateWhereMutationIR)({
|
|
103
|
+
shape: this._shape.shape,
|
|
104
|
+
updates: description,
|
|
105
|
+
where,
|
|
106
|
+
wherePatterns,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
63
109
|
/** Execute the mutation. */
|
|
64
110
|
exec() {
|
|
111
|
+
const mode = this._mode || (this._targetId ? 'for' : undefined);
|
|
112
|
+
if (mode === 'forAll' || mode === 'where') {
|
|
113
|
+
return (0, queryDispatch_js_1.getQueryDispatch)().updateQuery(this.build()).then(() => undefined);
|
|
114
|
+
}
|
|
65
115
|
return (0, queryDispatch_js_1.getQueryDispatch)().updateQuery(this.build());
|
|
66
116
|
}
|
|
67
117
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateBuilder.js","sourceRoot":"","sources":["../../../src/queries/UpdateBuilder.ts"],"names":[],"mappings":";;;AACA,uDAA+C;AAE/C,qDAAiE;AACjE,yDAAoD;
|
|
1
|
+
{"version":3,"file":"UpdateBuilder.js","sourceRoot":"","sources":["../../../src/queries/UpdateBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Shape, ShapeConstructor } from '../shapes/Shape.js';
|
|
2
2
|
import { NodeDescriptionValue, NodeReferenceValue, UpdatePartial } from './QueryFactory.js';
|
|
3
3
|
import { MutationQueryFactory } from './MutationQuery.js';
|
|
4
|
-
import { IRUpdateMutation } from './IntermediateRepresentation.js';
|
|
4
|
+
import { IRUpdateMutation, IRUpdateWhereMutation } from './IntermediateRepresentation.js';
|
|
5
5
|
/**
|
|
6
6
|
* The canonical UpdateQuery type — an IR AST node representing an update mutation.
|
|
7
7
|
* This is the type received by IQuadStore.updateQuery().
|
|
8
8
|
*/
|
|
9
|
-
export type UpdateQuery = IRUpdateMutation;
|
|
9
|
+
export type UpdateQuery = IRUpdateMutation | IRUpdateWhereMutation;
|
|
10
10
|
export declare class UpdateQueryFactory<ShapeType extends Shape, U extends UpdatePartial<ShapeType>> extends MutationQueryFactory {
|
|
11
11
|
shapeClass: ShapeConstructor<ShapeType>;
|
|
12
12
|
readonly id: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NodeShape, PropertyShape } from './SHACL.js';
|
|
2
|
-
import { QueryBuildFn, QueryResponseToResultType, SelectAllQueryResponse } from '../queries/SelectQuery.js';
|
|
2
|
+
import { QueryBuildFn, QueryResponseToResultType, SelectAllQueryResponse, WhereClause } from '../queries/SelectQuery.js';
|
|
3
3
|
import { NodeReferenceValue, UpdatePartial } from '../queries/QueryFactory.js';
|
|
4
4
|
import { NodeId } from '../queries/MutationQuery.js';
|
|
5
5
|
import { QueryBuilder } from '../queries/QueryBuilder.js';
|
|
@@ -58,9 +58,13 @@ export declare abstract class Shape {
|
|
|
58
58
|
* await Person.update({name: 'Alice'}).for({id: '...'});
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
static update<S extends Shape, U extends UpdatePartial<S>>(this: ShapeConstructor<S>, data
|
|
61
|
+
static update<S extends Shape, U extends UpdatePartial<S>>(this: ShapeConstructor<S>, data: U): UpdateBuilder<S, U>;
|
|
62
62
|
static create<S extends Shape, U extends UpdatePartial<S>>(this: ShapeConstructor<S>, updateObjectOrFn?: U): CreateBuilder<S, U>;
|
|
63
63
|
static delete<S extends Shape>(this: ShapeConstructor<S>, id: NodeId | NodeId[] | NodeReferenceValue[]): DeleteBuilder<S>;
|
|
64
|
+
/** Delete all instances of this shape type. Returns void. */
|
|
65
|
+
static deleteAll<S extends Shape>(this: ShapeConstructor<S>): DeleteBuilder<S, void>;
|
|
66
|
+
/** Delete instances matching a condition. Sugar for `.delete().where(fn)`. Returns void. */
|
|
67
|
+
static deleteWhere<S extends Shape>(this: ShapeConstructor<S>, fn: WhereClause<S>): DeleteBuilder<S, void>;
|
|
64
68
|
static mapPropertyShapes<S extends Shape, ResponseType = unknown>(this: ShapeConstructor<S>, mapFunction?: PropertyShapeMapFunction<S, ResponseType>): ResponseType;
|
|
65
69
|
static getSetOf<T extends Shape>(this: ShapeConstructor<T>, values: Iterable<T | NodeReferenceValue | string>): ShapeSet<T>;
|
|
66
70
|
}
|
package/lib/cjs/shapes/Shape.js
CHANGED
|
@@ -69,11 +69,7 @@ class Shape {
|
|
|
69
69
|
* ```
|
|
70
70
|
*/
|
|
71
71
|
static update(data) {
|
|
72
|
-
|
|
73
|
-
if (data) {
|
|
74
|
-
builder = builder.set(data);
|
|
75
|
-
}
|
|
76
|
-
return builder;
|
|
72
|
+
return UpdateBuilder_js_1.UpdateBuilder.from(this).set(data);
|
|
77
73
|
}
|
|
78
74
|
static create(updateObjectOrFn) {
|
|
79
75
|
let builder = CreateBuilder_js_1.CreateBuilder.from(this);
|
|
@@ -85,6 +81,14 @@ class Shape {
|
|
|
85
81
|
static delete(id) {
|
|
86
82
|
return DeleteBuilder_js_1.DeleteBuilder.from(this, id);
|
|
87
83
|
}
|
|
84
|
+
/** Delete all instances of this shape type. Returns void. */
|
|
85
|
+
static deleteAll() {
|
|
86
|
+
return DeleteBuilder_js_1.DeleteBuilder.from(this).all();
|
|
87
|
+
}
|
|
88
|
+
/** Delete instances matching a condition. Sugar for `.delete().where(fn)`. Returns void. */
|
|
89
|
+
static deleteWhere(fn) {
|
|
90
|
+
return DeleteBuilder_js_1.DeleteBuilder.from(this).where(fn);
|
|
91
|
+
}
|
|
88
92
|
static mapPropertyShapes(mapFunction) {
|
|
89
93
|
// SAFETY: dummyShape is used as a dynamic proxy target — we assign .proxy and
|
|
90
94
|
// access arbitrary property names on it, which S doesn't declare.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../src/shapes/Shape.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../src/shapes/Shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,11 @@ class SparqlStore {
|
|
|
61
61
|
}
|
|
62
62
|
updateQuery(query) {
|
|
63
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
if (query.kind === 'update_where') {
|
|
65
|
+
const sparql = (0, irToAlgebra_js_1.updateWhereToSparql)(query, this.options);
|
|
66
|
+
yield this.executeSparqlUpdate(sparql);
|
|
67
|
+
return { id: '' };
|
|
68
|
+
}
|
|
64
69
|
const sparql = (0, irToAlgebra_js_1.updateToSparql)(query, this.options);
|
|
65
70
|
yield this.executeSparqlUpdate(sparql);
|
|
66
71
|
return (0, resultMapping_js_1.mapSparqlUpdateResult)(query);
|
|
@@ -68,6 +73,16 @@ class SparqlStore {
|
|
|
68
73
|
}
|
|
69
74
|
deleteQuery(query) {
|
|
70
75
|
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
if (query.kind === 'delete_all') {
|
|
77
|
+
const sparql = (0, irToAlgebra_js_1.deleteAllToSparql)(query, this.options);
|
|
78
|
+
yield this.executeSparqlUpdate(sparql);
|
|
79
|
+
return { deleted: [], count: 0 };
|
|
80
|
+
}
|
|
81
|
+
if (query.kind === 'delete_where') {
|
|
82
|
+
const sparql = (0, irToAlgebra_js_1.deleteWhereToSparql)(query, this.options);
|
|
83
|
+
yield this.executeSparqlUpdate(sparql);
|
|
84
|
+
return { deleted: [], count: 0 };
|
|
85
|
+
}
|
|
71
86
|
const sparql = (0, irToAlgebra_js_1.deleteToSparql)(query, this.options);
|
|
72
87
|
yield this.executeSparqlUpdate(sparql);
|
|
73
88
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlStore.js","sourceRoot":"","sources":["../../../src/sparql/SparqlStore.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"SparqlStore.js","sourceRoot":"","sources":["../../../src/sparql/SparqlStore.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWA,qDAQ0B;AAC1B,yDAI4B;AAC5B,qDAAuE;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAsB,WAAW;IAG/B,YAAY,OAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAgBK,WAAW,CAAC,KAAkB;;YAClC,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,IAAA,wCAAqB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,MAAM,GAAG,GAAG,IAAA,kCAAiB,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACpB,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAA,wCAAqB,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAA,oCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAiB,CAAC;YAClC,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAA,wCAAqB,EAAC,KAAK,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAA,kCAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;YACjC,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAA,oCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;YACjC,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,GAAG;gBAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM;aACxB,CAAC;QACJ,CAAC;KAAA;CACF;AAhED,kCAgEC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRSelectQuery, IRCreateMutation, IRUpdateMutation, IRDeleteMutation } from '../queries/IntermediateRepresentation.js';
|
|
1
|
+
import { IRSelectQuery, IRCreateMutation, IRUpdateMutation, IRDeleteMutation, IRDeleteAllMutation, IRDeleteWhereMutation, IRUpdateWhereMutation } from '../queries/IntermediateRepresentation.js';
|
|
2
2
|
import { SparqlSelectPlan, SparqlInsertDataPlan, SparqlDeleteInsertPlan } from './SparqlAlgebra.js';
|
|
3
3
|
import { SparqlOptions } from './sparqlUtils.js';
|
|
4
4
|
/**
|
|
@@ -17,9 +17,29 @@ export declare function updateToAlgebra(query: IRUpdateMutation, options?: Sparq
|
|
|
17
17
|
* Converts an IRDeleteMutation to a SparqlDeleteInsertPlan (DELETE + WHERE).
|
|
18
18
|
*/
|
|
19
19
|
export declare function deleteToAlgebra(query: IRDeleteMutation, _options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
20
|
+
/**
|
|
21
|
+
* Converts an IRDeleteAllMutation to a SparqlDeleteInsertPlan.
|
|
22
|
+
*
|
|
23
|
+
* Generates DELETE { ?a0 ?p ?o . [blank node wildcards] }
|
|
24
|
+
* WHERE { ?a0 a <Shape> . ?a0 ?p ?o . OPTIONAL { [blank node traversals] } }
|
|
25
|
+
*/
|
|
26
|
+
export declare function deleteAllToAlgebra(query: IRDeleteAllMutation, _options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
27
|
+
/**
|
|
28
|
+
* Converts an IRDeleteWhereMutation to a SparqlDeleteInsertPlan.
|
|
29
|
+
*
|
|
30
|
+
* Like deleteAllToAlgebra but adds filter conditions from the where clause.
|
|
31
|
+
*/
|
|
32
|
+
export declare function deleteWhereToAlgebra(query: IRDeleteWhereMutation, _options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
33
|
+
/**
|
|
34
|
+
* Converts an IRUpdateWhereMutation to a SparqlDeleteInsertPlan.
|
|
35
|
+
*
|
|
36
|
+
* Like updateToAlgebra but uses a variable subject (?a0) instead of a
|
|
37
|
+
* hardcoded entity IRI, adds a type triple, and optionally includes
|
|
38
|
+
* filter conditions from the where clause.
|
|
39
|
+
*/
|
|
40
|
+
export declare function updateWhereToAlgebra(query: IRUpdateWhereMutation, options?: SparqlOptions): SparqlDeleteInsertPlan;
|
|
20
41
|
/**
|
|
21
42
|
* Converts an IRSelectQuery to a SPARQL string.
|
|
22
|
-
* Stub: will be implemented when algebraToString is available.
|
|
23
43
|
*/
|
|
24
44
|
export declare function selectToSparql(query: IRSelectQuery, options?: SparqlOptions): string;
|
|
25
45
|
/**
|
|
@@ -34,6 +54,17 @@ export declare function createToSparql(query: IRCreateMutation, options?: Sparql
|
|
|
34
54
|
export declare function updateToSparql(query: IRUpdateMutation, options?: SparqlOptions): string;
|
|
35
55
|
/**
|
|
36
56
|
* Converts an IRDeleteMutation to a SPARQL string.
|
|
37
|
-
* Stub: will be implemented when algebraToString is available.
|
|
38
57
|
*/
|
|
39
58
|
export declare function deleteToSparql(query: IRDeleteMutation, options?: SparqlOptions): string;
|
|
59
|
+
/**
|
|
60
|
+
* Converts an IRDeleteAllMutation to a SPARQL string.
|
|
61
|
+
*/
|
|
62
|
+
export declare function deleteAllToSparql(query: IRDeleteAllMutation, options?: SparqlOptions): string;
|
|
63
|
+
/**
|
|
64
|
+
* Converts an IRDeleteWhereMutation to a SPARQL string.
|
|
65
|
+
*/
|
|
66
|
+
export declare function deleteWhereToSparql(query: IRDeleteWhereMutation, options?: SparqlOptions): string;
|
|
67
|
+
/**
|
|
68
|
+
* Converts an IRUpdateWhereMutation to a SPARQL string.
|
|
69
|
+
*/
|
|
70
|
+
export declare function updateWhereToSparql(query: IRUpdateWhereMutation, options?: SparqlOptions): string;
|