@_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.
Files changed (75) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +50 -24
  3. package/lib/cjs/queries/DeleteBuilder.d.ts +17 -20
  4. package/lib/cjs/queries/DeleteBuilder.js +46 -19
  5. package/lib/cjs/queries/DeleteBuilder.js.map +1 -1
  6. package/lib/cjs/queries/DeleteQuery.d.ts +2 -2
  7. package/lib/cjs/queries/DeleteQuery.js.map +1 -1
  8. package/lib/cjs/queries/IRCanonicalize.d.ts +9 -2
  9. package/lib/cjs/queries/IRCanonicalize.js +6 -1
  10. package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
  11. package/lib/cjs/queries/IRDesugar.d.ts +19 -0
  12. package/lib/cjs/queries/IRDesugar.js +15 -9
  13. package/lib/cjs/queries/IRDesugar.js.map +1 -1
  14. package/lib/cjs/queries/IRLower.d.ts +10 -2
  15. package/lib/cjs/queries/IRLower.js +104 -2
  16. package/lib/cjs/queries/IRLower.js.map +1 -1
  17. package/lib/cjs/queries/IRMutation.d.ts +21 -1
  18. package/lib/cjs/queries/IRMutation.js +30 -1
  19. package/lib/cjs/queries/IRMutation.js.map +1 -1
  20. package/lib/cjs/queries/IntermediateRepresentation.d.ts +24 -2
  21. package/lib/cjs/queries/QueryBuilder.d.ts +14 -1
  22. package/lib/cjs/queries/QueryBuilder.js +59 -2
  23. package/lib/cjs/queries/QueryBuilder.js.map +1 -1
  24. package/lib/cjs/queries/UpdateBuilder.d.ts +20 -13
  25. package/lib/cjs/queries/UpdateBuilder.js +61 -11
  26. package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
  27. package/lib/cjs/queries/UpdateQuery.d.ts +2 -2
  28. package/lib/cjs/shapes/Shape.d.ts +6 -2
  29. package/lib/cjs/shapes/Shape.js +9 -5
  30. package/lib/cjs/shapes/Shape.js.map +1 -1
  31. package/lib/cjs/sparql/SparqlStore.js +15 -0
  32. package/lib/cjs/sparql/SparqlStore.js.map +1 -1
  33. package/lib/cjs/sparql/irToAlgebra.d.ts +34 -3
  34. package/lib/cjs/sparql/irToAlgebra.js +294 -35
  35. package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
  36. package/lib/cjs/test-helpers/query-fixtures.d.ts +1464 -16
  37. package/lib/cjs/test-helpers/query-fixtures.js +31 -2
  38. package/lib/cjs/test-helpers/query-fixtures.js.map +1 -1
  39. package/lib/esm/queries/DeleteBuilder.d.ts +17 -20
  40. package/lib/esm/queries/DeleteBuilder.js +46 -19
  41. package/lib/esm/queries/DeleteBuilder.js.map +1 -1
  42. package/lib/esm/queries/DeleteQuery.d.ts +2 -2
  43. package/lib/esm/queries/DeleteQuery.js.map +1 -1
  44. package/lib/esm/queries/IRCanonicalize.d.ts +9 -2
  45. package/lib/esm/queries/IRCanonicalize.js +6 -1
  46. package/lib/esm/queries/IRCanonicalize.js.map +1 -1
  47. package/lib/esm/queries/IRDesugar.d.ts +19 -0
  48. package/lib/esm/queries/IRDesugar.js +7 -2
  49. package/lib/esm/queries/IRDesugar.js.map +1 -1
  50. package/lib/esm/queries/IRLower.d.ts +10 -2
  51. package/lib/esm/queries/IRLower.js +102 -1
  52. package/lib/esm/queries/IRLower.js.map +1 -1
  53. package/lib/esm/queries/IRMutation.d.ts +21 -1
  54. package/lib/esm/queries/IRMutation.js +26 -0
  55. package/lib/esm/queries/IRMutation.js.map +1 -1
  56. package/lib/esm/queries/IntermediateRepresentation.d.ts +24 -2
  57. package/lib/esm/queries/QueryBuilder.d.ts +14 -1
  58. package/lib/esm/queries/QueryBuilder.js +59 -2
  59. package/lib/esm/queries/QueryBuilder.js.map +1 -1
  60. package/lib/esm/queries/UpdateBuilder.d.ts +20 -13
  61. package/lib/esm/queries/UpdateBuilder.js +61 -11
  62. package/lib/esm/queries/UpdateBuilder.js.map +1 -1
  63. package/lib/esm/queries/UpdateQuery.d.ts +2 -2
  64. package/lib/esm/shapes/Shape.d.ts +6 -2
  65. package/lib/esm/shapes/Shape.js +9 -5
  66. package/lib/esm/shapes/Shape.js.map +1 -1
  67. package/lib/esm/sparql/SparqlStore.js +16 -1
  68. package/lib/esm/sparql/SparqlStore.js.map +1 -1
  69. package/lib/esm/sparql/irToAlgebra.d.ts +34 -3
  70. package/lib/esm/sparql/irToAlgebra.js +288 -35
  71. package/lib/esm/sparql/irToAlgebra.js.map +1 -1
  72. package/lib/esm/test-helpers/query-fixtures.d.ts +1464 -16
  73. package/lib/esm/test-helpers/query-fixtures.js +31 -2
  74. package/lib/esm/test-helpers/query-fixtures.js.map +1 -1
  75. package/package.json +1 -1
