@undefineds.co/xpod 0.3.75 → 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 (362) 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 +20 -1
  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/search/RdfSearchIntentSink.d.ts +17 -0
  70. package/dist/search/RdfSearchIntentSink.js +46 -0
  71. package/dist/search/RdfSearchIntentSink.jsonld +47 -0
  72. package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
  73. package/dist/search/RdfSearchReconciliationRepository.js +771 -0
  74. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
  75. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
  76. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
  77. package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
  78. package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
  79. package/dist/solidfs/SolidFsSyncJournal.js +20 -5
  80. package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
  81. package/dist/solidfs/index.d.ts +1 -0
  82. package/dist/solidfs/index.js +1 -0
  83. package/dist/storage/SparqlUpdateResourceStore.js +3 -3
  84. package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
  85. package/dist/storage/accessors/MixDataAccessor.js +182 -399
  86. package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
  87. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
  88. package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
  89. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
  90. package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
  91. package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
  92. package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
  93. package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
  94. package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
  95. package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
  96. package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
  97. package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
  98. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
  99. package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
  100. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
  101. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
  102. package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
  103. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
  104. package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
  105. package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
  106. package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
  107. package/dist/storage/rdf/Rdf3xIndex.js +20 -16
  108. package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
  109. package/dist/storage/rdf/RdfAccessScope.js +74 -9
  110. package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
  111. package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
  112. package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
  113. package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
  114. package/dist/storage/rdf/RdfQuadIndex.js +286 -99
  115. package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
  116. package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
  117. package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
  118. package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
  119. package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
  120. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
  121. package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
  122. package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
  123. package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
  124. package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
  125. package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
  126. package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
  127. package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
  128. package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
  129. package/dist/storage/rdf/RdfTermDictionary.js +0 -136
  130. package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
  131. package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
  132. package/dist/storage/rdf/RdfTermSemantics.js +29 -0
  133. package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
  134. package/dist/storage/rdf/RdfTextIndex.js +187 -115
  135. package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
  136. package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
  137. package/dist/storage/rdf/RdfVectorIndex.js +156 -233
  138. package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
  139. package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
  140. package/dist/storage/rdf/SolidRdfEngine.js +28 -308
  141. package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
  142. package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
  143. package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
  144. package/dist/storage/rdf/index.d.ts +7 -6
  145. package/dist/storage/rdf/index.js +17 -12
  146. package/dist/storage/rdf/models-benchmark.d.ts +5 -1
  147. package/dist/storage/rdf/models-benchmark.js +17 -19
  148. package/dist/storage/rdf/types.d.ts +68 -6
  149. package/dist/storage/rdf/types.jsonld +69 -0
  150. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
  151. package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
  152. package/dist/storage/vector/index.d.ts +0 -1
  153. package/dist/storage/vector/index.js +0 -1
  154. package/dist/terminal/AclPermissionService.d.ts +4 -5
  155. package/dist/terminal/AclPermissionService.js +55 -75
  156. package/dist/terminal/TerminalSessionManager.d.ts +3 -2
  157. package/dist/terminal/TerminalSessionManager.js +3 -3
  158. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
  214. package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
  215. package/package.json +19 -8
  216. package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
  217. package/static/app/assets/inrupt-smoke.js +2 -2
  218. package/static/app/assets/main.css +1 -1
  219. package/static/app/assets/main.js +11 -11
  220. package/static/auth-callback/assets/{AiConfigContext-BvBdu_A3.js → AiConfigContext-iQ74JmRZ.js} +1 -1
  221. package/static/auth-callback/assets/{AiConfigPage-BpDw4jco.js → AiConfigPage-BBDKE1gJ.js} +1 -1
  222. package/static/auth-callback/assets/{DocumentProcessingPanel-BmZ_jzRr.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
  223. package/static/auth-callback/assets/{IndexLifecyclePanel-BfQBjN4z.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
  224. package/static/auth-callback/assets/{IndexSubjectPanel-BlsnatPt.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
  225. package/static/auth-callback/assets/{ModelAssignmentsPanel-KA6Mdndz.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
  226. package/static/auth-callback/assets/{ModelsPage-C7jymyIY.js → ModelsPage-C2hxyrmI.js} +1 -1
  227. package/static/auth-callback/assets/{NetworkPage-k2ShktNm.js → NetworkPage-IGIc2q1Y.js} +1 -1
  228. package/static/auth-callback/assets/{PaneListHeader-mLMe_dvU.js → PaneListHeader-CebuPl_g.js} +1 -1
  229. package/static/auth-callback/assets/{SearchIndexingPanel-CqV9um_t.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
  230. package/static/auth-callback/assets/{StatusSubjectPanel-BgMBTbr2.js → StatusSubjectPanel-votxBkr5.js} +1 -1
  231. package/static/auth-callback/assets/{StatusWorkspace-zbSyhdG2.js → StatusWorkspace-Cksl61zX.js} +1 -1
  232. package/static/auth-callback/assets/{SystemSettingsPage-CtW79nW6.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
  233. package/static/auth-callback/assets/{SystemSettingsSubjectPanel-ZOPKYUtZ.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
  234. package/static/auth-callback/assets/{activity-BQ-CQE3O.js → activity-DQL6kZHZ.js} +1 -1
  235. package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
  236. package/static/auth-callback/assets/{auth-callback-Htr_CB_g.js → auth-callback-BxQMd_Mc.js} +39 -39
  237. package/static/auth-callback/assets/{badge-D5SGTJeO.js → badge-DvW4LUHH.js} +1 -1
  238. package/static/auth-callback/assets/{download-DK183Ldo.js → download-Cx_uaCR1.js} +1 -1
  239. package/static/auth-callback/assets/{external-link-LDHy_4bn.js → external-link-D6L6ExH1.js} +1 -1
  240. package/static/auth-callback/assets/{index-BWrvgHqK.js → index-BAS_hxGu.js} +1 -1
  241. package/static/auth-callback/assets/{index-2WmlePQ9.js → index-BmBjpCoD.js} +1 -1
  242. package/static/auth-callback/assets/{index-browser-DUd4E4-x.js → index-browser-pdn4D3M4.js} +1 -1
  243. package/static/auth-callback/assets/{key-round-ibX79Kr-.js → key-round-BTBzOggq.js} +1 -1
  244. package/static/auth-callback/assets/{rotate-ccw-B2_VMaiX.js → rotate-ccw-eV7Cx8sB.js} +1 -1
  245. package/static/auth-callback/assets/{skeleton-F4nrpycc.js → skeleton-Bg4GYgBM.js} +1 -1
  246. package/static/auth-callback/assets/{waypoints-DImIq93f.js → waypoints-CJbydf0B.js} +1 -1
  247. package/static/auth-callback/assets/{workspace-layout-IVCSYU21.js → workspace-layout-C6Hh8Xf-.js} +1 -1
  248. package/static/auth-callback/auth-callback.html +2 -2
  249. package/static/dashboard/assets/{AiConfigContext-cjjfYTo9.js → AiConfigContext-BkJj28vK.js} +1 -1
  250. package/static/dashboard/assets/{AiConfigPage-CO0DSD_j.js → AiConfigPage-Cs9B4uyp.js} +1 -1
  251. package/static/dashboard/assets/{DocumentProcessingPanel-DMGnH8Oj.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
  252. package/static/dashboard/assets/{IndexLifecyclePanel-DSkIOCL5.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
  253. package/static/dashboard/assets/{IndexSubjectPanel-qWN_DbAp.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
  254. package/static/dashboard/assets/{ModelAssignmentsPanel-DCf83uM3.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
  255. package/static/dashboard/assets/{ModelsPage-CMnvSrl5.js → ModelsPage-CBrLjuUn.js} +1 -1
  256. package/static/dashboard/assets/{NetworkPage-C8Gkwclb.js → NetworkPage-BlYk8L1z.js} +1 -1
  257. package/static/dashboard/assets/{PaneListHeader-BtU_8cDK.js → PaneListHeader-A5oZJQC0.js} +1 -1
  258. package/static/dashboard/assets/{SearchIndexingPanel-DEn12pNU.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
  259. package/static/dashboard/assets/{StatusSubjectPanel-B1_ILg2d.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
  260. package/static/dashboard/assets/{StatusWorkspace-BG6nMNCo.js → StatusWorkspace-rDM0yDtk.js} +1 -1
  261. package/static/dashboard/assets/{SystemSettingsPage-BnWYIXaM.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
  262. package/static/dashboard/assets/{SystemSettingsSubjectPanel-C_mYVPWb.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
  263. package/static/dashboard/assets/{activity-DYJ7PdRl.js → activity-CJ5K6hYC.js} +1 -1
  264. package/static/dashboard/assets/{badge-BIaZco1P.js → badge-L-NMOi1P.js} +1 -1
  265. package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
  266. package/static/dashboard/assets/{dashboard-Dl40_MEa.js → dashboard-DyjAyYxx.js} +34 -34
  267. package/static/dashboard/assets/{download-By16k9VK.js → download-Bi4u5K5B.js} +1 -1
  268. package/static/dashboard/assets/{external-link-B92xOG_d.js → external-link-jmhLDfvT.js} +1 -1
  269. package/static/dashboard/assets/{index-BajZpJ48.js → index-BoaGJBxf.js} +1 -1
  270. package/static/dashboard/assets/{index-wsVPom_x.js → index-C22TAEi4.js} +1 -1
  271. package/static/dashboard/assets/{key-round-Clo5FOwA.js → key-round-Dk1VmMrn.js} +1 -1
  272. package/static/dashboard/assets/{rotate-ccw-smWSfi1L.js → rotate-ccw-DIfLsSwi.js} +1 -1
  273. package/static/dashboard/assets/{skeleton-BrTaGeJw.js → skeleton-BGPJMHb-.js} +1 -1
  274. package/static/dashboard/assets/{waypoints-DGPQInE7.js → waypoints-CY53egpu.js} +1 -1
  275. package/static/dashboard/assets/{workspace-layout-CPU4XRmb.js → workspace-layout-CoHkcx70.js} +1 -1
  276. package/static/dashboard/dashboard.html +2 -2
  277. package/static/settings/assets/{AiConfigContext-CT29_OyW.js → AiConfigContext-BcEPlEJe.js} +1 -1
  278. package/static/settings/assets/{AiConfigPage-WIE95S28.js → AiConfigPage-D-t3ZUhg.js} +1 -1
  279. package/static/settings/assets/{DocumentProcessingPanel-KG8Sq999.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
  280. package/static/settings/assets/{IndexLifecyclePanel-iKvtHDXY.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
  281. package/static/settings/assets/{IndexSubjectPanel-BQdSCkk4.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
  282. package/static/settings/assets/{ModelAssignmentsPanel-P8QcVB0F.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
  283. package/static/settings/assets/{ModelsPage-UZkZGqor.js → ModelsPage-DZrACwVN.js} +1 -1
  284. package/static/settings/assets/{NetworkPage-Dcpcvg15.js → NetworkPage-BlrGGfqL.js} +1 -1
  285. package/static/settings/assets/{PaneListHeader--gHtZws5.js → PaneListHeader-C3TCs1RI.js} +1 -1
  286. package/static/settings/assets/{SearchIndexingPanel-DdgJSJYQ.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
  287. package/static/settings/assets/{StatusSubjectPanel-UOxp_XVL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
  288. package/static/settings/assets/{StatusWorkspace-CPNXuD12.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
  289. package/static/settings/assets/{SystemSettingsPage-B6ySeVPw.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
  290. package/static/settings/assets/{SystemSettingsSubjectPanel-I7zWmpiI.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
  291. package/static/settings/assets/{activity-CFhmzahP.js → activity-D7iNhTkQ.js} +1 -1
  292. package/static/settings/assets/{badge-BBdUc5B-.js → badge-DO0r_RT4.js} +1 -1
  293. package/static/settings/assets/{download-WJE9-yxQ.js → download-CsJlNSbd.js} +1 -1
  294. package/static/settings/assets/{external-link-RKoYyCp_.js → external-link-BCR7SHme.js} +1 -1
  295. package/static/settings/assets/{index-Bq2o0Bif.js → index-Cgq16ekN.js} +1 -1
  296. package/static/settings/assets/{index-DvxneI5O.js → index-SrhQvcrU.js} +1 -1
  297. package/static/settings/assets/{index-browser-Qmo6EsFT.js → index-browser-THpcMCnz.js} +1 -1
  298. package/static/settings/assets/{key-round-r-D9sQUK.js → key-round-Dd3jk1BT.js} +1 -1
  299. package/static/settings/assets/{rotate-ccw-D3IIhbPH.js → rotate-ccw-tiL14i1d.js} +1 -1
  300. package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
  301. package/static/settings/assets/{settings-D8oDBXWg.js → settings-CVLDPejo.js} +34 -34
  302. package/static/settings/assets/{skeleton-DrL4RQuw.js → skeleton-DBxLuNgU.js} +1 -1
  303. package/static/settings/assets/{waypoints-C5sRhpJw.js → waypoints-DS3e3hv7.js} +1 -1
  304. package/static/settings/assets/{workspace-layout-B4ALmWsM.js → workspace-layout-mucrxyTK.js} +1 -1
  305. package/static/settings/settings.html +2 -2
  306. package/config/search.json +0 -66
  307. package/dist/document/HeadingChunker.jsonld +0 -41
  308. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
  309. package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
  310. package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
  311. package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
  312. package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
  313. package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
  314. package/dist/storage/RdfDerivedIndexingListener.js +0 -135
  315. package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
  316. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
  317. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
  318. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
  319. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
  320. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
  321. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
  322. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
  323. package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
  324. package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
  325. package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
  326. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
  327. package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
  328. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
  329. package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
  330. package/dist/storage/sparql/AlgebraUtils.js +0 -118
  331. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
  332. package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
  333. package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
  334. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
  335. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
  336. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
  337. package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
  338. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
  339. package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
  340. package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
  341. package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
  342. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
  343. package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
  344. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
  345. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
  346. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
  347. package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
  348. package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
  349. package/dist/storage/sparql/PatternBuilder.js +0 -118
  350. package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
  351. package/dist/storage/sparql/QueryOptimizer.js +0 -375
  352. package/dist/storage/sparql/QuintEngine.d.ts +0 -92
  353. package/dist/storage/sparql/QuintEngine.js +0 -150
  354. package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
  355. package/dist/storage/sparql/QuintQuerySource.js +0 -1069
  356. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
  357. package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
  358. package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
  359. package/dist/storage/vector/VectorIndexingListener.js +0 -346
  360. package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
  361. package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
  362. 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 {};