@_linked/core 2.12.0 → 2.13.0-next.20260706164859

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 (246) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/esm/queries/IRPipeline.d.ts +7 -1
  3. package/lib/esm/queries/IRPipeline.js +20 -6
  4. package/lib/esm/queries/IRPipeline.js.map +1 -1
  5. package/lib/esm/queries/queryDispatch.js +12 -2
  6. package/lib/esm/queries/queryDispatch.js.map +1 -1
  7. package/package.json +10 -13
  8. package/lib/cjs/collections/CoreSet.d.ts +0 -47
  9. package/lib/cjs/collections/CoreSet.js +0 -136
  10. package/lib/cjs/collections/CoreSet.js.map +0 -1
  11. package/lib/cjs/collections/ShapeSet.d.ts +0 -6
  12. package/lib/cjs/collections/ShapeSet.js +0 -20
  13. package/lib/cjs/collections/ShapeSet.js.map +0 -1
  14. package/lib/cjs/expressions/Expr.d.ts +0 -29
  15. package/lib/cjs/expressions/Expr.js +0 -80
  16. package/lib/cjs/expressions/Expr.js.map +0 -1
  17. package/lib/cjs/expressions/ExpressionMethods.d.ts +0 -85
  18. package/lib/cjs/expressions/ExpressionMethods.js +0 -3
  19. package/lib/cjs/expressions/ExpressionMethods.js.map +0 -1
  20. package/lib/cjs/expressions/ExpressionNode.d.ts +0 -144
  21. package/lib/cjs/expressions/ExpressionNode.js +0 -432
  22. package/lib/cjs/expressions/ExpressionNode.js.map +0 -1
  23. package/lib/cjs/index.d.ts +0 -29
  24. package/lib/cjs/index.js +0 -65
  25. package/lib/cjs/index.js.map +0 -1
  26. package/lib/cjs/interfaces/ICoreIterable.d.ts +0 -14
  27. package/lib/cjs/interfaces/ICoreIterable.js +0 -3
  28. package/lib/cjs/interfaces/ICoreIterable.js.map +0 -1
  29. package/lib/cjs/interfaces/IDataset.d.ts +0 -26
  30. package/lib/cjs/interfaces/IDataset.js +0 -3
  31. package/lib/cjs/interfaces/IDataset.js.map +0 -1
  32. package/lib/cjs/interfaces/IFileStore.d.ts +0 -16
  33. package/lib/cjs/interfaces/IFileStore.js +0 -3
  34. package/lib/cjs/interfaces/IFileStore.js.map +0 -1
  35. package/lib/cjs/ontologies/linked-core.d.ts +0 -15
  36. package/lib/cjs/ontologies/linked-core.js +0 -38
  37. package/lib/cjs/ontologies/linked-core.js.map +0 -1
  38. package/lib/cjs/ontologies/npm.d.ts +0 -6
  39. package/lib/cjs/ontologies/npm.js +0 -15
  40. package/lib/cjs/ontologies/npm.js.map +0 -1
  41. package/lib/cjs/ontologies/owl.d.ts +0 -14
  42. package/lib/cjs/ontologies/owl.js +0 -21
  43. package/lib/cjs/ontologies/owl.js.map +0 -1
  44. package/lib/cjs/ontologies/rdf.d.ts +0 -13
  45. package/lib/cjs/ontologies/rdf.js +0 -27
  46. package/lib/cjs/ontologies/rdf.js.map +0 -1
  47. package/lib/cjs/ontologies/rdfs.d.ts +0 -16
  48. package/lib/cjs/ontologies/rdfs.js +0 -33
  49. package/lib/cjs/ontologies/rdfs.js.map +0 -1
  50. package/lib/cjs/ontologies/shacl.d.ts +0 -103
  51. package/lib/cjs/ontologies/shacl.js +0 -152
  52. package/lib/cjs/ontologies/shacl.js.map +0 -1
  53. package/lib/cjs/ontologies/xsd.d.ts +0 -19
  54. package/lib/cjs/ontologies/xsd.js +0 -41
  55. package/lib/cjs/ontologies/xsd.js.map +0 -1
  56. package/lib/cjs/package.d.ts +0 -4
  57. package/lib/cjs/package.js +0 -6
  58. package/lib/cjs/package.js.map +0 -1
  59. package/lib/cjs/package.json +0 -9
  60. package/lib/cjs/paths/PropertyPathExpr.d.ts +0 -38
  61. package/lib/cjs/paths/PropertyPathExpr.js +0 -221
  62. package/lib/cjs/paths/PropertyPathExpr.js.map +0 -1
  63. package/lib/cjs/paths/normalizePropertyPath.d.ts +0 -23
  64. package/lib/cjs/paths/normalizePropertyPath.js +0 -75
  65. package/lib/cjs/paths/normalizePropertyPath.js.map +0 -1
  66. package/lib/cjs/paths/pathExprToSparql.d.ts +0 -14
  67. package/lib/cjs/paths/pathExprToSparql.js +0 -136
  68. package/lib/cjs/paths/pathExprToSparql.js.map +0 -1
  69. package/lib/cjs/queries/ContextRef.d.ts +0 -32
  70. package/lib/cjs/queries/ContextRef.js +0 -69
  71. package/lib/cjs/queries/ContextRef.js.map +0 -1
  72. package/lib/cjs/queries/CreateBuilder.d.ts +0 -59
  73. package/lib/cjs/queries/CreateBuilder.js +0 -138
  74. package/lib/cjs/queries/CreateBuilder.js.map +0 -1
  75. package/lib/cjs/queries/CreateQuery.d.ts +0 -20
  76. package/lib/cjs/queries/CreateQuery.js +0 -3
  77. package/lib/cjs/queries/CreateQuery.js.map +0 -1
  78. package/lib/cjs/queries/DeleteBuilder.d.ts +0 -56
  79. package/lib/cjs/queries/DeleteBuilder.js +0 -172
  80. package/lib/cjs/queries/DeleteBuilder.js.map +0 -1
  81. package/lib/cjs/queries/DeleteQuery.d.ts +0 -37
  82. package/lib/cjs/queries/DeleteQuery.js +0 -3
  83. package/lib/cjs/queries/DeleteQuery.js.map +0 -1
  84. package/lib/cjs/queries/DslJsonExpression.d.ts +0 -68
  85. package/lib/cjs/queries/DslJsonExpression.js +0 -427
  86. package/lib/cjs/queries/DslJsonExpression.js.map +0 -1
  87. package/lib/cjs/queries/FieldSet.d.ts +0 -310
  88. package/lib/cjs/queries/FieldSet.js +0 -802
  89. package/lib/cjs/queries/FieldSet.js.map +0 -1
  90. package/lib/cjs/queries/IRAliasScope.d.ts +0 -20
  91. package/lib/cjs/queries/IRAliasScope.js +0 -52
  92. package/lib/cjs/queries/IRAliasScope.js.map +0 -1
  93. package/lib/cjs/queries/IRCanonicalize.d.ts +0 -19
  94. package/lib/cjs/queries/IRCanonicalize.js +0 -19
  95. package/lib/cjs/queries/IRCanonicalize.js.map +0 -1
  96. package/lib/cjs/queries/IRDesugar.d.ts +0 -123
  97. package/lib/cjs/queries/IRDesugar.js +0 -261
  98. package/lib/cjs/queries/IRDesugar.js.map +0 -1
  99. package/lib/cjs/queries/IRLower.d.ts +0 -25
  100. package/lib/cjs/queries/IRLower.js +0 -398
  101. package/lib/cjs/queries/IRLower.js.map +0 -1
  102. package/lib/cjs/queries/IRMutation.d.ts +0 -53
  103. package/lib/cjs/queries/IRMutation.js +0 -130
  104. package/lib/cjs/queries/IRMutation.js.map +0 -1
  105. package/lib/cjs/queries/IRPipeline.d.ts +0 -8
  106. package/lib/cjs/queries/IRPipeline.js +0 -25
  107. package/lib/cjs/queries/IRPipeline.js.map +0 -1
  108. package/lib/cjs/queries/IRProjection.d.ts +0 -39
  109. package/lib/cjs/queries/IRProjection.js +0 -105
  110. package/lib/cjs/queries/IRProjection.js.map +0 -1
  111. package/lib/cjs/queries/IntermediateRepresentation.d.ts +0 -282
  112. package/lib/cjs/queries/IntermediateRepresentation.js +0 -3
  113. package/lib/cjs/queries/IntermediateRepresentation.js.map +0 -1
  114. package/lib/cjs/queries/MutationQuery.d.ts +0 -50
  115. package/lib/cjs/queries/MutationQuery.js +0 -334
  116. package/lib/cjs/queries/MutationQuery.js.map +0 -1
  117. package/lib/cjs/queries/MutationSerialization.d.ts +0 -102
  118. package/lib/cjs/queries/MutationSerialization.js +0 -207
  119. package/lib/cjs/queries/MutationSerialization.js.map +0 -1
  120. package/lib/cjs/queries/MutationThenable.d.ts +0 -18
  121. package/lib/cjs/queries/MutationThenable.js +0 -32
  122. package/lib/cjs/queries/MutationThenable.js.map +0 -1
  123. package/lib/cjs/queries/PropertyPath.d.ts +0 -38
  124. package/lib/cjs/queries/PropertyPath.js +0 -82
  125. package/lib/cjs/queries/PropertyPath.js.map +0 -1
  126. package/lib/cjs/queries/ProxiedPathBuilder.d.ts +0 -14
  127. package/lib/cjs/queries/ProxiedPathBuilder.js +0 -29
  128. package/lib/cjs/queries/ProxiedPathBuilder.js.map +0 -1
  129. package/lib/cjs/queries/QueryBuilder.d.ts +0 -193
  130. package/lib/cjs/queries/QueryBuilder.js +0 -519
  131. package/lib/cjs/queries/QueryBuilder.js.map +0 -1
  132. package/lib/cjs/queries/QueryBuilderSerialization.d.ts +0 -31
  133. package/lib/cjs/queries/QueryBuilderSerialization.js +0 -68
  134. package/lib/cjs/queries/QueryBuilderSerialization.js.map +0 -1
  135. package/lib/cjs/queries/QueryContext.d.ts +0 -50
  136. package/lib/cjs/queries/QueryContext.js +0 -147
  137. package/lib/cjs/queries/QueryContext.js.map +0 -1
  138. package/lib/cjs/queries/QueryFactory.d.ts +0 -80
  139. package/lib/cjs/queries/QueryFactory.js +0 -21
  140. package/lib/cjs/queries/QueryFactory.js.map +0 -1
  141. package/lib/cjs/queries/SelectQuery.d.ts +0 -302
  142. package/lib/cjs/queries/SelectQuery.js +0 -761
  143. package/lib/cjs/queries/SelectQuery.js.map +0 -1
  144. package/lib/cjs/queries/UpdateBuilder.d.ts +0 -69
  145. package/lib/cjs/queries/UpdateBuilder.js +0 -199
  146. package/lib/cjs/queries/UpdateBuilder.js.map +0 -1
  147. package/lib/cjs/queries/UpdateQuery.d.ts +0 -18
  148. package/lib/cjs/queries/UpdateQuery.js +0 -3
  149. package/lib/cjs/queries/UpdateQuery.js.map +0 -1
  150. package/lib/cjs/queries/fromJSON.d.ts +0 -16
  151. package/lib/cjs/queries/fromJSON.js +0 -41
  152. package/lib/cjs/queries/fromJSON.js.map +0 -1
  153. package/lib/cjs/queries/lower.d.ts +0 -28
  154. package/lib/cjs/queries/lower.js +0 -114
  155. package/lib/cjs/queries/lower.js.map +0 -1
  156. package/lib/cjs/queries/lowerMutationJSON.d.ts +0 -25
  157. package/lib/cjs/queries/lowerMutationJSON.js +0 -173
  158. package/lib/cjs/queries/lowerMutationJSON.js.map +0 -1
  159. package/lib/cjs/queries/mutationLowerSpec.d.ts +0 -32
  160. package/lib/cjs/queries/mutationLowerSpec.js +0 -8
  161. package/lib/cjs/queries/mutationLowerSpec.js.map +0 -1
  162. package/lib/cjs/queries/queryDispatch.d.ts +0 -33
  163. package/lib/cjs/queries/queryDispatch.js +0 -33
  164. package/lib/cjs/queries/queryDispatch.js.map +0 -1
  165. package/lib/cjs/queries/resolveShape.d.ts +0 -10
  166. package/lib/cjs/queries/resolveShape.js +0 -23
  167. package/lib/cjs/queries/resolveShape.js.map +0 -1
  168. package/lib/cjs/queries/wireVersion.d.ts +0 -7
  169. package/lib/cjs/queries/wireVersion.js +0 -25
  170. package/lib/cjs/queries/wireVersion.js.map +0 -1
  171. package/lib/cjs/shapes/List.d.ts +0 -35
  172. package/lib/cjs/shapes/List.js +0 -72
  173. package/lib/cjs/shapes/List.js.map +0 -1
  174. package/lib/cjs/shapes/PathNode.d.ts +0 -20
  175. package/lib/cjs/shapes/PathNode.js +0 -68
  176. package/lib/cjs/shapes/PathNode.js.map +0 -1
  177. package/lib/cjs/shapes/SHACL.d.ts +0 -300
  178. package/lib/cjs/shapes/SHACL.js +0 -612
  179. package/lib/cjs/shapes/SHACL.js.map +0 -1
  180. package/lib/cjs/shapes/Shape.d.ts +0 -74
  181. package/lib/cjs/shapes/Shape.js +0 -124
  182. package/lib/cjs/shapes/Shape.js.map +0 -1
  183. package/lib/cjs/shapes/serializePathToNodeData.d.ts +0 -24
  184. package/lib/cjs/shapes/serializePathToNodeData.js +0 -67
  185. package/lib/cjs/shapes/serializePathToNodeData.js.map +0 -1
  186. package/lib/cjs/shapes/syncShapes.d.ts +0 -38
  187. package/lib/cjs/shapes/syncShapes.js +0 -214
  188. package/lib/cjs/shapes/syncShapes.js.map +0 -1
  189. package/lib/cjs/sparql/SparqlAlgebra.d.ts +0 -190
  190. package/lib/cjs/sparql/SparqlAlgebra.js +0 -4
  191. package/lib/cjs/sparql/SparqlAlgebra.js.map +0 -1
  192. package/lib/cjs/sparql/SparqlDataset.d.ts +0 -60
  193. package/lib/cjs/sparql/SparqlDataset.js +0 -117
  194. package/lib/cjs/sparql/SparqlDataset.js.map +0 -1
  195. package/lib/cjs/sparql/algebraToString.d.ts +0 -13
  196. package/lib/cjs/sparql/algebraToString.js +0 -385
  197. package/lib/cjs/sparql/algebraToString.js.map +0 -1
  198. package/lib/cjs/sparql/index.d.ts +0 -9
  199. package/lib/cjs/sparql/index.js +0 -41
  200. package/lib/cjs/sparql/index.js.map +0 -1
  201. package/lib/cjs/sparql/irToAlgebra.d.ts +0 -79
  202. package/lib/cjs/sparql/irToAlgebra.js +0 -2042
  203. package/lib/cjs/sparql/irToAlgebra.js.map +0 -1
  204. package/lib/cjs/sparql/resultMapping.d.ts +0 -36
  205. package/lib/cjs/sparql/resultMapping.js +0 -563
  206. package/lib/cjs/sparql/resultMapping.js.map +0 -1
  207. package/lib/cjs/sparql/sparqlUtils.d.ts +0 -53
  208. package/lib/cjs/sparql/sparqlUtils.js +0 -154
  209. package/lib/cjs/sparql/sparqlUtils.js.map +0 -1
  210. package/lib/cjs/utils/LinkedErrorLogging.d.ts +0 -13
  211. package/lib/cjs/utils/LinkedErrorLogging.js +0 -22
  212. package/lib/cjs/utils/LinkedErrorLogging.js.map +0 -1
  213. package/lib/cjs/utils/LinkedFileStorage.d.ts +0 -23
  214. package/lib/cjs/utils/LinkedFileStorage.js +0 -62
  215. package/lib/cjs/utils/LinkedFileStorage.js.map +0 -1
  216. package/lib/cjs/utils/LinkedStorage.d.ts +0 -40
  217. package/lib/cjs/utils/LinkedStorage.js +0 -148
  218. package/lib/cjs/utils/LinkedStorage.js.map +0 -1
  219. package/lib/cjs/utils/NameSpace.d.ts +0 -2
  220. package/lib/cjs/utils/NameSpace.js +0 -8
  221. package/lib/cjs/utils/NameSpace.js.map +0 -1
  222. package/lib/cjs/utils/NodeReference.d.ts +0 -30
  223. package/lib/cjs/utils/NodeReference.js +0 -54
  224. package/lib/cjs/utils/NodeReference.js.map +0 -1
  225. package/lib/cjs/utils/Package.d.ts +0 -153
  226. package/lib/cjs/utils/Package.js +0 -419
  227. package/lib/cjs/utils/Package.js.map +0 -1
  228. package/lib/cjs/utils/Prefix.d.ts +0 -22
  229. package/lib/cjs/utils/Prefix.js +0 -104
  230. package/lib/cjs/utils/Prefix.js.map +0 -1
  231. package/lib/cjs/utils/ShapeClass.d.ts +0 -30
  232. package/lib/cjs/utils/ShapeClass.js +0 -180
  233. package/lib/cjs/utils/ShapeClass.js.map +0 -1
  234. package/lib/cjs/utils/URI.d.ts +0 -18
  235. package/lib/cjs/utils/URI.js +0 -42
  236. package/lib/cjs/utils/URI.js.map +0 -1
  237. package/lib/cjs/utils/cached.d.ts +0 -14
  238. package/lib/cjs/utils/cached.js +0 -71
  239. package/lib/cjs/utils/cached.js.map +0 -1
  240. package/lib/cjs/utils/loadStores.d.ts +0 -34
  241. package/lib/cjs/utils/loadStores.js +0 -105
  242. package/lib/cjs/utils/loadStores.js.map +0 -1
  243. package/lib/cjs/utils/parseDatasetsConfig.d.ts +0 -49
  244. package/lib/cjs/utils/parseDatasetsConfig.js +0 -110
  245. package/lib/cjs/utils/parseDatasetsConfig.js.map +0 -1
  246. package/lib/esm/package.json +0 -9