@@ -1,6 +1,11 @@
1
1
  import { resolveShape } from './resolveShape.js';
2
2
  import { UpdateQueryFactory } from './UpdateQuery.js';
3
3
  import { getQueryDispatch } from './queryDispatch.js';
4
+ import { processWhereClause } from './SelectQuery.js';
5
+ import { buildCanonicalUpdateWhereMutationIR } from './IRMutation.js';
6
+ import { toWhere } from './IRDesugar.js';
7
+ import { canonicalizeWhere } from './IRCanonicalize.js';
8
+ import { lowerWhereToIR } from './IRLower.js';
4
9
  /**
5
10
  * An immutable, fluent builder for update mutations.
6
11
  *
@@ -9,20 +14,21 @@ import { getQueryDispatch } from './queryDispatch.js';
9
14
  * Implements PromiseLike so mutations execute on `await`:
10
15
  * ```ts
11
16
  * const result = await UpdateBuilder.from(Person).for({id: '...'}).set({name: 'Bob'});
17
+ * await UpdateBuilder.from(Person).set({hobby: 'x'}).forAll(); // returns void
12
18
  * ```
13
19
  *
14
- * `.for(id)` must be called before `.build()` or `.exec()`.
15
- *
16
- * Internally delegates to UpdateQueryFactory for IR generation.
20
+ * R is the resolved type: AddId<U> for ID-based, void for bulk operations.
17
21
  */
