@_linked/core 2.8.0-next.20260620150524 → 2.8.0-next.20260624103825

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 (62) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/lib/cjs/index.d.ts +3 -0
  3. package/lib/cjs/index.js +9 -1
  4. package/lib/cjs/index.js.map +1 -1
  5. package/lib/cjs/ontologies/linked-core.d.ts +3 -0
  6. package/lib/cjs/ontologies/linked-core.js +10 -0
  7. package/lib/cjs/ontologies/linked-core.js.map +1 -1
  8. package/lib/cjs/ontologies/shacl.d.ts +7 -0
  9. package/lib/cjs/ontologies/shacl.js +14 -0
  10. package/lib/cjs/ontologies/shacl.js.map +1 -1
  11. package/lib/cjs/shapes/List.d.ts +27 -8
  12. package/lib/cjs/shapes/List.js +36 -28
  13. package/lib/cjs/shapes/List.js.map +1 -1
  14. package/lib/cjs/shapes/PathNode.d.ts +20 -0
  15. package/lib/cjs/shapes/PathNode.js +81 -0
  16. package/lib/cjs/shapes/PathNode.js.map +1 -0
  17. package/lib/cjs/shapes/SHACL.d.ts +19 -0
  18. package/lib/cjs/shapes/SHACL.js +3 -0
  19. package/lib/cjs/shapes/SHACL.js.map +1 -1
  20. package/lib/cjs/shapes/serializePathToNodeData.d.ts +24 -0
  21. package/lib/cjs/shapes/serializePathToNodeData.js +51 -0
  22. package/lib/cjs/shapes/serializePathToNodeData.js.map +1 -0
  23. package/lib/cjs/shapes/syncShapes.d.ts +14 -0
  24. package/lib/cjs/shapes/syncShapes.js +141 -0
  25. package/lib/cjs/shapes/syncShapes.js.map +1 -0
  26. package/lib/cjs/sparql/irToAlgebra.d.ts +10 -1
  27. package/lib/cjs/sparql/irToAlgebra.js +137 -4
  28. package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
  29. package/lib/cjs/utils/Package.d.ts +14 -0
  30. package/lib/cjs/utils/Package.js +43 -2
  31. package/lib/cjs/utils/Package.js.map +1 -1
  32. package/lib/esm/index.d.ts +3 -0
  33. package/lib/esm/index.js +5 -0
  34. package/lib/esm/index.js.map +1 -1
  35. package/lib/esm/ontologies/linked-core.d.ts +3 -0
  36. package/lib/esm/ontologies/linked-core.js +10 -0
  37. package/lib/esm/ontologies/linked-core.js.map +1 -1
  38. package/lib/esm/ontologies/shacl.d.ts +7 -0
  39. package/lib/esm/ontologies/shacl.js +14 -0
  40. package/lib/esm/ontologies/shacl.js.map +1 -1
  41. package/lib/esm/shapes/List.d.ts +27 -8
  42. package/lib/esm/shapes/List.js +35 -28
  43. package/lib/esm/shapes/List.js.map +1 -1
  44. package/lib/esm/shapes/PathNode.d.ts +20 -0
  45. package/lib/esm/shapes/PathNode.js +78 -0
  46. package/lib/esm/shapes/PathNode.js.map +1 -0
  47. package/lib/esm/shapes/SHACL.d.ts +19 -0
  48. package/lib/esm/shapes/SHACL.js +3 -0
  49. package/lib/esm/shapes/SHACL.js.map +1 -1
  50. package/lib/esm/shapes/serializePathToNodeData.d.ts +24 -0
  51. package/lib/esm/shapes/serializePathToNodeData.js +48 -0
  52. package/lib/esm/shapes/serializePathToNodeData.js.map +1 -0
  53. package/lib/esm/shapes/syncShapes.d.ts +14 -0
  54. package/lib/esm/shapes/syncShapes.js +138 -0
  55. package/lib/esm/shapes/syncShapes.js.map +1 -0
  56. package/lib/esm/sparql/irToAlgebra.d.ts +10 -1
  57. package/lib/esm/sparql/irToAlgebra.js +136 -4
  58. package/lib/esm/sparql/irToAlgebra.js.map +1 -1
  59. package/lib/esm/utils/Package.d.ts +14 -0
  60. package/lib/esm/utils/Package.js +43 -2
  61. package/lib/esm/utils/Package.js.map +1 -1
  62. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -25,6 +25,46 @@
25
25
 
26
26
  **Breaking:** generated shape/package/term IRIs change. Consumers that hardcoded `data.lincd.org` IRIs, imported `LINCD_DATA_ROOT`, or used the `lincd` ontology export must update. Stored data keyed on the old IRIs needs migration.
27
27
 