@@ -1,563 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapSparqlSelectResult = mapSparqlSelectResult;
4
- exports.mapSparqlCreateResult = mapSparqlCreateResult;
5
- exports.mapSparqlUpdateResult = mapSparqlUpdateResult;
6
- const xsd_js_1 = require("../ontologies/xsd.js");
7
- // ---------------------------------------------------------------------------
8
- // XSD constants (derived from ontology module)
9
- // ---------------------------------------------------------------------------
10
- const XSD_BOOLEAN = xsd_js_1.xsd.boolean.id;
11
- const XSD_INTEGER = xsd_js_1.xsd.integer.id;
12
- const XSD_LONG = xsd_js_1.xsd.long.id;
13
- const XSD_DECIMAL = xsd_js_1.xsd.decimal.id;
14
- const XSD_FLOAT = xsd_js_1.xsd.float.id;
15
- const XSD_DOUBLE = xsd_js_1.xsd.double.id;
16
- const XSD_DATE_TIME = xsd_js_1.xsd.dateTime.id;
17
- const XSD_DATE = xsd_js_1.xsd.date.id;
18
- const NUMERIC_DATATYPES = new Set([
19
- XSD_INTEGER,
20
- XSD_LONG,
21
- XSD_DECIMAL,
22
- XSD_FLOAT,
23
- XSD_DOUBLE,
24
- ]);
25
- // ---------------------------------------------------------------------------
26
- // Helpers
27
- // ---------------------------------------------------------------------------
28
- /**
29
- * Extracts the local name (last segment) from a full URI.
30
- * E.g. "https://linked.cm/shape/core/Person/name" → "name"
31
- */
32
- function localName(uri) {
33
- const hashIdx = uri.lastIndexOf('#');
34
- if (hashIdx >= 0)
35
- return uri.substring(hashIdx + 1);
36
- const slashIdx = uri.lastIndexOf('/');
37
- return slashIdx >= 0 ? uri.substring(slashIdx + 1) : uri;
38
- }
39
- /**
40
- * Derives the SPARQL variable name that will appear in the result bindings
41
- * for a given projection expression.
42
- *
43
- * Convention (aligned with irToAlgebra variable naming):
44
- * - `property_expr(sourceAlias, property)` → `{sourceAlias}_{localName(property)}`
45
- * - `alias_expr(alias)` → `{alias}`
46
- * - `aggregate_expr` → uses the projection alias directly
47
- * - Anything else → falls back to the projection alias
48
- */
49
- function sparqlVarName(expression, projectionAlias) {
50
- switch (expression.kind) {
51
- case 'property_expr':
52
- return `${expression.sourceAlias}_${localName(expression.property)}`;
53
- case 'alias_expr':
54
- return expression.alias;
55
- case 'aggregate_expr':
56
- return projectionAlias;
57
- default:
58
- return projectionAlias;
59
- }
60
- }
61
- /**
62
- * Coerces a raw SPARQL binding value into the appropriate JS type
63
- * based on the binding's type and datatype annotations.
64
- */
65
- function coerceValue(binding) {
66
- // URI → return the URI string as an id
67
- if (binding.type === 'uri') {
68
- return binding.value;
69
- }
70
- // Typed literal → coerce based on datatype
71
- if (binding.datatype) {
72
- if (binding.datatype === XSD_BOOLEAN) {
73
- return binding.value === 'true' || binding.value === '1';
74
- }
75
- if (NUMERIC_DATATYPES.has(binding.datatype)) {
76
- return Number(binding.value);
77
- }
78
- if (binding.datatype === XSD_DATE_TIME || binding.datatype === XSD_DATE) {
79
- return new Date(binding.value);
80
- }
81
- }
82
- // Untyped literal or bnode → string
83
- return binding.value;
84
- }
85
- /**
86
- * Builds the alias chain from sourceAlias back to rootAlias by walking the traverseMap.
87
- * Returns the chain from root outward, e.g. [{alias: "a1", property: "friends"}, {alias: "a2", property: "bestFriend"}].
88
- */
89
- function buildAliasChain(sourceAlias, rootAlias, traverseMap) {
90
- const chain = [];
91
- let current = sourceAlias;
92
- while (current !== rootAlias) {
93
- const info = traverseMap.get(current);
94
- if (!info)
95
- break;
96
- chain.unshift({ alias: current, property: info.property, maxCount: info.maxCount });
97
- current = info.from;
98
- }
99
- return chain;
100
- }
101
- /**
102
- * Inserts a field into the nesting tree at the position described by the alias chain.
103
- * Creates intermediate NestedGroup nodes as needed.
104
- */
105
- function insertIntoTree(root, chain, field) {
106
- if (chain.length === 0) {
107
- // Skip alias_expr fields that match the group's traverseAlias — the entity's
108
- // id is already captured by collectNestedGroup via binding[traverseAlias].
109
- if (field.expression.kind === 'alias_expr' &&
110
- 'traverseAlias' in root &&
111
- field.expression.alias === root.traverseAlias) {
112
- return;
113
- }
114
- root.flatFields.push(field);
115
- return;
116
- }
117
- const target = chain[0];
118
- let group = root.nestedGroups.find((g) => g.traverseAlias === target.alias);
119
- if (!group) {
120
- group = {
121
- key: localName(target.property),
122
- traverseAlias: target.alias,
123
- flatFields: [],
124
- nestedGroups: [],
125
- maxCount: target.maxCount,
126
- };
127
- root.nestedGroups.push(group);
128
- }
129
- // Recurse: remaining chain determines where the field sits within this group
130
- insertIntoTree(group, chain.slice(1), field);
131
- }
132
- /**
133
- * Analyzes the query structure to build a recursive nesting descriptor that guides
134
- * how flat SPARQL bindings should be grouped into nested result objects.
135
- */
136
- function buildNestingDescriptor(query) {
137
- var _a;
138
- const rootAlias = query.root.alias;
139
- // Build a map from alias → traverse pattern (to identify which aliases are traversals)
140
- const traverseMap = new Map();
141
- for (const pattern of query.patterns) {
142
- if (pattern.kind === 'traverse') {
143
- traverseMap.set(pattern.to, { from: pattern.from, property: pattern.property, maxCount: pattern.maxCount });
144
- }
145
- }
146
- const descriptor = {
147
- rootVar: rootAlias,
148
- flatFields: [],
149
- nestedGroups: [],
150
- };
151
- const resultMap = (_a = query.resultMap) !== null && _a !== void 0 ? _a : [];
152
- const projectionByAlias = new Map(query.projection.map((p) => [p.alias, p]));
153
- for (const entry of resultMap) {
154
- const projItem = projectionByAlias.get(entry.alias);
155
- // When irToAlgebra renames an aggregate alias (e.g. a1 → a1_agg) to avoid
156
- // collision with a traversal alias, it updates resultMap but not projection.
157
- // In that case, use the resultMap alias directly as the SPARQL variable name
158
- // and treat the expression as an aggregate (single-value, root-level).
159
- if (!projItem) {
160
- const resultKey = localName(entry.key);
161
- const field = {
162
- key: resultKey,
163
- sparqlVar: entry.alias,
164
- expression: { kind: 'aggregate_expr', name: 'count', args: [] },
165
- maxCount: 1,
166
- };
167
- descriptor.flatFields.push(field);
168
- continue;
169
- }
170
- const expression = projItem.expression;
171
- const sparqlVar = sparqlVarName(expression, entry.alias);
172
- const resultKey = localName(entry.key);
173
- // Determine which entity this field belongs to
174
- let sourceAlias;
175
- if (expression.kind === 'property_expr') {
176
- sourceAlias = expression.sourceAlias;
177
- }
178
- else if (expression.kind === 'alias_expr') {
179
- sourceAlias = expression.alias;
180
- }
181
- else if (expression.kind === 'aggregate_expr') {
182
- // An aggregate over a traversed entity's property (e.g. a sub-select
183
- // `f.friends.size()`) is grouped per that entity — anchor the field to
184
- // the argument's source alias, not the root.
185
- const propArg = expression.args.find((a) => a.kind === 'property_expr');
186
- sourceAlias = propArg && propArg.kind === 'property_expr' ? propArg.sourceAlias : rootAlias;
187
- }
188
- else {
189
- sourceAlias = rootAlias;
190
- }
191
- const field = { key: resultKey, sparqlVar, expression };
192
- if (expression.kind === 'property_expr') {
193
- // property_expr carries maxCount from PropertyShape — absent means multi-value
194
- if (typeof expression.maxCount === 'number') {
195
- field.maxCount = expression.maxCount;
196
- }
197
- }
198
- else {
199
- // All other expressions (aggregate_expr, binary_expr, function_expr, etc.)
200
- // produce a single scalar value per entity/group — always single-value
201
- field.maxCount = 1;
202
- }
203
- if (sourceAlias === rootAlias) {
204
- descriptor.flatFields.push(field);
205
- }
206
- else {
207
- // Build the full chain from root to sourceAlias and insert into tree
208
- const chain = buildAliasChain(sourceAlias, rootAlias, traverseMap);
209
- insertIntoTree(descriptor, chain, field);
210
- }
211
- }
212
- // Validate: no duplicate keys at the flat level
213
- const flatKeys = descriptor.flatFields.map((f) => f.key);
214
- const dupFlat = flatKeys.find((k, i) => flatKeys.indexOf(k) !== i);
215
- if (dupFlat) {
216
- throw new Error(`Duplicate result key "${dupFlat}" in projection. ` +
217
- `Two properties with the same local name cannot appear in the same projection.`);
218
- }
219
- return descriptor;
220
- }
221
- // ---------------------------------------------------------------------------
222
- // Main API: mapSparqlSelectResult
223
- // ---------------------------------------------------------------------------
224
- /**
225
- * Maps a SPARQL JSON result set back into the `SelectResult` shape expected
226
- * by the Linked DSL.
227
- *
228
- * 1. Walks `query.resultMap` to know which alias → result key mapping
229
- * 2. Walks `query.projection` to know each alias's expression type (for type coercion)
230
- * 3. For each binding row, extracts values by variable name, coerces types, handles missing → null
231
- * 4. Groups rows by root alias to reconstruct nested objects
232
- * 5. If `query.singleResult` → returns single row or null
233
- */
234
- function mapSparqlSelectResult(json, query) {
235
- const bindings = json.results.bindings;
236
- // If no resultMap, just return entity references
237
- if (!query.resultMap || query.resultMap.length === 0) {
238
- const rootVar = query.root.alias;
239
- const rows = [];
240
- const seenIds = new Set();
241
- for (const binding of bindings) {
242
- const rootBinding = binding[rootVar];
243
- if (!rootBinding)
244
- continue;
245
- const id = rootBinding.value;
246
- if (seenIds.has(id))
247
- continue;
248
- seenIds.add(id);
249
- rows.push({ id });
250
- }
251
- if (query.singleResult) {
252
- return rows.length > 0 ? rows[0] : null;
253
- }
254
- return rows;
255
- }
256
- const descriptor = buildNestingDescriptor(query);
257
- // If there are no nested groups, produce flat rows
258
- if (descriptor.nestedGroups.length === 0) {
259
- return mapFlatRows(bindings, descriptor, query);
260
- }
261
- // Otherwise, group and nest
262
- return mapNestedRows(bindings, descriptor, query);
263
- }
264
- /**
265
- * Checks whether a flat field is multi-value (no maxCount or maxCount > 1).
266
- */
267
- function isMultiValueField(field) {
268
- return typeof field.maxCount !== 'number' || field.maxCount > 1;
269
- }
270
- /**
271
- * Extracts a single field value from a SPARQL binding.
272
- * URI bindings are wrapped as entity references ({id: ...}), regardless of
273
- * whether the expression is an alias_expr or property_expr — any URI-typed
274
- * SPARQL value represents an entity reference in the result.
275
- */
276
- function extractFieldValue(field, binding) {
277
- const val = binding[field.sparqlVar];
278
- if (!val)
279
- return null;
280
- if (val.type === 'uri') {
281
- return { id: val.value };
282
- }
283
- return coerceValue(val);
284
- }
285
- /**
286
- * Collects multi-value flat fields from all bindings for a given root entity,
287
- * producing deduplicated arrays for multi-value fields and single values
288
- * for single-value fields.
289
- */
290
- function populateFlatFields(row, fields, groupBindings) {
291
- const multiValueFields = fields.filter(isMultiValueField);
292
- const singleValueFields = fields.filter((f) => !isMultiValueField(f));
293
- // Single-value fields: take first binding
294
- for (const field of singleValueFields) {
295
- row[field.key] = extractFieldValue(field, groupBindings[0]);
296
- }
297
- // Multi-value fields (no maxCount): collect all distinct values across bindings.
298
- // URI bindings produce ResultRow[] (entity references like friends),
299
- // literal bindings produce string[]/number[]/etc (like nickNames).
300
- for (const field of multiValueFields) {
301
- const seenValues = new Set();
302
- const values = [];
303
- for (const binding of groupBindings) {
304
- const val = binding[field.sparqlVar];
305
- if (!val)
306
- continue;
307
- if (seenValues.has(val.value))
308
- continue;
309
- seenValues.add(val.value);
310
- const extracted = extractFieldValue(field, binding);
311
- if (extracted !== null) {
312
- values.push(extracted);
313
- }
314
- }
315
- row[field.key] = values;
316
- }
317
- }
318
- /**
319
- * Maps flat (non-nested) result rows — no traversals involved.
320
- * Groups bindings by root ID to collect multi-value flat fields into arrays.
321
- */
322
- function mapFlatRows(bindings, descriptor, query) {
323
- // Group bindings by root entity id
324
- const rootGroups = new Map();
325
- for (const binding of bindings) {
326
- const rootBinding = binding[descriptor.rootVar];
327
- if (!rootBinding)
328
- continue;
329
- const id = rootBinding.value;
330
- let group = rootGroups.get(id);
331
- if (!group) {
332
- group = [];
333
- rootGroups.set(id, group);
334
- }
335
- group.push(binding);
336
- }
337
- const rows = [];
338
- for (const [rootId, groupBindings] of rootGroups) {
339
- const row = { id: rootId };
340
- populateFlatFields(row, descriptor.flatFields, groupBindings);
341
- rows.push(row);
342
- }
343
- if (query.singleResult) {
344
- return rows.length > 0 ? rows[0] : null;
345
- }
346
- return rows;
347
- }
348
- /**
349
- * Populates fields on a ResultRow from a single SPARQL binding.
350
- * Used inside nested groups where each entity is populated once per binding.
351
- */
352
- function populateFields(row, fields, binding) {
353
- for (const field of fields) {
354
- row[field.key] = extractFieldValue(field, binding);
355
- }
356
- }
357
- /**
358
- * Scans bindings to identify which nested groups represent literal property
359
- * traversals (e.g. `p.hobby.where(h => h.equals('Jogging'))`) vs entity
360
- * traversals. Returns a set of traverse aliases that resolve to literals.
361
- *
362
- * Scans ALL non-null bindings for each group to validate type consistency.
363
- * If mixed types are found (both URI and literal), defaults to literal
364
- * treatment — coerceValue handles both safely.
365
- */
366
- function detectLiteralTraversals(groups, bindings) {
367
- const literalAliases = new Set();
368
- for (const group of groups) {
369
- let seenUri = false;
370
- let seenLiteral = false;
371
- for (const binding of bindings) {
372
- const val = binding[group.traverseAlias];
373
- if (!val)
374
- continue;
375
- if (val.type === 'uri')
376
- seenUri = true;
377
- else
378
- seenLiteral = true;
379
- }
380
- // Literal-only or mixed types → treat as literal (safe fallback)
381
- if (seenLiteral) {
382
- literalAliases.add(group.traverseAlias);
383
- }
384
- }
385
- return literalAliases;
386
- }
387
- /**
388
- * Collects the coerced literal value from a nested group that traverses a
389
- * datatype property. Returns the first non-null value, or null if absent.
390
- */
391
- function collectLiteralTraversalValue(nestedGroup, bindings) {
392
- for (const binding of bindings) {
393
- const val = binding[nestedGroup.traverseAlias];
394
- if (!val)
395
- continue;
396
- return coerceValue(val);
397
- }
398
- return null;
399
- }
400
- /**
401
- * Assigns the collected value of a nested group to a result row,
402
- * unwrapping single-value properties (maxCount <= 1) from arrays to
403
- * a single ResultRow or null.
404
- */
405
- function assignNestedGroupValue(row, nestedGroup, bindings, literalAliases) {
406
- if (literalAliases.has(nestedGroup.traverseAlias)) {
407
- row[nestedGroup.key] = collectLiteralTraversalValue(nestedGroup, bindings);
408
- }
409
- else {
410
- const collected = collectNestedGroup(nestedGroup, bindings);
411
- if (typeof nestedGroup.maxCount === 'number' && nestedGroup.maxCount <= 1) {
412
- row[nestedGroup.key] = collected.length > 0 ? collected[0] : null;
413
- }
414
- else {
415
- row[nestedGroup.key] = collected;
416
- }
417
- }
418
- }
419
- /**
420
- * Recursively collects entities for a nested group from a set of bindings.
421
- * Groups bindings by the nested entity's ID, populates fields, and recurses
422
- * into any deeper nested groups.
423
- */
424
- function collectNestedGroup(nestedGroup, bindings) {
425
- const entityMap = new Map();
426
- for (const binding of bindings) {
427
- const idBinding = binding[nestedGroup.traverseAlias];
428
- if (!idBinding)
429
- continue;
430
- const entityId = idBinding.value;
431
- let entry = entityMap.get(entityId);
432
- if (!entry) {
433
- const nestedRow = { id: entityId };
434
- populateFields(nestedRow, nestedGroup.flatFields, binding);
435
- entry = { row: nestedRow, bindings: [] };
436
- entityMap.set(entityId, entry);
437
- }
438
- entry.bindings.push(binding);
439
- }
440
- // Recurse into deeper nested groups
441
- const allNestedBindings = Array.from(entityMap.values()).flatMap((e) => e.bindings);
442
- const deepLiteralAliases = detectLiteralTraversals(nestedGroup.nestedGroups, allNestedBindings);
443
- for (const [, entry] of entityMap) {
444
- for (const deeperGroup of nestedGroup.nestedGroups) {
445
- assignNestedGroupValue(entry.row, deeperGroup, entry.bindings, deepLiteralAliases);
446
- }
447
- }
448
- return Array.from(entityMap.values()).map((e) => e.row);
449
- }
450
- /**
451
- * Maps nested result rows — groups flat SPARQL bindings by root entity,
452
- * then recursively collects traversed entities into nested arrays.
453
- */
454
- function mapNestedRows(bindings, descriptor, query) {
455
- // Group bindings by root entity id
456
- const rootGroups = new Map();
457
- for (const binding of bindings) {
458
- const rootBindingVal = binding[descriptor.rootVar];
459
- if (!rootBindingVal)
460
- continue;
461
- const rootId = rootBindingVal.value;
462
- let group = rootGroups.get(rootId);
463
- if (!group) {
464
- group = [];
465
- rootGroups.set(rootId, group);
466
- }
467
- group.push(binding);
468
- }
469
- // Pre-scan ALL bindings to determine which nested groups are literal traversals.
470
- // This must span all root groups because a specific root entity may have no
471
- // binding for the alias (OPTIONAL miss) — we need at least one bound value
472
- // to know the type.
473
- const literalAliases = detectLiteralTraversals(descriptor.nestedGroups, bindings);
474
- const rows = [];
475
- for (const [rootId, groupBindings] of rootGroups) {
476
- const row = { id: rootId };
477
- // Flat fields — single-value from first binding, multi-value collected across all
478
- populateFlatFields(row, descriptor.flatFields, groupBindings);
479
- // Nested groups — recursively collect traversed entities (or literal values)
480
- for (const nestedGroup of descriptor.nestedGroups) {
481
- assignNestedGroupValue(row, nestedGroup, groupBindings, literalAliases);
482
- }
483
- rows.push(row);
484
- }
485
- if (query.singleResult) {
486
- return rows.length > 0 ? rows[0] : null;
487
- }
488
- return rows;
489
- }
490
- // ---------------------------------------------------------------------------
491
- // mapSparqlCreateResult
492
- // ---------------------------------------------------------------------------
493
- /**
494
- * Constructs a `CreateResult` from a generated URI and the IR create mutation.
495
- * Echoes back the created fields as a `ResultRow` with the generated URI as `id`.
496
- */
497
- function mapSparqlCreateResult(generatedUri, query) {
498
- const row = { id: generatedUri };
499
- populateRowFromNodeData(row, query.data);
500
- return row;
501
- }
502
- /**
503
- * Recursively populates a ResultRow from IRNodeData.
504
- */
505
- function populateRowFromNodeData(row, data) {
506
- for (const field of data.fields) {
507
- const key = localName(field.property);
508
- row[key] = fieldValueToResult(field.value);
509
- }
510
- }
511
- /**
512
- * Converts an IRFieldValue to the corresponding ResultFieldValue.
513
- */
514
- function fieldValueToResult(value) {
515
- if (value === null || value === undefined)
516
- return null;
517
- if (typeof value === 'string')
518
- return value;
519
- if (typeof value === 'number')
520
- return value;
521
- if (typeof value === 'boolean')
522
- return value;
523
- if (value instanceof Date)
524
- return value;
525
- // NodeReferenceValue — has an id field
526
- if (typeof value === 'object' && 'id' in value && !('shape' in value) && !('fields' in value)) {
527
- return { id: value.id };
528
- }
529
- // IRNodeData — nested created entity
530
- if (typeof value === 'object' && 'shape' in value && 'fields' in value) {
531
- const nested = value;
532
- const nestedRow = { id: nested.id || '' };
533
- populateRowFromNodeData(nestedRow, nested);
534
- return nestedRow;
535
- }
536
- // Array
537
- if (Array.isArray(value)) {
538
- return value.map((item) => {
539
- const result = fieldValueToResult(item);
540
- if (result && typeof result === 'object' && 'id' in result) {
541
- return result;
542
- }
543
- return result;
544
- });
545
- }
546
- return null;
547
- }
548
- // ---------------------------------------------------------------------------
549
- // mapSparqlUpdateResult
550
- // ---------------------------------------------------------------------------
551
- /**
552
- * Constructs an `UpdateResult` from the IR update mutation.
553
- * Echoes back the updated fields as an `UpdateResult` with the target node's `id`.
554
- */
555
- function mapSparqlUpdateResult(query) {
556
- const result = { id: query.id };
557
- for (const field of query.data.fields) {
558
- const key = localName(field.property);
559
- result[key] = fieldValueToResult(field.value);
560
- }
561
- return result;
562
- }
563
- //# sourceMappingURL=resultMapping.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resultMapping.js","sourceRoot":"","sources":["../../../src/sparql/resultMapping.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- export interface SparqlOptions {
2
- dataRoot?: string;
3
- prefixes?: Record<string, string>;
4
- }
5
- /**
6
- * Assert that a string is safe to emit as a SPARQL IRI. Throws on any character
7
- * that could terminate the IRIREF and inject query text. Applied to the raw IRI
8
- * before prefixing so the prefixed branch can't be used to smuggle a breakout.
9
- */
10
- export declare function assertSafeIri(uri: string): void;
11
- /**
12
- * Sanitize a string for use as a SPARQL variable name (`?name`). Replaces any
13
- * character outside `[A-Za-z0-9_]` with `_`, so an alias/projection name derived
14
- * from untrusted input cannot break out of the `?...` variable position. Valid
15
- * names (already `[A-Za-z0-9_]`) are returned unchanged.
16
- */
17
- export declare function sanitizeVarName(name: string): string;
18
- /**
19
- * Assert that a function or aggregate name is a known SPARQL 1.1 builtin before
20
- * it is emitted verbatim into query text. Throws on anything else (e.g. an
21
- * attacker-supplied S-expr head), which is the SPARQL-injection guard for the
22
- * `function_expr` / `aggregate_expr` serialization paths.
23
- */
24
- export declare function assertSafeCallName(name: string): void;
25
- /**
26
- * Format a URI for SPARQL output.
27
- * Returns prefixed form (e.g. `rdf:type`) if a prefix is registered and the
28
- * suffix doesn't contain `/`. Otherwise returns `<full-uri>`.
29
- * Throws if the IRI contains characters that could break out of the IRIREF.
30
- */
31
- export declare function formatUri(uri: string): string;
32
- /**
33
- * Escapes special characters in a string for use inside SPARQL double-quoted literals.
34
- * Per SPARQL 1.1 §19.7 (Escape sequences in strings).
35
- */
36
- export declare function escapeSparqlString(value: string): string;
37
- /**
38
- * Format a literal value for SPARQL output.
39
- * Returns a quoted string with optional `^^<datatype>` suffix.
40
- * Special characters in the value are escaped per SPARQL spec.
41
- */
42
- export declare function formatLiteral(value: string | number | boolean | Date, datatype?: string): string;
43
- /**
44
- * Collect the minimal set of prefix→URI mappings needed for a set of URIs.
45
- * Only includes prefixes that are actually used (i.e. `Prefix.toPrefixed`
46
- * returns a value for at least one URI in the list).
47
- */
48
- export declare function collectPrefixes(usedUris: string[]): Record<string, string>;
49
- /**
50
- * Generate a new entity URI for a create mutation.
51
- * Format: `{dataRoot}/{lowercaseShapeLabel}_{ulid}`
52
- */
53
- export declare function generateEntityUri(shape: string, options?: SparqlOptions): string;