18
22
  export class UpdateBuilder {
19
23
  constructor(init) {
20
24
  this._shape = init.shape;
21
25
  this._data = init.data;
22
26
  this._targetId = init.targetId;
27
+ this._mode = init.mode;
28
+ this._whereFn = init.whereFn;
23
29
  }
24
30
  clone(overrides = {}) {
25
- return new UpdateBuilder(Object.assign({ shape: this._shape, data: this._data, targetId: this._targetId }, overrides));
31
+ return new UpdateBuilder(Object.assign({ shape: this._shape, data: this._data, targetId: this._targetId, mode: this._mode, whereFn: this._whereFn }, overrides));
26
32
  }
27
33
  // ---------------------------------------------------------------------------
28
34
  // Static constructors
@@ -34,31 +40,75 @@ export class UpdateBuilder {
34
40
  // ---------------------------------------------------------------------------
35
41
  // Fluent API
36
42
  // ---------------------------------------------------------------------------
37
- /** Target a specific entity by ID. Required before build/exec. */
43
+ /** Target a specific entity by ID. */
38
44
  for(id) {
39
45
  const resolvedId = typeof id === 'string' ? id : id.id;
40
- return this.clone({ targetId: resolvedId });
46
+ return this.clone({ targetId: resolvedId, mode: 'for' });
47
+ }
48
+ /** Update all instances of this shape type. Returns void. */
49
+ forAll() {
50
+ return this.clone({ mode: 'forAll', targetId: undefined, whereFn: undefined });
51
+ }
52
+ /** Update instances matching a condition. Returns void. */
53
+ where(fn) {
54
+ return this.clone({ mode: 'where', whereFn: fn, targetId: undefined });
41
55
  }
42
- /** Set the update data. */
56
+ /** Replace the update data. */
43
57
  set(data) {
44
58
  return this.clone({ data });
45
59
  }
46
60
  // ---------------------------------------------------------------------------
47
61
  // Build & execute
48
62
  // ---------------------------------------------------------------------------
49
- /** Build the IR mutation. Throws if no target ID was set via .for(). */
63
+ /** Build the IR mutation. */
50
64
  build() {
51
- if (!this._targetId) {
52
- throw new Error('UpdateBuilder requires .for(id) before .build(). Specify which entity to update.');
53
- }
54
65
  if (!this._data) {
55
66
  throw new Error('UpdateBuilder requires .set(data) before .build(). Specify what to update.');
56
67
  }
68
+ const mode = this._mode || (this._targetId ? 'for' : undefined);
69
+ if (mode === 'forAll') {
70
+ return this.buildUpdateWhere();
71
+ }
72
+ if (mode === 'where') {
73
+ if (!this._whereFn) {
74
+ throw new Error('UpdateBuilder.where() requires a condition callback.');
75
+ }
76
+ return this.buildUpdateWhere();
77
+ }
78
+ // Default: ID-based update
79
+ if (!this._targetId) {
80
+ throw new Error('UpdateBuilder requires .for(id), .forAll(), or .where() before .build().');
81
+ }
57
82
  const factory = new UpdateQueryFactory(this._shape, this._targetId, this._data);
58
83
  return factory.build();
59
84
  }
85
+ buildUpdateWhere() {
86
+ const factory = new UpdateQueryFactory(this._shape, '__placeholder__', // not used for where/forAll
87
+ this._data);
88
+ const description = factory.fields;
89
+ let where;
90
+ let wherePatterns;
91
+ if (this._whereFn) {
92
+ const wherePath = processWhereClause(this._whereFn, this._shape);
93
+ const desugared = toWhere(wherePath);
94
+ const canonical = canonicalizeWhere(desugared);
95
+ const lowered = lowerWhereToIR(canonical);
96
+ where = lowered.where;
97
+ wherePatterns = lowered.wherePatterns;
98
+ }
99
+ return buildCanonicalUpdateWhereMutationIR({
100
+ shape: this._shape.shape,
101
+ updates: description,
102
+ where,
103
+ wherePatterns,
104
+ });
105
+ }
60
106
  /** Execute the mutation. */
61
107
  exec() {
108
+ const mode = this._mode || (this._targetId ? 'for' : undefined);
109
+ if (mode === 'forAll' || mode === 'where') {
110
+ return getQueryDispatch().updateQuery(this.build()).then(() => undefined);
111
+ }
62
112
  return getQueryDispatch().updateQuery(this.build());
63
113
  }
64
114
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateBuilder.js","sourceRoot":"","sources":["../../../src/queries/UpdateBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAC,kBAAkB,EAAc,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAWpD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,aAAa;IAOxB,YAAoB,IAA0B;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,YAA2C,EAAE;QACzD,OAAO,IAAI,aAAa,iBACtB,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,IAAI,EAAE,IAAI,CAAC,KAAK,EAChB,QAAQ,EAAE,IAAI,CAAC,SAAS,IACrB,SAAS,EACZ,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CAAkB,KAAmC;QAC9D,MAAM,QAAQ,GAAG,YAAY,CAAI,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,aAAa,CAAI,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;IACjD,CAAC;IAED,8EAA8E;IAC9E,aAAa;IACb,8EAA8E;IAE9E,kEAAkE;IAClE,GAAG,CAAC,EAA+B;QACjC,MAAM,UAAU,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAC,CAAmC,CAAC;IAC9E,CAAC;IAED,2BAA2B;IAC3B,GAAG,CAAgC,IAAU;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,IAAI,EAAC,CAAsC,CAAC;IACjE,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAE9E,wEAAwE;IACxE,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,kBAAkB,CACpC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CACX,CAAC;QACF,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,4BAA4B;IAC5B,IAAI;QACF,OAAO,gBAAgB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAsB,CAAC;IAC3E,CAAC;IAED,8EAA8E;IAC9E,oBAAoB;IACpB,8EAA8E;IAE9E,IAAI,CACF,WAA4E,EAC5E,UAAuE;QAEvE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CACH,UAAqE;QAErE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,SAA+B;QACrC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,eAAe,CAAC;IACzB,CAAC;CACF"}
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?: U): UpdateBuilder<S, U>;
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
  }