28
+ - [#97](https://github.com/linked-cm/core/pull/97) [`7c2fea9`](https://github.com/linked-cm/core/commit/7c2fea984e53115b7a85dbe4ced2ca18a2b94f4f) Thanks [@flyon](https://github.com/flyon)! - Serialize code-defined SHACL shapes into the store and keep them in sync.
29
+
30
+ **New exports**
31
+
32
+ - `syncShapes(): Promise<Array<() => Promise<void>>>` — materializes every code-registered
33
+ (non-framework) `NodeShape` into the store as SHACL data. Returns built-but-unexecuted thunks so the
34
+ caller controls execution/batching; each thunk runs `delete → recreate` for one shape (cascade-cleaning
35
+ its old property shapes / list / path subtrees), plus orphan-delete thunks for shapes removed from code.
36
+ ```ts
37
+ import { syncShapes } from "@_linked/core";
38
+ await Promise.all((await syncShapes()).map((run) => run()));
39
+ ```
40
+ - `rdfList(items, {base?})` — builds an ordered `rdf:List` (nested `List` node-data) for use in any
41
+ create/update, so ordered collections (and `sh:in`) round-trip instead of becoming unordered sets:
42
+ ```ts
43
+ Playlist.create({ tracks: rdfList([t1, t2, t3]) });
44
+ ```
45
+ - `serializePathToNodeData(pathExpr, baseIri)` — translates a `PathExpr` to `sh:path` node-data
46
+ (predicate IRI / `rdf:List` sequence / `PathNode` for inverse·alternative·cardinality).
47
+ - `PathNode` shape (`linked:PathNode`) — operator node for complex property paths.
48
+
49
+ **New composition flags (delete/update cascade)**
50
+
51
+ - `@objectProperty({ …, contains: true })` marks a property as owning its value(s); `@linkedShape({
52
+ dependent: true })` marks a shape whose instances may be cascade-deleted when reached through a
53
+ `contains` edge. Deleting or replacing a `contains` property now removes the whole owned subtree
54
+ (e.g. an `rdf:List` spine or a `sh:path` operator tree), while shared predicate/value IRIs and
55
+ `rdf:nil` are preserved.
56
+ - `@linkedShape({ closed: true, ignoredProperties: [...] })` now persist as `sh:closed` /
57
+ `sh:ignoredProperties`.
58
+
59
+ **New SHACL/ontology terms:** `sh:equals`, `sh:disjoint`, `sh:hasValue`, `sh:order`, `sh:group`,
60
+ `sh:closed`, `sh:ignoredProperties`; `linked_core:contains`, `linked_core:dependent`, `linked_core:PathNode`.
61
+
62
+ **Potentially breaking:** the `List` shape was rewritten to a pure `rdf:List` cell shape — its former
63
+ in-memory helpers (`fromItems`, `getContents`, `addItem(s)`, `isEmpty`, `items`) were removed. Use
64
+ `rdfList()` to build lists. `List` had no RDF-backed consumers, so most users are unaffected.
65
+
66
+ See `docs/reports/016-shacl-rdf-serialization.md` for the full design, cascade mechanics, and test coverage.
67
+
28
68
  - [#91](https://github.com/linked-cm/core/pull/91) [`46b519e`](https://github.com/linked-cm/core/commit/46b519eae3abf9a243f2f04acb04e338635b2e6a) Thanks [@flyon](https://github.com/flyon)! - SPARQL generation: structured property paths on named properties, and inner pagination for nested selects.
29
69
 
30
70
  **Structured `sh:path` on named properties now resolve correctly.** A query that references a named property whose SHACL `sh:path` is structured (a sequence `[a, b]`, an inverse `^p`, or an alternative `a|b`) previously collapsed to a shadow IRI and matched nothing. It now emits the correct SPARQL property-path predicate. Simple single-predicate properties are unaffected (output unchanged).
@@ -86,6 +126,75 @@
86
126
  semantics, and paginated nested selects (inner `LIMIT`/`OFFSET`) are still
87
127
  emitted as sub-SELECTs.
88
128
 
129
+ ## 2.7.0
130
+
131
+ ### Minor Changes
132
+
133
+ - [#93](https://github.com/linked-cm/core/pull/93) [`89b3f55`](https://github.com/linked-cm/core/commit/89b3f5503329d88d0e6d9fe0a2a1418e06a58252) Thanks [@flyon](https://github.com/flyon)! - Development-mode source resolution and an instance-count diagnostic.
134
+
135
+ - **Conditional `development` exports.** `package.json` now declares a `development` export condition resolving to `./src/*.ts` (and `./src/index.ts` for the root). Vite's browser-side resolver picks the TypeScript source in dev mode, enabling HMR-on-source for `@_linked/core` from a consuming app. Production resolution (`import` → `lib/esm`, `require` → `lib/cjs`, `types`) is unchanged.
136
+ - **`LinkedStorage.getLoadedInstanceCount(): number`** — new public static method reporting how many `@_linked/core` instances are registered on the global tree (a diagnostic for the Vite-SSR-vs-Node-resolver dual-load split).
137
+
138
+ - [#93](https://github.com/linked-cm/core/pull/93) [`89b3f55`](https://github.com/linked-cm/core/commit/89b3f5503329d88d0e6d9fe0a2a1418e06a58252) Thanks [@flyon](https://github.com/flyon)! - Shape, package, and framework-vocabulary IRIs now use the canonical `linked.cm` namespace, with a configurable per-package publish root.
139
+
140
+ **New scheme (arch-aligned):**
141
+
142
+ - Shape IRIs: `https://linked.cm/shape/{packageSlug}/{ShapeName}` (PascalCase shape name; previously `https://data.lincd.org/module/{sanitized}/shape/{lowercased}`).
143
+ - Package IRIs: `https://linked.cm/pkg/{packageSlug}` (previously `…/module/{name}`).
144
+ - Framework vocabulary: `https://linked.cm/ont/linked-core/` (prefix `linked_core`; previously `https://purl.org/on/lincd/`, prefix `lincd`). The `Module` term is renamed to `Package`.
145
+
146
+ **New / changed public API:**
147
+
148
+ - `linkedPackage(name, { baseUri? })` — packages declare where they publish. `baseUri` defaults to `https://linked.cm/` (first-party); CN injects a workspace-scoped root (`{workspaceSlug}.id.create.now`) for private packages. The IRI slug is the package **basename** with the npm scope dropped (`@_linked/core` → `core`, `@linked.cm/blog` → `blog`); there is no separate slug param. Slugs must be globally unique within the publish root — the registry enforces this and reserves the first-party (`@_linked`) names.
149
+ - New exports `LINKED_DATA_ROOT`, `getPackageUri()`, `setPackagePublishConfig()`, `packageNameToSlug()` (replaces the removed `LINCD_DATA_ROOT`).
150
+ - The framework ontology export is now `coreOntology` (was `lincd`).
151
+
152
+ **Breaking:** generated shape/package/term IRIs change. Consumers that hardcoded `data.lincd.org` IRIs, imported `LINCD_DATA_ROOT`, or used the `lincd` ontology export must update. Stored data keyed on the old IRIs needs migration.
153
+
154
+ - [#93](https://github.com/linked-cm/core/pull/93) [`89b3f55`](https://github.com/linked-cm/core/commit/89b3f5503329d88d0e6d9fe0a2a1418e06a58252) Thanks [@flyon](https://github.com/flyon)! - SPARQL generation: structured property paths on named properties, and inner pagination for nested selects.
155
+
156
+ **Structured `sh:path` on named properties now resolve correctly.** A query that references a named property whose SHACL `sh:path` is structured (a sequence `[a, b]`, an inverse `^p`, or an alternative `a|b`) previously collapsed to a shadow IRI and matched nothing. It now emits the correct SPARQL property-path predicate. Simple single-predicate properties are unaffected (output unchanged).
157
+
158
+ **Nested selects can now bound a related collection with `.limit()` / `.offset()` / `.orderBy()`** — when the outer query targets a single subject:
159
+
160
+ ```ts
161
+ // Up to 2 friends, ordered, for one person
162
+ Person.select((p) =>
163
+ p.friends
164
+ .select((f) => f.name)
165
+ .orderBy((f) => f.name)
166
+ .limit(2)
167
+ ).for({ id });
168
+ ```
169
+
170
+ This emits a real SPARQL sub-`SELECT … ORDER BY … LIMIT … OFFSET …` that bounds the collection per parent. `orderBy` accepts a proxy callback (`f => f.name`) or a property-name string and defaults to ascending.
171
+
172
+ Notes:
173
+
174
+ - Per-group pagination across **multiple** parents is not supported and now throws a clear error instead of silently applying a global limit. The same applies to `.limit()` on a deeper (grandchild) collection, and to `.limit()` called directly on a traversal without `.select(...)`.
175
+ - Queries with no inner pagination are emitted exactly as before.
176
+
177
+ ### Patch Changes
178
+
179
+ - [#93](https://github.com/linked-cm/core/pull/93) [`89b3f55`](https://github.com/linked-cm/core/commit/89b3f5503329d88d0e6d9fe0a2a1418e06a58252) Thanks [@flyon](https://github.com/flyon)! - `initTree()` is now idempotent: if `global.lincd` already exists (which
180
+ happens structurally under Vite SSR — Vite resolves `@_linked/core/utils/Package`
181
+ from `src/`, and any `/* @vite-ignore */` dynamic import via Node's resolver
182
+ gets it from `lib/esm/`), the function attaches to the existing registry
183
+ instead of throwing or warning.
184
+
185
+ Previous behavior used a `_lincdMultiWarned` one-shot flag that logged a
186
+ warning on the second initialization. This was framed as "interim" but
187
+ was actually the correct semantic for the Vite-SSR-vs-Node-resolver split.
188
+ The new code expresses the same behavior as the explicit design rather
189
+ than as a workaround.
190
+
191
+ No API change. Existing consumers see the same `lincd` global tree they
192
+ saw before. Apps that previously saw "Multiple versions of Linked are
193
+ loaded — accepted during HMR/Vite interim" in their dev log will no
194
+ longer see that line.
195
+
196
+ Context: see create-now plan-011 report (docs/reports/009-legacy-lincd-eradication.md).
197
+
89
198
  ## 2.6.0
90
199
 
91
200
  ### Minor Changes
@@ -1,3 +1,6 @@
1
+ export { syncShapes } from './shapes/syncShapes.js';
2
+ export { rdfList } from './shapes/List.js';
3
+ export { serializePathToNodeData } from './shapes/serializePathToNodeData.js';
1
4
  export { QueryBuilder } from './queries/QueryBuilder.js';
2
5
  export { PropertyPath, walkPropertyPath } from './queries/PropertyPath.js';
3
6
  export type { WhereCondition, WhereOperator } from './queries/WhereCondition.js';
package/lib/cjs/index.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Expr = exports.ExpressionNode = exports.DeleteBuilder = exports.UpdateBuilder = exports.CreateBuilder = exports.FieldSet = exports.walkPropertyPath = exports.PropertyPath = exports.QueryBuilder = void 0;
36
+ exports.Expr = exports.ExpressionNode = exports.DeleteBuilder = exports.UpdateBuilder = exports.CreateBuilder = exports.FieldSet = exports.walkPropertyPath = exports.PropertyPath = exports.QueryBuilder = exports.serializePathToNodeData = exports.rdfList = exports.syncShapes = void 0;
37
37
  exports.initModularApp = initModularApp;
38
38
  /*
39
39
  * This Source Code Form is subject to the terms of the Mozilla Public
@@ -63,6 +63,13 @@ const NameSpace = __importStar(require("./utils/NameSpace.js"));
63
63
  const ShapeClass = __importStar(require("./utils/ShapeClass.js"));
64
64
  const cached = __importStar(require("./utils/cached.js"));
65
65
  const List = __importStar(require("./shapes/List.js"));
66
+ const PathNode = __importStar(require("./shapes/PathNode.js"));
67
+ var syncShapes_js_1 = require("./shapes/syncShapes.js");
68
+ Object.defineProperty(exports, "syncShapes", { enumerable: true, get: function () { return syncShapes_js_1.syncShapes; } });
69
+ var List_js_1 = require("./shapes/List.js");
70
+ Object.defineProperty(exports, "rdfList", { enumerable: true, get: function () { return List_js_1.rdfList; } });
71
+ var serializePathToNodeData_js_1 = require("./shapes/serializePathToNodeData.js");
72
+ Object.defineProperty(exports, "serializePathToNodeData", { enumerable: true, get: function () { return serializePathToNodeData_js_1.serializePathToNodeData; } });
66
73
  const ICoreIterable = __importStar(require("./interfaces/ICoreIterable.js"));
67
74
  const IFileStore = __importStar(require("./interfaces/IFileStore.js"));
68
75
  const IDataset = __importStar(require("./interfaces/IDataset.js"));
@@ -118,6 +125,7 @@ function initModularApp() {
118
125
  URI,
119
126
  ShapeClass,
120
127
  List,
128
+ PathNode,
121
129
  ICoreIterable,
122
130
  IFileStore,
123
131
  IDataset,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,wCAwDC;AAxID;;;;GAIG;AACH,4DAA8C;AAC9C,kFAAoE;AACpE,gFAAkE;AAClE,wEAA0D;AAC1D,kEAAoD;AACpD,kEAAoD;AACpD,yDAA2C;AAC3C,+DAAiD;AACjD,oEAAsD;AACtD,0DAA4C;AAC5C,oDAAsC;AACtC,sEAAwD;AACxD,sEAAwD;AACxD,0EAA4D;AAC5D,sEAAwD;AACxD,sEAAwD;AACxD,0EAA4D;AAC5D,wEAA0D;AAC1D,oGAAsF;AACtF,gEAAkD;AAClD,kEAAoD;AACpD,0DAA4C;AAC5C,uDAAyC;AACzC,6EAA+D;AAC/D,uEAAyD;AACzD,mEAAqD;AACrD,yDAA2C;AAC3C,2DAA6C;AAC7C,yDAA2C;AAC3C,6DAA+C;AAC/C,0EAA4D;AAC5D,yDAA2C;AAC3C,yDAA2C;AAC3C,0DAA4C;AAC5C,8EAAgE;AAChE,8EAAgE;AAChE,kFAAoE;AACpE,sEAAwD;AACxD,gFAAkE;AAClE,gFAAkE;AAClE,gFAAkE;AAClE,2CAA2C;AAC3C,6DAAuD;AAA/C,+GAAA,YAAY,OAAA;AACpB,6DAAyE;AAAjE,+GAAA,YAAY,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AAGtC,sBAAsB;AACtB,qDAA+C;AAAvC,uGAAA,QAAQ,OAAA;AAMhB,+BAA+B;AAC/B,+DAAyD;AAAjD,iHAAA,aAAa,OAAA;AACrB,+DAAyD;AAAjD,iHAAA,aAAa,OAAA;AACrB,+DAAyD;AAAjD,iHAAA,aAAa,OAAA;AAErB,8CAA8C;AAC9C,qEAA+D;AAAvD,mHAAA,cAAc,OAAA;AAEtB,iDAA2C;AAAnC,+FAAA,IAAI,OAAA;AAcZ,SAAgB,cAAc;IAC5B,IAAI,WAAW,GAAG;QAChB,OAAO;QACP,kBAAkB;QAClB,iBAAiB;QACjB,aAAa;QACb,OAAO;QACP,OAAO;QACP,KAAK;QACL,QAAQ;QACR,MAAM;QACN,SAAS;QACT,MAAM;QACN,GAAG;QACH,UAAU;QACV,IAAI;QACJ,aAAa;QACb,UAAU;QACV,QAAQ;QACR,WAAW;QACX,WAAW;QACX,aAAa;QACb,WAAW;QACX,WAAW;QACX,aAAa;QACb,YAAY;QACZ,0BAA0B;QAC1B,WAAW;QACX,GAAG;QACH,IAAI;QACJ,GAAG;QACH,KAAK;QACL,YAAY;QACZ,GAAG;QACH,GAAG;QACH,MAAM;QACN,kBAAkB;QAClB,kBAAkB;QAClB,oBAAoB;QACpB,cAAc;QACd,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;KACpB,CAAC;IACF,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,KAAK,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,IAAI,SAAS,IAAI,eAAe,EAAE,CAAC;YACtC,WAAW,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,7 @@ export declare const coreOntology: {
9
9
  usesShapeClass: NodeReferenceValue;
10
10
  editInline: NodeReferenceValue;
11
11
  isExtending: NodeReferenceValue;
12
+ contains: NodeReferenceValue;
13
+ dependent: NodeReferenceValue;
14
+ PathNode: NodeReferenceValue;
12
15
  };
@@ -16,6 +16,13 @@ const moduleProperty = (0, exports.ns)('module');
16
16
  const usesShapeClass = (0, exports.ns)('usesShapeClass');
17
17
  const editInline = (0, exports.ns)('editInline');
18
18
  const isExtending = (0, exports.ns)('isExtending');
19
+ // Containment / lifecycle vocabulary.
20
+ // contains — property characteristic: the cascade follows this edge (composition).
21
+ // dependent — shape characteristic: instances may be deleted when reached via a `contains` edge.
22
+ // PathNode — class for SHACL property-path operator nodes (sh:inversePath/alternativePath/…).
23
+ const contains = (0, exports.ns)('contains');
24
+ const dependent = (0, exports.ns)('dependent');
25
+ const PathNode = (0, exports.ns)('PathNode');
19
26
  exports.coreOntology = {
20
27
  Package,
21
28
  ShapeClass,
@@ -24,5 +31,8 @@ exports.coreOntology = {
24
31
  usesShapeClass,
25
32
  editInline,
26
33
  isExtending,
34
+ contains,
35
+ dependent,
36
+ PathNode,
27
37
  };
28
38
  //# sourceMappingURL=linked-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linked-core.js","sourceRoot":"","sources":["../../../src/ontologies/linked-core.ts"],"names":[],"mappings":";;;AACA,wDAAsD;AACtD,kDAA0C;AAE1C,+EAA+E;AAC/E,sFAAsF;AACtF,qDAAqD;AACxC,QAAA,EAAE,GAAG,IAAA,8BAAe,EAAC,oCAAoC,CAAC,CAAC;AAC3D,QAAA,KAAK,GAAuB,IAAA,UAAE,EAAC,EAAE,CAAC,CAAC;AAChD,kBAAM,CAAC,GAAG,CAAC,aAAa,EAAE,aAAK,CAAC,EAAE,CAAC,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAA,UAAE,EAAC,SAAS,CAAC,CAAC;AAC9B,MAAM,UAAU,GAAG,IAAA,UAAE,EAAC,YAAY,CAAC,CAAC;AACpC,MAAM,YAAY,GAAG,IAAA,UAAE,EAAC,cAAc,CAAC,CAAC;AACxC,MAAM,cAAc,GAAG,IAAA,UAAE,EAAC,QAAQ,CAAC,CAAC;AACpC,MAAM,cAAc,GAAG,IAAA,UAAE,EAAC,gBAAgB,CAAC,CAAC;AAC5C,MAAM,UAAU,GAAG,IAAA,UAAE,EAAC,YAAY,CAAC,CAAC;AACpC,MAAM,WAAW,GAAG,IAAA,UAAE,EAAC,aAAa,CAAC,CAAC;AAEzB,QAAA,YAAY,GAAG;IAC1B,OAAO;IACP,UAAU;IACV,YAAY;IACZ,MAAM,EAAE,cAAc;IACtB,cAAc;IACd,UAAU;IACV,WAAW;CACZ,CAAC"}
1
+ {"version":3,"file":"linked-core.js","sourceRoot":"","sources":["../../../src/ontologies/linked-core.ts"],"names":[],"mappings":";;;AACA,wDAAsD;AACtD,kDAA0C;AAE1C,+EAA+E;AAC/E,sFAAsF;AACtF,qDAAqD;AACxC,QAAA,EAAE,GAAG,IAAA,8BAAe,EAAC,oCAAoC,CAAC,CAAC;AAC3D,QAAA,KAAK,GAAuB,IAAA,UAAE,EAAC,EAAE,CAAC,CAAC;AAChD,kBAAM,CAAC,GAAG,CAAC,aAAa,EAAE,aAAK,CAAC,EAAE,CAAC,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAA,UAAE,EAAC,SAAS,CAAC,CAAC;AAC9B,MAAM,UAAU,GAAG,IAAA,UAAE,EAAC,YAAY,CAAC,CAAC;AACpC,MAAM,YAAY,GAAG,IAAA,UAAE,EAAC,cAAc,CAAC,CAAC;AACxC,MAAM,cAAc,GAAG,IAAA,UAAE,EAAC,QAAQ,CAAC,CAAC;AACpC,MAAM,cAAc,GAAG,IAAA,UAAE,EAAC,gBAAgB,CAAC,CAAC;AAC5C,MAAM,UAAU,GAAG,IAAA,UAAE,EAAC,YAAY,CAAC,CAAC;AACpC,MAAM,WAAW,GAAG,IAAA,UAAE,EAAC,aAAa,CAAC,CAAC;AAEtC,sCAAsC;AACtC,sFAAsF;AACtF,mGAAmG;AACnG,iGAAiG;AACjG,MAAM,QAAQ,GAAG,IAAA,UAAE,EAAC,UAAU,CAAC,CAAC;AAChC,MAAM,SAAS,GAAG,IAAA,UAAE,EAAC,WAAW,CAAC,CAAC;AAClC,MAAM,QAAQ,GAAG,IAAA,UAAE,EAAC,UAAU,CAAC,CAAC;AAEnB,QAAA,YAAY,GAAG;IAC1B,OAAO;IACP,UAAU;IACV,YAAY;IACZ,MAAM,EAAE,cAAc;IACtB,cAAc;IACd,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;IACT,QAAQ;CACT,CAAC"}
@@ -59,6 +59,13 @@ export declare const shacl: {
59
59
  IRIOrLiteral: NodeReferenceValue;
60
60
  nodeKind: NodeReferenceValue;
61
61
  inList: NodeReferenceValue;
62
+ equals: NodeReferenceValue;
63
+ disjoint: NodeReferenceValue;
64
+ hasValue: NodeReferenceValue;
65
+ order: NodeReferenceValue;
66
+ group: NodeReferenceValue;
67
+ closed: NodeReferenceValue;
68
+ ignoredProperties: NodeReferenceValue;
62
69
  languageIn: NodeReferenceValue;
63
70
  lessThan: NodeReferenceValue;
64
71
  lessThanOrEquals: NodeReferenceValue;
@@ -30,6 +30,13 @@ const targetNode = (0, exports.ns)('targetNode');
30
30
  const node = (0, exports.ns)('node');
31
31
  const nodeKind = (0, exports.ns)('nodeKind');
32
32
  const Shape = (0, exports.ns)('Shape');
33
+ const equals = (0, exports.ns)('equals');
34
+ const disjoint = (0, exports.ns)('disjoint');
35
+ const hasValue = (0, exports.ns)('hasValue');
36
+ const order = (0, exports.ns)('order');
37
+ const group = (0, exports.ns)('group');
38
+ const closed = (0, exports.ns)('closed');
39
+ const ignoredProperties = (0, exports.ns)('ignoredProperties');
33
40
  const alternativePath = (0, exports.ns)('alternativePath');
34
41
  const inversePath = (0, exports.ns)('inversePath');
35
42
  const zeroOrMorePath = (0, exports.ns)('zeroOrMorePath');
@@ -100,6 +107,13 @@ exports.shacl = {
100
107
  IRIOrLiteral,
101
108
  nodeKind,
102
109
  inList,
110
+ equals,
111
+ disjoint,
112
+ hasValue,
113
+ order,
114
+ group,
115
+ closed,
116
+ ignoredProperties,
103
117
  languageIn: exports.languageIn,
104
118
  lessThan: exports.lessThan,
105
119
  lessThanOrEquals: exports.lessThanOrEquals,
@@ -1 +1 @@
1
- {"version":3,"file":"shacl.js","sourceRoot":"","sources":["../../../src/ontologies/shacl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shacl.js","sourceRoot":"","sources":["../../../src/ontologies/shacl.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,35 @@
1
1
  import { Shape } from './Shape.js';
2
2
  /**
3
- * A lightweight list shape for query metadata.
4
- * This is no longer backed by RDF list quads in core.
3
+ * SHACL/RDF ordered-list cell shape (`rdf:List`).
4
+ *
5
+ * A list is a chain of cells: `first` holds the value, `rest` points to the next cell
6
+ * (or `rdf:nil`). The cell is `dependent` (it has no independent existence) and `rest` is
7
+ * a `contains` edge, so deleting/replacing a list cascade-cleans the whole spine — while
8
+ * `first` is NOT a `contains` edge, so the list's *contents* (shared IRIs/values) are kept.
5
9
  */
6
10
  export declare class List<T = unknown> extends Shape {
7
11
  static targetClass: import("../utils/NodeReference.js").NodeReferenceValue;
8
12
  get first(): T;
9
13
  get rest(): List<T>;
10
- private items;
11
- static fromItems<T>(items: T[]): List<T>;
12
- getContents(): T[];
13
- isEmpty(): boolean;
14
- addItem(item: T): void;
15
- addItems(items: T[]): void;
16
14
  }
15
+ /**
16
+ * Node-data for a single cell / the `rdf:nil` terminal. Accepted by the create pipeline.
17
+ */
18
+ export type RdfListNodeData = {
19
+ id: string;
20
+ } | {
21
+ shape: typeof List;
22
+ first: unknown;
23
+ rest: RdfListNodeData;
24
+ __id?: string;
25
+ };
26
+ /**
27
+ * Build the nested `List` node-data chain for an ordered `rdf:List`, terminating at `rdf:nil`.
28
+ * Pass `opts.base` to mint deterministic cell ids (`{base}/0`, `{base}/1`, …); otherwise the
29
+ * create pipeline mints ids. The empty list serializes to `rdf:nil`.
30
+ *
31
+ * @example Playlist.create({ tracks: rdfList([t1, t2, t3]) })
32
+ */
33
+ export declare function rdfList<T>(items: T[], opts?: {
34
+ base?: string;
35
+ }): RdfListNodeData;
@@ -8,9 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var List_1;
12
11
  Object.defineProperty(exports, "__esModule", { value: true });
13
12
  exports.List = void 0;
13
+ exports.rdfList = rdfList;
14
14
  /*
15
15
  * This Source Code Form is subject to the terms of the Mozilla Public
16
16
  * License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -21,37 +21,20 @@ const Shape_js_1 = require("./Shape.js");
21
21
  const SHACL_js_1 = require("./SHACL.js");
22
22
  const rdf_js_1 = require("../ontologies/rdf.js");
23
23
  /**
24
- * A lightweight list shape for query metadata.
25
- * This is no longer backed by RDF list quads in core.
24
+ * SHACL/RDF ordered-list cell shape (`rdf:List`).
25
+ *
26
+ * A list is a chain of cells: `first` holds the value, `rest` points to the next cell
27
+ * (or `rdf:nil`). The cell is `dependent` (it has no independent existence) and `rest` is
28
+ * a `contains` edge, so deleting/replacing a list cascade-cleans the whole spine — while
29
+ * `first` is NOT a `contains` edge, so the list's *contents* (shared IRIs/values) are kept.
26
30
  */
27
- let List = List_1 = class List extends Shape_js_1.Shape {
28
- constructor() {
29
- super(...arguments);
30
- this.items = [];
31
- }
31
+ let List = class List extends Shape_js_1.Shape {
32
32
  get first() {
33
33
  return null;
34
34
  }
35
35
  get rest() {
36
36
  return null;
37
37
  }
38
- static fromItems(items) {
39
- const list = new List_1();
40
- list.items = [...items];
41
- return list;
42
- }
43
- getContents() {
44
- return [...this.items];
45
- }
46
- isEmpty() {
47
- return this.items.length === 0;
48
- }
49
- addItem(item) {
50
- this.items.push(item);
51
- }
52
- addItems(items) {
53
- this.items.push(...items);
54
- }
55
38
  };
56
39
  exports.List = List;
57
40
  List.targetClass = rdf_js_1.rdf.List;
@@ -61,11 +44,36 @@ __decorate([
61
44
  __metadata("design:paramtypes", [])
62
45
  ], List.prototype, "first", null);
63
46
  __decorate([
64
- (0, SHACL_js_1.objectProperty)({ path: rdf_js_1.rdf.rest, maxCount: 1, shape: List }),
47
+ (0, SHACL_js_1.objectProperty)({ path: rdf_js_1.rdf.rest, maxCount: 1, shape: List, contains: true }),
65
48
  __metadata("design:type", List),
66
49
  __metadata("design:paramtypes", [])
67
50
  ], List.prototype, "rest", null);
68
- exports.List = List = List_1 = __decorate([
69
- package_js_1.linkedShape
51
+ exports.List = List = __decorate([
52
+ (0, package_js_1.linkedShape)({ dependent: true })
70
53
  ], List);
54
+ /**
55
+ * Build the nested `List` node-data chain for an ordered `rdf:List`, terminating at `rdf:nil`.
56
+ * Pass `opts.base` to mint deterministic cell ids (`{base}/0`, `{base}/1`, …); otherwise the
57
+ * create pipeline mints ids. The empty list serializes to `rdf:nil`.
58
+ *
59
+ * @example Playlist.create({ tracks: rdfList([t1, t2, t3]) })
60
+ */
61
+ function rdfList(items, opts) {
62
+ const base = opts === null || opts === void 0 ? void 0 : opts.base;
63
+ const build = (i) => {
64
+ if (i >= items.length) {
65
+ return { id: rdf_js_1.rdf.nil.id };
66
+ }
67
+ const cell = {
68
+ shape: List,
69
+ first: items[i],
70
+ rest: build(i + 1),
71
+ };
72
+ if (base !== undefined) {
73
+ cell.__id = `${base}/${i}`;
74
+ }
75
+ return cell;
76
+ };
77
+ return build(0);
78
+ }
71
79
  //# sourceMappingURL=List.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/shapes/List.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;;GAIG;AACH,8CAA0C;AAC1C,yCAAiC;AACjC,yCAA0D;AAC1D,iDAAyC;AAEzC;;;GAGG;AAEI,IAAM,IAAI,YAAV,MAAM,IAAkB,SAAQ,gBAAK;IAArC;;QAaG,UAAK,GAAQ,EAAE,CAAC;IAuB1B,CAAC;IAjCC,IACI,KAAK;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACI,IAAI;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAID,MAAM,CAAC,SAAS,CAAI,KAAU;QAC5B,MAAM,IAAI,GAAG,IAAI,MAAI,EAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,IAAO;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,CAAC;;AAnCU,oBAAI;AACR,gBAAW,GAAG,YAAG,CAAC,IAAI,AAAX,CAAY;AAE9B;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,YAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC;;;iCAG9C;AAED;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,YAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;8BAC/C,IAAI;;gCAEf;eAXU,IAAI;IADhB,wBAAW;GACC,IAAI,CAoChB"}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/shapes/List.ts"],"names":[],"mappings":";;;;;;;;;;;;AA+CA,0BAoBC;AAnED;;;;GAIG;AACH,8CAA0C;AAC1C,yCAAiC;AACjC,yCAA0D;AAC1D,iDAAyC;AAEzC;;;;;;;GAOG;AAEI,IAAM,IAAI,GAAV,MAAM,IAAkB,SAAQ,gBAAK;IAG1C,IACI,KAAK;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACI,IAAI;QACN,OAAO,IAAI,CAAC;IACd,CAAC;;AAXU,oBAAI;AACR,gBAAW,GAAG,YAAG,CAAC,IAAI,AAAX,CAAY;AAE9B;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,YAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC;;;iCAG9C;AAED;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,YAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;8BAC/D,IAAI;;gCAEf;eAXU,IAAI;IADhB,IAAA,wBAAW,EAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC;GAClB,IAAI,CAYhB;AASD;;;;;;GAMG;AACH,SAAgB,OAAO,CACrB,KAAU,EACV,IAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,CAAS,EAAmB,EAAE;QAC3C,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,EAAC,EAAE,EAAE,YAAG,CAAC,GAAG,CAAC,EAAE,EAAC,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,GAAoB;YAC5B,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;SACnB,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Shape } from './Shape.js';
2
+ import { List } from './List.js';
3
+ /**
4
+ * Operator node for SHACL property paths that are NOT a simple predicate or a sequence:
5
+ * inverse (`sh:inversePath`), alternative (`sh:alternativePath` → an `rdf:List`), and the
6
+ * cardinality forms (`sh:zeroOrMorePath`/`sh:oneOrMorePath`/`sh:zeroOrOnePath`).
7
+ *
8
+ * Each operator edge is `contains` (the operand subtree is owned), and the node itself is
9
+ * `dependent`, so a property-shape's complex `sh:path` cascade-cleans on delete/replace.
10
+ * Operands are polymorphic (a predicate IRI, a nested `PathNode`, or a `List`), so no fixed
11
+ * `valueShape` is declared except for `alternativePath`, which is always an `rdf:List`.
12
+ */
13
+ export declare class PathNode extends Shape {
14
+ static targetClass: import("../utils/NodeReference.js").NodeReferenceValue;
15
+ get inversePath(): unknown;
16
+ get alternativePath(): List;
17
+ get zeroOrMorePath(): unknown;
18
+ get oneOrMorePath(): unknown;
19
+ get zeroOrOnePath(): unknown;
20
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PathNode = void 0;
13
+ /*
14
+ * This Source Code Form is subject to the terms of the Mozilla Public
15
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
16
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
17
+ */
18
+ const package_js_1 = require("../package.js");
19
+ const Shape_js_1 = require("./Shape.js");
20
+ const SHACL_js_1 = require("./SHACL.js");
21
+ const shacl_js_1 = require("../ontologies/shacl.js");
22
+ const linked_core_js_1 = require("../ontologies/linked-core.js");
23
+ const List_js_1 = require("./List.js");
24
+ /**
25
+ * Operator node for SHACL property paths that are NOT a simple predicate or a sequence:
26
+ * inverse (`sh:inversePath`), alternative (`sh:alternativePath` → an `rdf:List`), and the
27
+ * cardinality forms (`sh:zeroOrMorePath`/`sh:oneOrMorePath`/`sh:zeroOrOnePath`).
28
+ *
29
+ * Each operator edge is `contains` (the operand subtree is owned), and the node itself is
30
+ * `dependent`, so a property-shape's complex `sh:path` cascade-cleans on delete/replace.
31
+ * Operands are polymorphic (a predicate IRI, a nested `PathNode`, or a `List`), so no fixed
32
+ * `valueShape` is declared except for `alternativePath`, which is always an `rdf:List`.
33
+ */
34
+ let PathNode = class PathNode extends Shape_js_1.Shape {
35
+ get inversePath() {
36
+ return null;
37
+ }
38
+ get alternativePath() {
39
+ return null;
40
+ }
41
+ get zeroOrMorePath() {
42
+ return null;
43
+ }
44
+ get oneOrMorePath() {
45
+ return null;
46
+ }
47
+ get zeroOrOnePath() {
48
+ return null;
49
+ }
50
+ };
51
+ exports.PathNode = PathNode;
52
+ PathNode.targetClass = linked_core_js_1.coreOntology.PathNode;
53
+ __decorate([
54
+ (0, SHACL_js_1.objectProperty)({ path: shacl_js_1.shacl.inversePath, maxCount: 1, contains: true }),
55
+ __metadata("design:type", Object),
56
+ __metadata("design:paramtypes", [])
57
+ ], PathNode.prototype, "inversePath", null);
58
+ __decorate([
59
+ (0, SHACL_js_1.objectProperty)({ path: shacl_js_1.shacl.alternativePath, maxCount: 1, shape: List_js_1.List, contains: true }),
60
+ __metadata("design:type", List_js_1.List),
61
+ __metadata("design:paramtypes", [])
62
+ ], PathNode.prototype, "alternativePath", null);
63
+ __decorate([
64
+ (0, SHACL_js_1.objectProperty)({ path: shacl_js_1.shacl.zeroOrMorePath, maxCount: 1, contains: true }),
65
+ __metadata("design:type", Object),
66
+ __metadata("design:paramtypes", [])
67
+ ], PathNode.prototype, "zeroOrMorePath", null);
68
+ __decorate([
69
+ (0, SHACL_js_1.objectProperty)({ path: shacl_js_1.shacl.oneOrMorePath, maxCount: 1, contains: true }),
70
+ __metadata("design:type", Object),
71
+ __metadata("design:paramtypes", [])
72
+ ], PathNode.prototype, "oneOrMorePath", null);
73
+ __decorate([
74
+ (0, SHACL_js_1.objectProperty)({ path: shacl_js_1.shacl.zeroOrOnePath, maxCount: 1, contains: true }),
75
+ __metadata("design:type", Object),
76
+ __metadata("design:paramtypes", [])
77
+ ], PathNode.prototype, "zeroOrOnePath", null);
78
+ exports.PathNode = PathNode = __decorate([
79
+ (0, package_js_1.linkedShape)({ dependent: true })
80
+ ], PathNode);
81
+ //# sourceMappingURL=PathNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathNode.js","sourceRoot":"","sources":["../../../src/shapes/PathNode.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;GAIG;AACH,8CAA0C;AAC1C,yCAAiC;AACjC,yCAA0C;AAC1C,qDAA6C;AAC7C,iEAA0D;AAC1D,uCAA+B;AAE/B;;;;;;;;;GASG;AAEI,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,gBAAK;IAGjC,IACI,WAAW;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACI,eAAe;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACI,cAAc;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACI,aAAa;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACI,aAAa;QACf,OAAO,IAAI,CAAC;IACd,CAAC;;AA1BU,4BAAQ;AACZ,oBAAW,GAAG,6BAAY,CAAC,QAAQ,AAAxB,CAAyB;AAE3C;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,gBAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;;;2CAGtE;AAED;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,gBAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;8BACjE,cAAI;;+CAE1B;AAED;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,gBAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;;;8CAGzE;AAED;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,gBAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;;;6CAGxE;AAED;IAAC,IAAA,yBAAc,EAAC,EAAC,IAAI,EAAE,gBAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;;;6CAGxE;mBA1BU,QAAQ;IADpB,IAAA,wBAAW,EAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC;GAClB,QAAQ,CA2BpB"}
@@ -134,6 +134,11 @@ export interface ObjectPropertyShapeConfig extends PropertyShapeConfig {
134
134
  * You need to provide a class that extends Shape.
135
135
  */
136
136
  shape?: typeof Shape | [string, string];
137
+ /**
138
+ * Marks this property as *containment* (composition): the value(s) are owned by the subject
139
+ * and the delete/update cascade removes the owned subtree.
140
+ */
141
+ contains?: boolean;
137
142
  }
138
143
  export interface PropertyShapeConfig {
139
144
  /**
@@ -216,6 +221,15 @@ export declare class NodeShape extends Shape {
216
221
  description?: string;
217
222
  targetClass?: NodeReferenceValue;
218
223
  extends?: NodeReferenceValue;
224
+ /**
225
+ * Composition marker: instances of this shape are *dependent* — they have no
226
+ * independent existence and may be cascade-deleted when reached through a `contains` property.
227
+ */
228
+ dependent?: boolean;
229
+ /** sh:closed — target nodes with undeclared properties are invalid. */
230
+ closed?: boolean;
231
+ /** sh:ignoredProperties — extra properties permitted when the shape is closed. */
232
+ ignoredProperties?: NodeReferenceValue[];
219
233
  private propertyShapes;
220
234
  constructor(node?: string | NodeReferenceValue);
221
235
  nodeRef?: NodeReferenceValue;
@@ -251,6 +265,11 @@ export declare class PropertyShape extends Shape {
251
265
  defaultValue?: unknown;
252
266
  sortBy?: PathExpr;
253
267
  valueShape?: NodeReferenceValue;
268
+ /**
269
+ * Composition marker: the value(s) of this property are *owned* by the subject.
270
+ * The delete/update cascade follows this edge and removes the owned subtree.
271
+ */
272
+ contains?: boolean;
254
273
  parentNodeShape?: NodeShape;
255
274
  constructor();
256
275
  get label(): string;
@@ -421,6 +421,9 @@ function createPropertyShape(config, propertyKey, defaultNodeKind = null, shapeC
421
421
  if (config.class) {
422
422
  propertyShape.class = (0, NodeReference_js_1.toNodeReference)(config.class);
423
423
  }
424
+ if (config.contains) {
425
+ propertyShape.contains = true;
426
+ }
424
427
  if (config.equals) {
425
428
  propertyShape.equalsConstraint = (0, NodeReference_js_1.toNodeReference)(config.equals);
426
429
  }