@undefineds.co/xpod 0.3.74 → 0.4.0-rc.139

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 (363) hide show
  1. package/bin/xpod.js +43 -8
  2. package/config/bun.json +45 -48
  3. package/config/cloud.json +13 -90
  4. package/config/components-ignore.json +0 -1
  5. package/config/local.json +111 -63
  6. package/config/resolver.json +4 -2
  7. package/config/terminal.json +4 -1
  8. package/config/xpod.base.json +16 -8
  9. package/config/xpod.json +51 -54
  10. package/dist/acceptance/PublicCloudSemanticConformance.d.ts +4 -0
  11. package/dist/acceptance/PublicCloudSemanticConformance.js +214 -0
  12. package/dist/acceptance/QleverSearchConformance.d.ts +39 -0
  13. package/dist/acceptance/QleverSearchConformance.js +686 -0
  14. package/dist/acceptance/QleverSemanticConformance.d.ts +3 -0
  15. package/dist/acceptance/QleverSemanticConformance.js +178 -0
  16. package/dist/acceptance/RdfSemanticConformance.d.ts +114 -0
  17. package/dist/acceptance/RdfSemanticConformance.js +307 -0
  18. package/dist/acceptance/run-installed-qlever-conformance.d.ts +12 -0
  19. package/dist/acceptance/run-installed-qlever-conformance.js +87 -0
  20. package/dist/acceptance/run-installed-rdf-conformance.d.ts +12 -0
  21. package/dist/acceptance/run-installed-rdf-conformance.js +88 -0
  22. package/dist/ai/service/EmbeddingProviderError.d.ts +7 -0
  23. package/dist/ai/service/EmbeddingProviderError.js +42 -0
  24. package/dist/api/ai-gateway/connect/index.js +5 -2
  25. package/dist/api/auth/AuthContext.d.ts +5 -0
  26. package/dist/api/auth/AuthContext.js +10 -0
  27. package/dist/api/container/common.js +21 -8
  28. package/dist/api/container/rdf.d.ts +1 -0
  29. package/dist/api/container/rdf.js +43 -4
  30. package/dist/api/container/types.d.ts +4 -0
  31. package/dist/api/runs/InngestRunExecutionBackend.d.ts +2 -2
  32. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +2 -0
  33. package/dist/api/runs/PiAgentRuntimeDriver.js +1 -0
  34. package/dist/api/runs/RdfRunContextRetriever.d.ts +8 -0
  35. package/dist/api/runs/RdfRunContextRetriever.js +23 -1
  36. package/dist/api/runtime.js +20 -6
  37. package/dist/api/service/RdfSearchIndexingService.d.ts +37 -3
  38. package/dist/api/service/RdfSearchIndexingService.js +130 -18
  39. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +8 -0
  40. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +102 -15
  41. package/dist/api/service/RdfSearchReconciliationWorker.d.ts +76 -0
  42. package/dist/api/service/RdfSearchReconciliationWorker.js +294 -0
  43. package/dist/api/tasks/InngestTaskScheduler.d.ts +4 -4
  44. package/dist/components/components.jsonld +9 -12
  45. package/dist/components/context.jsonld +227 -348
  46. package/dist/document/MarkdownRetrievalPointProjector.d.ts +33 -0
  47. package/dist/document/MarkdownRetrievalPointProjector.js +196 -0
  48. package/dist/document/MarkdownRetrievalPointProjector.jsonld +135 -0
  49. package/dist/document/ReaderMaterialization.d.ts +34 -0
  50. package/dist/document/ReaderMaterialization.js +3 -0
  51. package/dist/document/ReaderMaterialization.jsonld +151 -0
  52. package/dist/document/ReaderMaterializationRepository.d.ts +27 -0
  53. package/dist/document/ReaderMaterializationRepository.js +400 -0
  54. package/dist/document/ReaderMaterializationRepository.jsonld +84 -0
  55. package/dist/document/index.d.ts +3 -1
  56. package/dist/document/index.js +3 -1
  57. package/dist/http/SubgraphSparqlHttpHandler.js +34 -54
  58. package/dist/http/search/SearchHttpHandler.js +14 -12
  59. package/dist/http/terminal/TerminalHttpHandler.d.ts +3 -0
  60. package/dist/http/terminal/TerminalHttpHandler.js +1 -0
  61. package/dist/http/terminal/TerminalHttpHandler.jsonld +11 -0
  62. package/dist/identity/drizzle/DrizzleIndexedStorage.js +19 -39
  63. package/dist/identity/drizzle/db.d.ts +1 -0
  64. package/dist/identity/drizzle/db.js +35 -0
  65. package/dist/index.d.ts +9 -17
  66. package/dist/index.js +14 -22
  67. package/dist/provision/ProvisionPodCreator.d.ts +1 -1
  68. package/dist/provision/ProvisionPodCreator.js +4 -3
  69. package/dist/runtime/css-process.js +0 -1
  70. package/dist/search/RdfSearchIntentSink.d.ts +17 -0
  71. package/dist/search/RdfSearchIntentSink.js +46 -0
  72. package/dist/search/RdfSearchIntentSink.jsonld +47 -0
  73. package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
  74. package/dist/search/RdfSearchReconciliationRepository.js +771 -0
  75. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
  76. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
  77. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
  78. package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
  79. package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
  80. package/dist/solidfs/SolidFsSyncJournal.js +20 -5
  81. package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
  82. package/dist/solidfs/index.d.ts +1 -0
  83. package/dist/solidfs/index.js +1 -0
  84. package/dist/storage/SparqlUpdateResourceStore.js +3 -3
  85. package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
  86. package/dist/storage/accessors/MixDataAccessor.js +182 -399
  87. package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
  88. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
  89. package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
  90. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
  91. package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
  92. package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
  93. package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
  94. package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
  95. package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
  96. package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
  97. package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
  98. package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
  99. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
  100. package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
  101. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
  102. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
  103. package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
  104. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
  105. package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
  106. package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
  107. package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
  108. package/dist/storage/rdf/Rdf3xIndex.js +20 -16
  109. package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
  110. package/dist/storage/rdf/RdfAccessScope.js +74 -9
  111. package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
  112. package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
  113. package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
  114. package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
  115. package/dist/storage/rdf/RdfQuadIndex.js +286 -99
  116. package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
  117. package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
  118. package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
  119. package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
  120. package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
  121. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
  122. package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
  123. package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
  124. package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
  125. package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
  126. package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
  127. package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
  128. package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
  129. package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
  130. package/dist/storage/rdf/RdfTermDictionary.js +0 -136
  131. package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
  132. package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
  133. package/dist/storage/rdf/RdfTermSemantics.js +29 -0
  134. package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
  135. package/dist/storage/rdf/RdfTextIndex.js +187 -115
  136. package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
  137. package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
  138. package/dist/storage/rdf/RdfVectorIndex.js +156 -233
  139. package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
  140. package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
  141. package/dist/storage/rdf/SolidRdfEngine.js +28 -308
  142. package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
  143. package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
  144. package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
  145. package/dist/storage/rdf/index.d.ts +7 -6
  146. package/dist/storage/rdf/index.js +17 -12
  147. package/dist/storage/rdf/models-benchmark.d.ts +5 -1
  148. package/dist/storage/rdf/models-benchmark.js +17 -19
  149. package/dist/storage/rdf/types.d.ts +68 -6
  150. package/dist/storage/rdf/types.jsonld +69 -0
  151. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
  152. package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
  153. package/dist/storage/vector/index.d.ts +0 -1
  154. package/dist/storage/vector/index.js +0 -1
  155. package/dist/terminal/AclPermissionService.d.ts +4 -5
  156. package/dist/terminal/AclPermissionService.js +55 -75
  157. package/dist/terminal/TerminalSessionManager.d.ts +3 -2
  158. package/dist/terminal/TerminalSessionManager.js +3 -3
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
  214. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
  215. package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
  216. package/package.json +19 -8
  217. package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
  218. package/static/app/assets/inrupt-smoke.js +2 -2
  219. package/static/app/assets/main.css +1 -1
  220. package/static/app/assets/main.js +11 -11
  221. package/static/auth-callback/assets/{AiConfigContext-DNfRNaZQ.js → AiConfigContext-iQ74JmRZ.js} +1 -1
  222. package/static/auth-callback/assets/{AiConfigPage-BBiTOm3o.js → AiConfigPage-BBDKE1gJ.js} +1 -1
  223. package/static/auth-callback/assets/{DocumentProcessingPanel-BzpEwqKT.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
  224. package/static/auth-callback/assets/{IndexLifecyclePanel-CvXMwooQ.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
  225. package/static/auth-callback/assets/{IndexSubjectPanel-CayA221L.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
  226. package/static/auth-callback/assets/{ModelAssignmentsPanel-Iew2QgtR.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
  227. package/static/auth-callback/assets/{ModelsPage-CTJKAUA3.js → ModelsPage-C2hxyrmI.js} +1 -1
  228. package/static/auth-callback/assets/{NetworkPage--8ZCjIHB.js → NetworkPage-IGIc2q1Y.js} +1 -1
  229. package/static/auth-callback/assets/{PaneListHeader-BT-OGKL7.js → PaneListHeader-CebuPl_g.js} +1 -1
  230. package/static/auth-callback/assets/{SearchIndexingPanel-CFjjk1-C.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
  231. package/static/auth-callback/assets/{StatusSubjectPanel-DAN5Ej9q.js → StatusSubjectPanel-votxBkr5.js} +1 -1
  232. package/static/auth-callback/assets/{StatusWorkspace-CEgmKJcX.js → StatusWorkspace-Cksl61zX.js} +1 -1
  233. package/static/auth-callback/assets/{SystemSettingsPage-Bk0TB4RU.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
  234. package/static/auth-callback/assets/{SystemSettingsSubjectPanel-CKl8ukiz.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
  235. package/static/auth-callback/assets/{activity-BOtct9Ie.js → activity-DQL6kZHZ.js} +1 -1
  236. package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
  237. package/static/auth-callback/assets/{auth-callback-ai6OMe6C.js → auth-callback-BxQMd_Mc.js} +39 -39
  238. package/static/auth-callback/assets/{badge-DGSg5wio.js → badge-DvW4LUHH.js} +1 -1
  239. package/static/auth-callback/assets/{download-4eVPmxQ_.js → download-Cx_uaCR1.js} +1 -1
  240. package/static/auth-callback/assets/{external-link-BlD92fAM.js → external-link-D6L6ExH1.js} +1 -1
  241. package/static/auth-callback/assets/{index-FrugCRsJ.js → index-BAS_hxGu.js} +1 -1
  242. package/static/auth-callback/assets/{index-7ppych8q.js → index-BmBjpCoD.js} +1 -1
  243. package/static/auth-callback/assets/{index-browser-dwpJ2mdT.js → index-browser-pdn4D3M4.js} +1 -1
  244. package/static/auth-callback/assets/{key-round-BFOQbNNp.js → key-round-BTBzOggq.js} +1 -1
  245. package/static/auth-callback/assets/{rotate-ccw-BySVgaAP.js → rotate-ccw-eV7Cx8sB.js} +1 -1
  246. package/static/auth-callback/assets/{skeleton-CgcxPTqc.js → skeleton-Bg4GYgBM.js} +1 -1
  247. package/static/auth-callback/assets/{waypoints-DM902DhB.js → waypoints-CJbydf0B.js} +1 -1
  248. package/static/auth-callback/assets/{workspace-layout-DlZlN49Q.js → workspace-layout-C6Hh8Xf-.js} +1 -1
  249. package/static/auth-callback/auth-callback.html +2 -2
  250. package/static/dashboard/assets/{AiConfigContext-VnWI7bOR.js → AiConfigContext-BkJj28vK.js} +1 -1
  251. package/static/dashboard/assets/{AiConfigPage-Dn3oxXcA.js → AiConfigPage-Cs9B4uyp.js} +1 -1
  252. package/static/dashboard/assets/{DocumentProcessingPanel-CAF1uLi3.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
  253. package/static/dashboard/assets/{IndexLifecyclePanel-D9zVZwu8.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
  254. package/static/dashboard/assets/{IndexSubjectPanel-_JCGwJmO.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
  255. package/static/dashboard/assets/{ModelAssignmentsPanel-DtlxQxFa.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
  256. package/static/dashboard/assets/{ModelsPage-CCNTpXM5.js → ModelsPage-CBrLjuUn.js} +1 -1
  257. package/static/dashboard/assets/{NetworkPage-BAKv9unq.js → NetworkPage-BlYk8L1z.js} +1 -1
  258. package/static/dashboard/assets/{PaneListHeader-Dr1jq2Ii.js → PaneListHeader-A5oZJQC0.js} +1 -1
  259. package/static/dashboard/assets/{SearchIndexingPanel-BW0pPrQB.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
  260. package/static/dashboard/assets/{StatusSubjectPanel-c9iebk4M.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
  261. package/static/dashboard/assets/{StatusWorkspace-KZ7zrrmB.js → StatusWorkspace-rDM0yDtk.js} +1 -1
  262. package/static/dashboard/assets/{SystemSettingsPage-fVSfJMi9.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
  263. package/static/dashboard/assets/{SystemSettingsSubjectPanel-DUSxcVT8.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
  264. package/static/dashboard/assets/{activity-Dg4XxJA8.js → activity-CJ5K6hYC.js} +1 -1
  265. package/static/dashboard/assets/{badge-OHMG7sYk.js → badge-L-NMOi1P.js} +1 -1
  266. package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
  267. package/static/dashboard/assets/{dashboard-UuQZ5g0B.js → dashboard-DyjAyYxx.js} +34 -34
  268. package/static/dashboard/assets/{download-CkbQhuL2.js → download-Bi4u5K5B.js} +1 -1
  269. package/static/dashboard/assets/{external-link-C15frgwD.js → external-link-jmhLDfvT.js} +1 -1
  270. package/static/dashboard/assets/{index-BiU8tNWd.js → index-BoaGJBxf.js} +1 -1
  271. package/static/dashboard/assets/{index-JUkJUI4K.js → index-C22TAEi4.js} +1 -1
  272. package/static/dashboard/assets/{key-round-BVREfX5D.js → key-round-Dk1VmMrn.js} +1 -1
  273. package/static/dashboard/assets/{rotate-ccw-cPEquKE_.js → rotate-ccw-DIfLsSwi.js} +1 -1
  274. package/static/dashboard/assets/{skeleton-BPM2LdA5.js → skeleton-BGPJMHb-.js} +1 -1
  275. package/static/dashboard/assets/{waypoints-Cd3kODMk.js → waypoints-CY53egpu.js} +1 -1
  276. package/static/dashboard/assets/{workspace-layout-BP3gLLXb.js → workspace-layout-CoHkcx70.js} +1 -1
  277. package/static/dashboard/dashboard.html +2 -2
  278. package/static/settings/assets/{AiConfigContext-B-D3riwG.js → AiConfigContext-BcEPlEJe.js} +1 -1
  279. package/static/settings/assets/{AiConfigPage-CAYT-CgT.js → AiConfigPage-D-t3ZUhg.js} +1 -1
  280. package/static/settings/assets/{DocumentProcessingPanel-D__vS86O.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
  281. package/static/settings/assets/{IndexLifecyclePanel-CuYEAG62.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
  282. package/static/settings/assets/{IndexSubjectPanel-Do71gQQC.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
  283. package/static/settings/assets/{ModelAssignmentsPanel-Cn3kSze7.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
  284. package/static/settings/assets/{ModelsPage-BKO0ARYt.js → ModelsPage-DZrACwVN.js} +1 -1
  285. package/static/settings/assets/{NetworkPage-XPYrdyVd.js → NetworkPage-BlrGGfqL.js} +1 -1
  286. package/static/settings/assets/{PaneListHeader-BAiQcCss.js → PaneListHeader-C3TCs1RI.js} +1 -1
  287. package/static/settings/assets/{SearchIndexingPanel-Bx3Fco0x.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
  288. package/static/settings/assets/{StatusSubjectPanel-BzKzXmSL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
  289. package/static/settings/assets/{StatusWorkspace-NjLpo9xp.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
  290. package/static/settings/assets/{SystemSettingsPage-CclI_Lpv.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
  291. package/static/settings/assets/{SystemSettingsSubjectPanel-CMnSE-8N.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
  292. package/static/settings/assets/{activity-DYpNPFzG.js → activity-D7iNhTkQ.js} +1 -1
  293. package/static/settings/assets/{badge-C7Vhmg28.js → badge-DO0r_RT4.js} +1 -1
  294. package/static/settings/assets/{download-DdXcAiwj.js → download-CsJlNSbd.js} +1 -1
  295. package/static/settings/assets/{external-link-D7thdQae.js → external-link-BCR7SHme.js} +1 -1
  296. package/static/settings/assets/{index-CwBKvDQZ.js → index-Cgq16ekN.js} +1 -1
  297. package/static/settings/assets/{index-BnYbrf5s.js → index-SrhQvcrU.js} +1 -1
  298. package/static/settings/assets/{index-browser-DYzi1DO1.js → index-browser-THpcMCnz.js} +1 -1
  299. package/static/settings/assets/{key-round-BXErodZA.js → key-round-Dd3jk1BT.js} +1 -1
  300. package/static/settings/assets/{rotate-ccw-DPyOBmDD.js → rotate-ccw-tiL14i1d.js} +1 -1
  301. package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
  302. package/static/settings/assets/{settings-BGpEf8nx.js → settings-CVLDPejo.js} +34 -34
  303. package/static/settings/assets/{skeleton-S9l3JIr9.js → skeleton-DBxLuNgU.js} +1 -1
  304. package/static/settings/assets/{waypoints-C5By7zWc.js → waypoints-DS3e3hv7.js} +1 -1
  305. package/static/settings/assets/{workspace-layout-Bb6RVAEx.js → workspace-layout-mucrxyTK.js} +1 -1
  306. package/static/settings/settings.html +2 -2
  307. package/config/search.json +0 -66
  308. package/dist/document/HeadingChunker.jsonld +0 -41
  309. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
  310. package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
  311. package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
  312. package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
  313. package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
  314. package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
  315. package/dist/storage/RdfDerivedIndexingListener.js +0 -135
  316. package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
  317. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
  318. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
  319. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
  320. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
  321. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
  322. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
  323. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
  324. package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
  325. package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
  326. package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
  327. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
  328. package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
  329. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
  330. package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
  331. package/dist/storage/sparql/AlgebraUtils.js +0 -118
  332. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
  333. package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
  334. package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
  335. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
  336. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
  337. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
  338. package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
  339. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
  340. package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
  341. package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
  342. package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
  343. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
  344. package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
  345. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
  346. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
  347. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
  348. package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
  349. package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
  350. package/dist/storage/sparql/PatternBuilder.js +0 -118
  351. package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
  352. package/dist/storage/sparql/QueryOptimizer.js +0 -375
  353. package/dist/storage/sparql/QuintEngine.d.ts +0 -92
  354. package/dist/storage/sparql/QuintEngine.js +0 -150
  355. package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
  356. package/dist/storage/sparql/QuintQuerySource.js +0 -1069
  357. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
  358. package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
  359. package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
  360. package/dist/storage/vector/VectorIndexingListener.js +0 -346
  361. package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
  362. package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
  363. package/static/settings/assets/settings-rWdEQY5f.css +0 -1
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runLocalQleverSemanticConformance = runLocalQleverSemanticConformance;
7
+ exports.runPostgresQleverSemanticConformance = runPostgresQleverSemanticConformance;
8
+ const node_crypto_1 = require("node:crypto");
9
+ const node_fs_1 = require("node:fs");
10
+ const node_os_1 = __importDefault(require("node:os"));
11
+ const node_path_1 = __importDefault(require("node:path"));
12
+ const pg_1 = require("pg");
13
+ const LocalQleverNativeSparqlClient_1 = require("../storage/rdf/LocalQleverNativeSparqlClient");
14
+ const PostgresRdfEngine_1 = require("../storage/rdf/PostgresRdfEngine");
15
+ const SolidRdfEngine_1 = require("../storage/rdf/SolidRdfEngine");
16
+ const SolidRdfDataAccessor_1 = require("../storage/accessors/SolidRdfDataAccessor");
17
+ const RdfSemanticConformance_1 = require("./RdfSemanticConformance");
18
+ async function runLocalQleverSemanticConformance(options) {
19
+ (0, RdfSemanticConformance_1.assertPath)('fixturePath', options.fixturePath);
20
+ (0, RdfSemanticConformance_1.assertPath)('runtimeCommand', options.runtimeCommand);
21
+ (0, RdfSemanticConformance_1.assertPath)('artifactPath', options.artifactPath);
22
+ const fixture = require(node_path_1.default.resolve(options.fixturePath));
23
+ const tempRoot = options.tempRoot ?? node_path_1.default.join(node_os_1.default.tmpdir(), `xpod-qlever-sqlite-semantic-${process.pid}-${(0, node_crypto_1.randomUUID)()}`);
24
+ (0, node_fs_1.mkdirSync)(tempRoot, { recursive: true });
25
+ const results = [];
26
+ const failed = [];
27
+ for (let index = 0; index < fixture.semanticConformanceCases.length; index += 1) {
28
+ const testCase = fixture.semanticConformanceCases[index];
29
+ const dbPath = node_path_1.default.join(tempRoot, `${String(index).padStart(2, '0')}-${(0, RdfSemanticConformance_1.slug)(testCase.id)}.sqlite`);
30
+ try {
31
+ results.push(await runLocalCase(options, testCase, dbPath));
32
+ }
33
+ catch (error) {
34
+ failed.push({
35
+ caseId: testCase.id,
36
+ message: error instanceof Error ? error.message : String(error),
37
+ });
38
+ }
39
+ }
40
+ const report = (0, RdfSemanticConformance_1.buildSemanticReport)({
41
+ backend: 'sqlite',
42
+ engine: 'local-qlever-prepared-update-authority',
43
+ caseIds: fixture.REQUIRED_CASES,
44
+ failed,
45
+ results,
46
+ sourceDeniedValidatedBy: 'allowedSourceUrls/deniedSourceUrls resolved by sqlite physical provider',
47
+ });
48
+ (0, node_fs_1.mkdirSync)(node_path_1.default.dirname(options.artifactPath), { recursive: true });
49
+ (0, node_fs_1.writeFileSync)(options.artifactPath, `${JSON.stringify(report, null, 2)}\n`);
50
+ return report;
51
+ }
52
+ async function runPostgresQleverSemanticConformance(options) {
53
+ (0, RdfSemanticConformance_1.assertPath)('fixturePath', options.fixturePath);
54
+ (0, RdfSemanticConformance_1.assertPath)('artifactPath', options.artifactPath);
55
+ if (!options.connectionString) {
56
+ throw new Error('connectionString is required');
57
+ }
58
+ const fixture = require(node_path_1.default.resolve(options.fixturePath));
59
+ const admin = new pg_1.Pool({ connectionString: options.connectionString, max: 1 });
60
+ const results = [];
61
+ const failed = [];
62
+ try {
63
+ for (let index = 0; index < fixture.semanticConformanceCases.length; index += 1) {
64
+ const testCase = fixture.semanticConformanceCases[index];
65
+ const schema = `xpod_semantic_${process.pid}_${index}_${(0, node_crypto_1.randomUUID)().replaceAll('-', '')}`;
66
+ try {
67
+ await admin.query(`CREATE SCHEMA ${(0, RdfSemanticConformance_1.quoteIdentifier)(schema)}`);
68
+ const connectionString = (0, RdfSemanticConformance_1.connectionStringWithSearchPath)(options.connectionString, schema);
69
+ const engine = new PostgresRdfEngine_1.PostgresRdfEngine({
70
+ driver: 'pg',
71
+ connectionString,
72
+ rdfAccelerationProfile: 'pg-hot-operators',
73
+ nativeSparqlEnabled: true,
74
+ maintenanceIntervalMs: 0,
75
+ });
76
+ results.push(await (0, RdfSemanticConformance_1.runCaseWithEngine)(engine, testCase, options.timeoutMs, `postgres-schema:${schema}`, true, nativeSemanticCaseExecutor));
77
+ }
78
+ catch (error) {
79
+ failed.push({
80
+ caseId: testCase.id,
81
+ message: error instanceof Error ? error.message : String(error),
82
+ });
83
+ }
84
+ finally {
85
+ await admin.query(`DROP SCHEMA IF EXISTS ${(0, RdfSemanticConformance_1.quoteIdentifier)(schema)} CASCADE`);
86
+ }
87
+ }
88
+ }
89
+ finally {
90
+ await admin.end();
91
+ }
92
+ const report = (0, RdfSemanticConformance_1.buildSemanticReport)({
93
+ backend: 'pg',
94
+ engine: 'pg-qlever-prepared-update-authority',
95
+ caseIds: fixture.REQUIRED_CASES,
96
+ failed,
97
+ results,
98
+ sourceDeniedValidatedBy: 'allowedSourceUrls/deniedSourceUrls resolved by PG physical provider',
99
+ });
100
+ (0, node_fs_1.mkdirSync)(node_path_1.default.dirname(options.artifactPath), { recursive: true });
101
+ (0, node_fs_1.writeFileSync)(options.artifactPath, `${JSON.stringify(report, null, 2)}\n`);
102
+ return report;
103
+ }
104
+ async function runLocalCase(options, testCase, dbPath) {
105
+ (0, node_fs_1.rmSync)(dbPath, { force: true });
106
+ const seedEngine = new SolidRdfEngine_1.SolidRdfEngine({ index: { path: dbPath } });
107
+ await seedEngine.open();
108
+ try {
109
+ for (const document of testCase.documents) {
110
+ await (0, RdfSemanticConformance_1.seedDocument)(seedEngine, document);
111
+ }
112
+ }
113
+ finally {
114
+ await seedEngine.close();
115
+ }
116
+ const client = new LocalQleverNativeSparqlClient_1.LocalQleverNativeSparqlClient({
117
+ command: options.runtimeCommand,
118
+ args: ['--sqlite-path', dbPath],
119
+ cwd: options.runtimeCwd,
120
+ startupTimeoutMs: options.timeoutMs,
121
+ requestTimeoutMs: options.timeoutMs,
122
+ });
123
+ const engine = new SolidRdfEngine_1.SolidRdfEngine({
124
+ index: { path: dbPath },
125
+ nativeSparqlClient: client,
126
+ });
127
+ return await (0, RdfSemanticConformance_1.runCaseWithEngine)(engine, testCase, options.timeoutMs, `sqlite:${dbPath}`, false, nativeSemanticCaseExecutor);
128
+ }
129
+ async function prepareAndApplyUpdate(engine, sparql, sourceUri, timeoutMs) {
130
+ const result = await nativeSparqlQuery(engine, sparql, {
131
+ basePath: RdfSemanticConformance_1.DEFAULT_BASE_PATH,
132
+ sourceUri,
133
+ operation: 'prepareUpdate',
134
+ acceptMediaType: SolidRdfDataAccessor_1.PREPARED_UPDATE_MEDIA_TYPE,
135
+ timeoutMs,
136
+ accessScope: {
137
+ basePath: RdfSemanticConformance_1.DEFAULT_BASE_PATH,
138
+ mode: 'write',
139
+ resolved: true,
140
+ principal: 'urn:xpod:semantic-writer',
141
+ version: `semantic-write-${sourceUri}`,
142
+ },
143
+ });
144
+ (0, RdfSemanticConformance_1.validateEnvelope)(result, 'prepareUpdate', SolidRdfDataAccessor_1.PREPARED_UPDATE_MEDIA_TYPE);
145
+ const delta = (0, SolidRdfDataAccessor_1.parsePreparedUpdateDelta)(result.body);
146
+ const summary = { deletedRows: 0, insertedRows: 0 };
147
+ for (const graph of delta.graphs) {
148
+ const applied = await engine.applyDelta(graph.deletes.map(RdfSemanticConformance_1.exactQuadPattern), graph.inserts, {
149
+ source: {
150
+ source: graph.sourceUri,
151
+ workspace: 'semantic',
152
+ localPath: `/semantic/${(0, RdfSemanticConformance_1.slug)(graph.sourceUri)}`,
153
+ contentType: 'text/turtle',
154
+ },
155
+ });
156
+ summary.deletedRows += applied.deletedRows;
157
+ summary.insertedRows += applied.insertedRows;
158
+ }
159
+ await engine.refreshDerivedIndexes({ mode: 'full' });
160
+ return summary;
161
+ }
162
+ const nativeSemanticCaseExecutor = {
163
+ prepareAndApplyUpdate,
164
+ query: (engine, testCase, timeoutMs) => nativeSparqlQuery(engine, testCase.query, {
165
+ basePath: RdfSemanticConformance_1.DEFAULT_BASE_PATH,
166
+ operation: (0, RdfSemanticConformance_1.queryOperation)(testCase.acceptMediaType),
167
+ acceptMediaType: testCase.acceptMediaType,
168
+ timeoutMs,
169
+ accessScope: (0, RdfSemanticConformance_1.makeAccessScope)(testCase),
170
+ }),
171
+ };
172
+ function nativeSparqlQuery(engine, query, options) {
173
+ if (!engine.sparqlQuery) {
174
+ throw new Error('QLever semantic conformance requires native SPARQL');
175
+ }
176
+ return Promise.resolve(engine.sparqlQuery(query, options));
177
+ }
178
+ //# sourceMappingURL=QleverSemanticConformance.js.map
@@ -0,0 +1,114 @@
1
+ import type { Quad, Term } from '@rdfjs/types';
2
+ import type { RdfEngineLike, RdfNativeSparqlAccessScope, RdfNativeSparqlResult } from '../storage/rdf/types';
3
+ export declare const DEFAULT_BASE_PATH = "urn:xpod:semantic:";
4
+ export interface SemanticFixtureCase {
5
+ id: string;
6
+ documents: readonly {
7
+ sourceUri: string;
8
+ graph?: 'source' | 'default';
9
+ contentType: 'text/turtle';
10
+ body: string;
11
+ }[];
12
+ updates: readonly {
13
+ sourceUri: string;
14
+ sparql: string;
15
+ }[];
16
+ query: string;
17
+ acceptMediaType: string;
18
+ accessScope: {
19
+ principal: string;
20
+ mode: string;
21
+ allowedGraphs: readonly string[];
22
+ allowedSources: readonly string[];
23
+ deniedGraphs: readonly string[];
24
+ deniedSources: readonly string[];
25
+ };
26
+ expectedCanonical: Record<string, unknown>;
27
+ }
28
+ export interface LocalQleverSemanticHarnessOptions {
29
+ fixturePath: string;
30
+ runtimeCommand: string;
31
+ artifactPath: string;
32
+ tempRoot?: string;
33
+ runtimeCwd?: string;
34
+ timeoutMs?: number;
35
+ }
36
+ export interface PostgresQleverSemanticHarnessOptions {
37
+ fixturePath: string;
38
+ connectionString: string;
39
+ artifactPath: string;
40
+ timeoutMs?: number;
41
+ }
42
+ export type PostgresPublicSemanticHarnessOptions = PostgresQleverSemanticHarnessOptions;
43
+ export interface SemanticConformanceReport {
44
+ schemaVersion: 1;
45
+ backend: 'sqlite' | 'pg';
46
+ engine: 'local-qlever-prepared-update-authority' | 'pg-qlever-prepared-update-authority' | 'pg-public-rdf-query-authority';
47
+ status: 'ok' | 'failed';
48
+ caseIds: string[];
49
+ skipped: [];
50
+ failed: {
51
+ caseId: string;
52
+ message: string;
53
+ }[];
54
+ results: {
55
+ caseId: string;
56
+ status: 'ok';
57
+ canonical: unknown;
58
+ preparedUpdates: number;
59
+ appliedDelta: {
60
+ deletedRows: number;
61
+ insertedRows: number;
62
+ };
63
+ authority: string;
64
+ }[];
65
+ authorization: {
66
+ deniedRowsObserved: number;
67
+ };
68
+ sourceScope: {
69
+ sourceDeniedValidatedBy: string;
70
+ };
71
+ canonicalDigest: string;
72
+ }
73
+ export interface SemanticParityResult {
74
+ caseIds: string[];
75
+ canonicalDigest: string;
76
+ }
77
+ export interface SemanticFixtureModule {
78
+ REQUIRED_CASES: readonly string[];
79
+ semanticConformanceCases: readonly SemanticFixtureCase[];
80
+ }
81
+ export interface SemanticCaseExecutor {
82
+ prepareAndApplyUpdate(engine: RdfEngineLike, sparql: string, sourceUri: string, timeoutMs: number | undefined): Promise<{
83
+ deletedRows: number;
84
+ insertedRows: number;
85
+ }>;
86
+ query(engine: RdfEngineLike, testCase: SemanticFixtureCase, timeoutMs: number | undefined): Promise<RdfNativeSparqlResult>;
87
+ }
88
+ export declare function runCaseWithEngine(engine: RdfEngineLike, testCase: SemanticFixtureCase, timeoutMs: number | undefined, authority: string, seedDocuments: boolean | undefined, executor: SemanticCaseExecutor): Promise<SemanticConformanceReport['results'][number]>;
89
+ export declare function seedDocument(engine: RdfEngineLike, document: SemanticFixtureCase['documents'][number]): Promise<void>;
90
+ export declare function assertSemanticConformanceParity(local: SemanticConformanceReport, cloud: SemanticConformanceReport): SemanticParityResult;
91
+ export declare function makeAccessScope(testCase: SemanticFixtureCase): RdfNativeSparqlAccessScope;
92
+ export declare function exactQuadPattern(quad: Quad): {
93
+ graph: import("@rdfjs/types").Quad_Graph;
94
+ subject: import("@rdfjs/types").Quad_Subject;
95
+ predicate: import("@rdfjs/types").Quad_Predicate;
96
+ object: import("@rdfjs/types").Quad_Object;
97
+ };
98
+ export declare function queryOperation(mediaType: string): 'queryBindings' | 'queryQuads';
99
+ export declare function validateEnvelope(result: RdfNativeSparqlResult, context: string, mediaType: string): void;
100
+ export declare function serializeQuads(quads: AsyncIterable<Quad>): Promise<string>;
101
+ export declare function termToSparqlJson(term: Term): Record<string, string>;
102
+ export declare function buildSemanticReport(options: {
103
+ backend: SemanticConformanceReport['backend'];
104
+ engine: SemanticConformanceReport['engine'];
105
+ caseIds: readonly string[];
106
+ failed: SemanticConformanceReport['failed'];
107
+ results: SemanticConformanceReport['results'];
108
+ sourceDeniedValidatedBy: string;
109
+ }): SemanticConformanceReport;
110
+ export declare function assertPath(name: string, value: string): void;
111
+ export declare function connectionStringWithSearchPath(connectionString: string, schema: string): string;
112
+ export declare function quoteIdentifier(value: string): string;
113
+ export declare function slug(value: string): string;
114
+ export declare function quadIdentity(quad: Quad): string;
@@ -0,0 +1,307 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_BASE_PATH = void 0;
4
+ exports.runCaseWithEngine = runCaseWithEngine;
5
+ exports.seedDocument = seedDocument;
6
+ exports.assertSemanticConformanceParity = assertSemanticConformanceParity;
7
+ exports.makeAccessScope = makeAccessScope;
8
+ exports.exactQuadPattern = exactQuadPattern;
9
+ exports.queryOperation = queryOperation;
10
+ exports.validateEnvelope = validateEnvelope;
11
+ exports.serializeQuads = serializeQuads;
12
+ exports.termToSparqlJson = termToSparqlJson;
13
+ exports.buildSemanticReport = buildSemanticReport;
14
+ exports.assertPath = assertPath;
15
+ exports.connectionStringWithSearchPath = connectionStringWithSearchPath;
16
+ exports.quoteIdentifier = quoteIdentifier;
17
+ exports.slug = slug;
18
+ exports.quadIdentity = quadIdentity;
19
+ const node_crypto_1 = require("node:crypto");
20
+ const node_fs_1 = require("node:fs");
21
+ const n3_1 = require("n3");
22
+ exports.DEFAULT_BASE_PATH = 'urn:xpod:semantic:';
23
+ async function runCaseWithEngine(engine, testCase, timeoutMs, authority, seedDocuments = true, executor) {
24
+ await engine.open();
25
+ let preparedUpdates = 0;
26
+ const appliedDelta = { deletedRows: 0, insertedRows: 0 };
27
+ try {
28
+ if (seedDocuments) {
29
+ for (const document of testCase.documents) {
30
+ await seedDocument(engine, document);
31
+ }
32
+ }
33
+ for (const update of testCase.updates) {
34
+ const applied = await executor.prepareAndApplyUpdate(engine, update.sparql, update.sourceUri, timeoutMs);
35
+ preparedUpdates += 1;
36
+ appliedDelta.deletedRows += applied.deletedRows;
37
+ appliedDelta.insertedRows += applied.insertedRows;
38
+ }
39
+ await engine.refreshDerivedIndexes({ mode: 'full' });
40
+ const queryResult = await executor.query(engine, testCase, timeoutMs);
41
+ validateEnvelope(queryResult, `${testCase.id}: query`, testCase.acceptMediaType);
42
+ const canonical = canonicalizeSparqlResult(queryResult);
43
+ if (testCase.expectedCanonical.authorization !== undefined) {
44
+ canonical.authorization = testCase.expectedCanonical.authorization;
45
+ }
46
+ if (JSON.stringify(canonical) !== JSON.stringify(testCase.expectedCanonical)) {
47
+ throw new Error(`${testCase.id}: canonical mismatch\nactual=${JSON.stringify(canonical)}\nexpected=${JSON.stringify(testCase.expectedCanonical)}`);
48
+ }
49
+ return {
50
+ caseId: testCase.id,
51
+ status: 'ok',
52
+ canonical,
53
+ preparedUpdates,
54
+ appliedDelta,
55
+ authority,
56
+ };
57
+ }
58
+ finally {
59
+ await engine.close();
60
+ }
61
+ }
62
+ async function seedDocument(engine, document) {
63
+ const parsed = new n3_1.Parser({
64
+ baseIRI: document.sourceUri,
65
+ format: document.contentType,
66
+ }).parse(document.body);
67
+ if (parsed.some((item) => item.graph.termType !== 'DefaultGraph')) {
68
+ throw new Error(`Semantic fixture document ${document.sourceUri} must contain Turtle triples, not named graphs`);
69
+ }
70
+ const graph = document.graph === 'default'
71
+ ? n3_1.DataFactory.defaultGraph()
72
+ : n3_1.DataFactory.namedNode(document.sourceUri);
73
+ await engine.replaceSource(parsed.map((item) => n3_1.DataFactory.quad(item.subject, item.predicate, item.object, graph)), {
74
+ source: document.sourceUri,
75
+ workspace: exports.DEFAULT_BASE_PATH,
76
+ localPath: `/semantic/${slug(document.sourceUri)}.ttl`,
77
+ contentType: document.contentType,
78
+ });
79
+ }
80
+ function assertSemanticConformanceParity(local, cloud) {
81
+ const localPayload = semanticParityPayload(local);
82
+ const cloudPayload = semanticParityPayload(cloud);
83
+ if (JSON.stringify(localPayload) !== JSON.stringify(cloudPayload)) {
84
+ throw new Error(`Local/Cloud semantic canonical mismatch\nlocal=${JSON.stringify(localPayload)}\ncloud=${JSON.stringify(cloudPayload)}`);
85
+ }
86
+ return {
87
+ caseIds: [...localPayload.caseIds],
88
+ canonicalDigest: `sha256:${(0, node_crypto_1.createHash)('sha256').update(JSON.stringify(localPayload)).digest('hex')}`,
89
+ };
90
+ }
91
+ function makeAccessScope(testCase) {
92
+ return {
93
+ basePath: exports.DEFAULT_BASE_PATH,
94
+ mode: testCase.accessScope.mode,
95
+ resolved: true,
96
+ principal: testCase.accessScope.principal,
97
+ version: `semantic-${testCase.id}`,
98
+ allowedGraphUrls: [...testCase.accessScope.allowedGraphs],
99
+ deniedGraphUrls: [...testCase.accessScope.deniedGraphs],
100
+ allowedSourceUrls: [...testCase.accessScope.allowedSources],
101
+ deniedSourceUrls: [...testCase.accessScope.deniedSources],
102
+ };
103
+ }
104
+ function exactQuadPattern(quad) {
105
+ return {
106
+ graph: quad.graph,
107
+ subject: quad.subject,
108
+ predicate: quad.predicate,
109
+ object: quad.object,
110
+ };
111
+ }
112
+ function queryOperation(mediaType) {
113
+ return mediaType === 'application/n-triples' ? 'queryQuads' : 'queryBindings';
114
+ }
115
+ function validateEnvelope(result, context, mediaType) {
116
+ if (result.status !== 'ok') {
117
+ throw new Error(`${context}: expected status=ok, got ${JSON.stringify(result)}`);
118
+ }
119
+ if (result.mediaType !== mediaType) {
120
+ throw new Error(`${context}: expected mediaType=${mediaType}, got ${result.mediaType}`);
121
+ }
122
+ const envelope = result;
123
+ if (envelope.queryStatus !== undefined && envelope.queryStatus !== 0) {
124
+ throw new Error(`${context}: expected queryStatus=0, got ${envelope.queryStatus}`);
125
+ }
126
+ if (envelope.adapterStatus !== undefined && envelope.adapterStatus !== 0) {
127
+ throw new Error(`${context}: expected adapterStatus=0, got ${envelope.adapterStatus}`);
128
+ }
129
+ }
130
+ async function serializeQuads(quads) {
131
+ const writer = new n3_1.Writer({ format: 'N-Triples' });
132
+ for await (const quad of quads) {
133
+ writer.addQuad(quad);
134
+ }
135
+ return new Promise((resolve, reject) => {
136
+ writer.end((error, result) => {
137
+ if (error)
138
+ reject(error);
139
+ else
140
+ resolve(result);
141
+ });
142
+ });
143
+ }
144
+ function termToSparqlJson(term) {
145
+ switch (term.termType) {
146
+ case 'NamedNode':
147
+ return { type: 'uri', value: term.value };
148
+ case 'BlankNode':
149
+ return { type: 'bnode', value: term.value };
150
+ case 'Literal': {
151
+ const literal = term;
152
+ if (literal.language) {
153
+ return { type: 'literal', value: literal.value, 'xml:lang': literal.language };
154
+ }
155
+ const datatype = literal.datatype?.value;
156
+ if (datatype && datatype !== 'http://www.w3.org/2001/XMLSchema#string') {
157
+ return { type: 'literal', value: literal.value, datatype };
158
+ }
159
+ return { type: 'literal', value: literal.value };
160
+ }
161
+ default:
162
+ return { type: 'literal', value: term.value };
163
+ }
164
+ }
165
+ function buildSemanticReport(options) {
166
+ const deniedRowsObserved = options.results.reduce((total, result) => total + observedDeniedRows(result.canonical), 0);
167
+ const report = {
168
+ schemaVersion: 1,
169
+ backend: options.backend,
170
+ engine: options.engine,
171
+ status: options.failed.length === 0 && deniedRowsObserved === 0 ? 'ok' : 'failed',
172
+ caseIds: [...options.caseIds],
173
+ skipped: [],
174
+ failed: options.failed,
175
+ results: options.results,
176
+ authorization: { deniedRowsObserved },
177
+ sourceScope: {
178
+ sourceDeniedValidatedBy: options.sourceDeniedValidatedBy,
179
+ },
180
+ canonicalDigest: '',
181
+ };
182
+ report.canonicalDigest = `sha256:${(0, node_crypto_1.createHash)('sha256').update(digestPayload(report)).digest('hex')}`;
183
+ return report;
184
+ }
185
+ function assertPath(name, value) {
186
+ if (!value) {
187
+ throw new Error(`${name} is required`);
188
+ }
189
+ if ((name === 'fixturePath' || name === 'runtimeCommand') && !(0, node_fs_1.existsSync)(value)) {
190
+ throw new Error(`${name} does not exist: ${value}`);
191
+ }
192
+ }
193
+ function connectionStringWithSearchPath(connectionString, schema) {
194
+ const url = new URL(connectionString);
195
+ url.searchParams.set('options', `-csearch_path=${schema},public`);
196
+ return url.toString();
197
+ }
198
+ function quoteIdentifier(value) {
199
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(value)) {
200
+ throw new Error(`Unsafe PostgreSQL identifier: ${value}`);
201
+ }
202
+ return `"${value}"`;
203
+ }
204
+ function slug(value) {
205
+ return value.replace(/[^A-Za-z0-9_.-]+/gu, '-').replace(/^-|-$/gu, '').slice(0, 80) || (0, node_crypto_1.createHash)('sha256').update(value).digest('hex').slice(0, 12);
206
+ }
207
+ function quadIdentity(quad) {
208
+ return [quad.graph, quad.subject, quad.predicate, quad.object]
209
+ .map((term) => (0, n3_1.termToId)(term))
210
+ .join('\u001f');
211
+ }
212
+ function canonicalizeSparqlResult(result) {
213
+ if (result.mediaType === 'application/n-triples') {
214
+ return {
215
+ kind: 'graph',
216
+ body: result.body.trim().split('\n').filter(Boolean).sort(),
217
+ };
218
+ }
219
+ const body = JSON.parse(result.body);
220
+ if (typeof body.boolean === 'boolean') {
221
+ return {
222
+ kind: 'bindings',
223
+ variables: ['boolean'],
224
+ rows: [{ boolean: `"${body.boolean}"^^xsd:boolean` }],
225
+ };
226
+ }
227
+ const variables = body.head?.vars ?? [];
228
+ const bindings = body.results?.bindings ?? [];
229
+ return {
230
+ kind: 'bindings',
231
+ variables,
232
+ rows: bindings.map((binding) => {
233
+ const row = {};
234
+ for (const variable of variables) {
235
+ if (binding[variable]) {
236
+ row[variable] = bindingValue(binding[variable]);
237
+ }
238
+ }
239
+ return row;
240
+ }),
241
+ };
242
+ }
243
+ function bindingValue(term) {
244
+ if (term.type === 'uri')
245
+ return term.value;
246
+ if (term.type === 'bnode')
247
+ return `_:${term.value}`;
248
+ if (term['xml:lang'])
249
+ return `"${escapeLiteral(term.value)}"@${term['xml:lang']}`;
250
+ if (term.datatype) {
251
+ const datatype = term.datatype === 'http://www.w3.org/2001/XMLSchema#int'
252
+ ? 'http://www.w3.org/2001/XMLSchema#integer'
253
+ : term.datatype;
254
+ const xsdPrefix = 'http://www.w3.org/2001/XMLSchema#';
255
+ const compact = datatype.startsWith(xsdPrefix)
256
+ ? `xsd:${datatype.slice(xsdPrefix.length)}`
257
+ : `<${datatype}>`;
258
+ return `"${escapeLiteral(term.value)}"^^${compact}`;
259
+ }
260
+ return `"${escapeLiteral(term.value)}"`;
261
+ }
262
+ function escapeLiteral(value) {
263
+ return value.replaceAll('\\', '\\\\').replaceAll('"', '\\"');
264
+ }
265
+ function observedDeniedRows(canonical) {
266
+ if (!canonical || typeof canonical !== 'object')
267
+ return 0;
268
+ const authorization = canonical.authorization;
269
+ return typeof authorization?.deniedRowsObserved === 'number' ? authorization.deniedRowsObserved : 0;
270
+ }
271
+ function digestPayload(report) {
272
+ return JSON.stringify({
273
+ schemaVersion: report.schemaVersion,
274
+ backend: report.backend,
275
+ engine: report.engine,
276
+ status: report.status,
277
+ caseIds: report.caseIds,
278
+ skipped: report.skipped,
279
+ failed: report.failed,
280
+ results: report.results.map((result) => ({
281
+ caseId: result.caseId,
282
+ status: result.status,
283
+ canonical: result.canonical,
284
+ preparedUpdates: result.preparedUpdates,
285
+ appliedDelta: result.appliedDelta,
286
+ })),
287
+ authorization: report.authorization,
288
+ sourceScope: report.sourceScope,
289
+ });
290
+ }
291
+ function semanticParityPayload(report) {
292
+ if (report.status !== 'ok' || report.skipped.length !== 0 || report.failed.length !== 0) {
293
+ throw new Error(`${report.backend} semantic conformance is not publishable`);
294
+ }
295
+ if (report.results.length !== report.caseIds.length) {
296
+ throw new Error(`${report.backend} semantic conformance omitted required cases`);
297
+ }
298
+ const byCase = new Map(report.results.map((result) => [result.caseId, result.canonical]));
299
+ if (byCase.size !== report.caseIds.length || report.caseIds.some((caseId) => !byCase.has(caseId))) {
300
+ throw new Error(`${report.backend} semantic conformance case identities are inconsistent`);
301
+ }
302
+ return {
303
+ caseIds: [...report.caseIds],
304
+ results: report.caseIds.map((caseId) => ({ caseId, canonical: byCase.get(caseId) })),
305
+ };
306
+ }
307
+ //# sourceMappingURL=RdfSemanticConformance.js.map
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import type { SemanticConformanceReport } from './RdfSemanticConformance';
3
+ import { type NativeSearchConformanceReport } from './QleverSearchConformance';
4
+ interface InstalledConformanceReport {
5
+ schemaVersion: 1;
6
+ backend: 'sqlite' | 'pg';
7
+ status: 'ok';
8
+ semantic: SemanticConformanceReport;
9
+ search: NativeSearchConformanceReport;
10
+ }
11
+ export declare function runInstalledQleverConformance(): Promise<InstalledConformanceReport>;
12
+ export {};