@@ -66,11 +66,7 @@ export class Shape {
66
66
  * ```
67
67
  */
68
68
  static update(data) {
69
- let builder = UpdateBuilder.from(this);
70
- if (data) {
71
- builder = builder.set(data);
72
- }
73
- return builder;
69
+ return UpdateBuilder.from(this).set(data);
74
70
  }
75
71
  static create(updateObjectOrFn) {
76
72
  let builder = CreateBuilder.from(this);
@@ -82,6 +78,14 @@ export class Shape {
82
78
  static delete(id) {
83
79
  return DeleteBuilder.from(this, id);
84
80
  }
81
+ /** Delete all instances of this shape type. Returns void. */
82
+ static deleteAll() {
83
+ return DeleteBuilder.from(this).all();
84
+ }
85
+ /** Delete instances matching a condition. Sugar for `.delete().where(fn)`. Returns void. */
86
+ static deleteWhere(fn) {
87
+ return DeleteBuilder.from(this).where(fn);
88
+ }
85
89
  static mapPropertyShapes(mapFunction) {
86
90
  // SAFETY: dummyShape is used as a dynamic proxy target — we assign .proxy and
87
91
  // 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":"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"}
1
+ {"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../src/shapes/Shape.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { selectToSparql, createToSparql, updateToSparql, deleteToSparql, } from './irToAlgebra.js';
10
+ import { selectToSparql, createToSparql, updateToSparql, updateWhereToSparql, deleteToSparql, deleteAllToSparql, deleteWhereToSparql, } from './irToAlgebra.js';
11
11
  import { mapSparqlSelectResult, mapSparqlCreateResult, mapSparqlUpdateResult, } from './resultMapping.js';
12
12
  import { generateEntityUri } from './sparqlUtils.js';
13
13
  /**
@@ -58,6 +58,11 @@ export class SparqlStore {
58
58
  }
59
59
  updateQuery(query) {
60
60
  return __awaiter(this, void 0, void 0, function* () {
61
+ if (query.kind === 'update_where') {
62
+ const sparql = updateWhereToSparql(query, this.options);
63
+ yield this.executeSparqlUpdate(sparql);
64
+ return { id: '' };
65
+ }
61
66
  const sparql = updateToSparql(query, this.options);
62
67
  yield this.executeSparqlUpdate(sparql);
63
68
  return mapSparqlUpdateResult(query);
@@ -65,6 +70,16 @@ export class SparqlStore {
65
70
  }
66
71
  deleteQuery(query) {
67
72
  return __awaiter(this, void 0, void 0, function* () {
73
+ if (query.kind === 'delete_all') {
74
+ const sparql = deleteAllToSparql(query, this.options);
75
+ yield this.executeSparqlUpdate(sparql);
76
+ return { deleted: [], count: 0 };
77
+ }
78
+ if (query.kind === 'delete_where') {
79
+ const sparql = deleteWhereToSparql(query, this.options);
80
+ yield this.executeSparqlUpdate(sparql);
81
+ return { deleted: [], count: 0 };
82
+ }
68
83
  const sparql = deleteToSparql(query, this.options);
69
84
  yield this.executeSparqlUpdate(sparql);
70
85
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"SparqlStore.js","sourceRoot":"","sources":["../../../src/sparql/SparqlStore.ts"],"names":[],"mappings":";;;;;;;;;AAWA,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,iBAAiB,EAAqB,MAAM,kBAAkB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAgB,WAAW;IAG/B,YAAY,OAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAgBK,WAAW,CAAC,KAAkB;;YAClC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACpB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,MAAM,MAAM,GAAG,cAAc,CAAC,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"}
1
+ {"version":3,"file":"SparqlStore.js","sourceRoot":"","sources":["../../../src/sparql/SparqlStore.ts"],"names":[],"mappings":"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"}
@@ -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;