@undefineds.co/xpod 0.3.75 → 0.4.0-rc.140

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 +22 -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
@@ -15,7 +15,7 @@ const RdfVectorIndex_1 = require("./RdfVectorIndex");
15
15
  const PostgresRdfTextIndex_1 = require("./PostgresRdfTextIndex");
16
16
  const PostgresRdfVectorIndex_1 = require("./PostgresRdfVectorIndex");
17
17
  const PostgresRdfStatisticsStore_1 = require("./PostgresRdfStatisticsStore");
18
- const RdfSparqlAdapter_1 = require("./RdfSparqlAdapter");
18
+ const RdfSparqlBoundary_1 = require("./RdfSparqlBoundary");
19
19
  const types_1 = require("../quint/types");
20
20
  const { namedNode, quad } = n3_1.DataFactory;
21
21
  const XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';
@@ -1003,7 +1003,7 @@ class PostgresRdfEngine {
1003
1003
  ...options,
1004
1004
  driver: options.driver ?? (options.connectionString || options.pool ? 'pg' : 'pglite'),
1005
1005
  };
1006
- if (options.nativeSparqlEnabled) {
1006
+ if (this.pgOptions.driver === 'pg' && this.pgOptions.nativeSparqlEnabled === true) {
1007
1007
  this.sparqlQuery = this.executeNativeSparql.bind(this);
1008
1008
  }
1009
1009
  this.maintenanceLeaseOwner = options.maintenanceLeaseOwner ?? `xpod-rdf-${process.pid}-${(0, node_crypto_1.randomUUID)()}`;
@@ -1080,19 +1080,9 @@ class PostgresRdfEngine {
1080
1080
  await runPhase('schema', () => this.initializeSchema());
1081
1081
  await this.initializeStatisticsStore();
1082
1082
  this.pgAcceleration = await runPhase('acceleration-probe', () => this.probePgAcceleration());
1083
- await runPhase('native-sparql-probe', async () => {
1084
- try {
1085
- await this.probeNativeSparql();
1086
- }
1087
- catch (error) {
1088
- if (this.pgOptions.nativeSparqlRequired !== false
1089
- || !(error instanceof NativeSparqlUnavailableError)) {
1090
- throw error;
1091
- }
1092
- this.sparqlQuery = undefined;
1093
- this.logger.warn(`Optional native SPARQL unavailable; RDF3X remains active: ${errorMessage(error)}`);
1094
- }
1095
- });
1083
+ if (this.pgOptions.nativeSparqlEnabled === true) {
1084
+ await runPhase('native-sparql-probe', () => this.probeNativeSparql());
1085
+ }
1096
1086
  this.initialized = true;
1097
1087
  await runPhase('maintenance-scheduler', async () => {
1098
1088
  this.startMaintenanceScheduler();
@@ -1172,53 +1162,23 @@ class PostgresRdfEngine {
1172
1162
  }
1173
1163
  async executeNativeSparql(query, options) {
1174
1164
  await this.ensureReady();
1175
- const extensionOptions = {
1176
- graphPrefix: options.accessScope?.basePath ?? options.basePath,
1177
- authorizationModel: 'mixed',
1165
+ const wireOptions = {
1166
+ basePath: options.basePath,
1167
+ ...(options.sourceUri === undefined ? {} : { sourceUri: options.sourceUri }),
1168
+ ...(options.defaultDataset === undefined ? {} : { defaultDataset: options.defaultDataset }),
1169
+ ...(options.operation === undefined ? {} : { operation: options.operation }),
1170
+ ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),
1171
+ ...(options.acceptMediaType === undefined ? {} : { acceptMediaType: options.acceptMediaType }),
1172
+ ...(options.loadDocument === undefined ? {} : { loadDocument: options.loadDocument }),
1173
+ ...(options.accessScope === undefined ? {} : { accessScope: options.accessScope }),
1174
+ ...(options.vectorQuery === undefined ? {} : { vectorQuery: options.vectorQuery }),
1178
1175
  };
1179
- if (options.operation) {
1180
- extensionOptions.operation = 'execute';
1181
- }
1182
- if (options.timeoutMs !== undefined) {
1183
- extensionOptions.timeoutMs = options.timeoutMs;
1184
- }
1185
- if (options.acceptMediaType) {
1186
- extensionOptions.acceptMediaType = options.acceptMediaType;
1187
- }
1188
- if (options.loadDocument) {
1189
- extensionOptions.loadDocumentSourceUri = options.loadDocument.sourceUri;
1190
- extensionOptions.loadDocumentBody = options.loadDocument.body;
1191
- if (options.loadDocument.mediaType) {
1192
- extensionOptions.loadDocumentMediaType = options.loadDocument.mediaType;
1193
- }
1194
- }
1195
- if (options.accessScope?.principal) {
1196
- extensionOptions.principal = options.accessScope.principal;
1197
- }
1198
- if (options.accessScope?.mode) {
1199
- extensionOptions.accessMode = options.accessScope.mode;
1200
- }
1201
- if (options.accessScope) {
1202
- extensionOptions.accessScopeResolved = true;
1203
- }
1204
- if (options.accessScope?.allowedGraphUrls) {
1205
- extensionOptions.allowedGraphUrls = options.accessScope.allowedGraphUrls;
1206
- }
1207
- if (options.accessScope?.deniedGraphUrls) {
1208
- extensionOptions.deniedGraphUrls = options.accessScope.deniedGraphUrls;
1209
- }
1210
- if (options.accessScope?.deniedGraphPrefixes) {
1211
- extensionOptions.deniedGraphPrefixes = options.accessScope.deniedGraphPrefixes;
1212
- }
1213
- if (options.accessScope?.version) {
1214
- extensionOptions.permissionVersion = options.accessScope.version;
1215
- }
1216
1176
  let rows;
1217
1177
  try {
1218
- rows = await this.requireExecutor().query('SELECT xpod_rdf.native_sparql_query($1, $2::jsonb) AS result', [query, JSON.stringify(extensionOptions)]);
1178
+ rows = await this.requireExecutor().query('SELECT xpod_rdf.native_sparql_query($1, $2::jsonb) AS result', [query, JSON.stringify(wireOptions)]);
1219
1179
  }
1220
1180
  catch (error) {
1221
- throw new RdfSparqlAdapter_1.NativeSparqlExecutionError(errorMessage(error));
1181
+ throw new RdfSparqlBoundary_1.NativeSparqlExecutionError(errorMessage(error));
1222
1182
  }
1223
1183
  const envelope = typeof rows[0]?.result === 'string'
1224
1184
  ? JSON.parse(rows[0].result)
@@ -1235,7 +1195,7 @@ class PostgresRdfEngine {
1235
1195
  return result;
1236
1196
  }
1237
1197
  async probeNativeSparql() {
1238
- if (!this.pgOptions.nativeSparqlEnabled) {
1198
+ if (this.pgOptions.driver !== 'pg') {
1239
1199
  return;
1240
1200
  }
1241
1201
  let rows;
@@ -1367,11 +1327,13 @@ class PostgresRdfEngine {
1367
1327
  await this.ensureReady();
1368
1328
  const executor = this.requireExecutor();
1369
1329
  return await executor.transaction(async (tx) => {
1330
+ const scopedDictionary = new PostgresRdfTermDictionary(tx);
1370
1331
  const sourceRows = await tx.query('SELECT * FROM rdf_sources WHERE source = $1', [oldSource]);
1371
1332
  const sourceRow = sourceRows[0];
1372
1333
  if (!sourceRow) {
1373
1334
  return 0;
1374
1335
  }
1336
+ await scopedDictionary.getOrCreate(namedNode(next.source));
1375
1337
  const affectedRows = await tx.query('SELECT COUNT(*) AS count FROM rdf_quads WHERE source_file_id = $1', [sourceRow.id]);
1376
1338
  const affectedQuads = Number(affectedRows[0]?.count ?? 0);
1377
1339
  const targetRows = await tx.query('SELECT * FROM rdf_sources WHERE source = $1', [next.source]);
@@ -1588,8 +1550,8 @@ class PostgresRdfEngine {
1588
1550
  async scan(query) {
1589
1551
  await this.ensureReady();
1590
1552
  return isPgSqlScanCompatiblePattern(query.pattern)
1591
- ? this.scanNative(query.pattern, query.options)
1592
- : this.scanPostFilter(query.pattern, query.options);
1553
+ ? this.scanNative(query.pattern, query.options, query.pattern.sourceScope)
1554
+ : this.scanPostFilter(query.pattern, query.options, query.pattern.sourceScope);
1593
1555
  }
1594
1556
  async indexTextSource(source, text, chunks) {
1595
1557
  await this.requireTextIndex().indexText(source, text, chunks);
@@ -1597,6 +1559,9 @@ class PostgresRdfEngine {
1597
1559
  async deleteTextSource(source) {
1598
1560
  return await this.requireTextIndex().deleteSource(source);
1599
1561
  }
1562
+ async moveTextSource(oldSource, next) {
1563
+ return await this.requireTextIndex().moveSource(oldSource, next);
1564
+ }
1600
1565
  async searchText(options) {
1601
1566
  return await this.requireTextIndex().search(typeof options === 'string' ? { query: options } : options);
1602
1567
  }
@@ -1606,6 +1571,9 @@ class PostgresRdfEngine {
1606
1571
  async deleteVectorSource(source) {
1607
1572
  return await this.requireVectorIndex().deleteSource(source);
1608
1573
  }
1574
+ async moveVectorSource(oldSource, next) {
1575
+ return await this.requireVectorIndex().moveSource(oldSource, next);
1576
+ }
1609
1577
  async searchVector(options) {
1610
1578
  return await this.requireVectorIndex().search(options);
1611
1579
  }
@@ -2877,7 +2845,7 @@ class PostgresRdfEngine {
2877
2845
  durationMs: Date.now() - start,
2878
2846
  };
2879
2847
  }
2880
- async scanNative(pattern, options) {
2848
+ async scanNative(pattern, options, sourceScope) {
2881
2849
  const start = Date.now();
2882
2850
  const resolved = await this.resolvePattern(pattern);
2883
2851
  if (resolved.unresolved) {
@@ -2886,7 +2854,7 @@ class PostgresRdfEngine {
2886
2854
  metrics: this.indexMetrics('none', 0, 0, start, [`unresolved ${resolved.unresolved}`]),
2887
2855
  };
2888
2856
  }
2889
- const compiled = this.compileScanSql(resolved, options);
2857
+ const compiled = this.compileScanSql(resolved, options, sourceScope);
2890
2858
  const matchedRows = await this.scalarCount(compiled.countSql, compiled.countParams);
2891
2859
  const rows = await this.requireExecutor().query(compiled.sql, compiled.params);
2892
2860
  return {
@@ -2901,13 +2869,18 @@ class PostgresRdfEngine {
2901
2869
  nativeScanCanUseLimitEarlyStop(options) {
2902
2870
  return options?.limit !== undefined && (!options.order || options.order.length === 0);
2903
2871
  }
2904
- async scanPostFilter(pattern, options) {
2872
+ async scanPostFilter(pattern, options, sourceScope) {
2905
2873
  const start = Date.now();
2874
+ const conditions = [];
2875
+ const joins = [];
2876
+ const builder = new PgSqlBuilder();
2877
+ this.appendPgFactSourceScope(sourceScope, 'q', joins, conditions, builder);
2906
2878
  const rows = await this.requireExecutor().query(`
2907
- SELECT graph_id, subject_id, predicate_id, object_id
2908
- FROM ${RDF_FACTS_TABLE}
2909
- ORDER BY graph_id, subject_id, predicate_id, object_id
2910
- `);
2879
+ SELECT q.graph_id, q.subject_id, q.predicate_id, q.object_id
2880
+ FROM ${RDF_FACTS_TABLE} q${joins.join('')}
2881
+ ${conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''}
2882
+ ORDER BY q.graph_id, q.subject_id, q.predicate_id, q.object_id
2883
+ `, builder.snapshot());
2911
2884
  const rangedRows = this.filterRowsBySlotTermRanges(rows, options?.slotTermRanges);
2912
2885
  const quads = await this.rowsToQuads(rangedRows);
2913
2886
  const matched = quads.filter((value) => matchesQuadPattern(value, pattern));
@@ -2922,6 +2895,7 @@ class PostgresRdfEngine {
2922
2895
  metrics: this.indexMetrics('facts-post-filter', matched.length, page.length, start, [
2923
2896
  'PostgresFactsScan',
2924
2897
  'PostgresFactsPostFilter',
2898
+ ...(joins.length > 0 ? ['PostgresFactsSourceScope'] : []),
2925
2899
  ...this.slotTermRangePlanMarkers(options?.slotTermRanges),
2926
2900
  ...(options?.order?.length ? [`PostgresFactsScanOrder(${describeScanOrder(options)})`] : []),
2927
2901
  ...(options?.limit !== undefined || options?.offset !== undefined ? ['PostgresFactsScanLimit'] : []),
@@ -4331,6 +4305,9 @@ class PostgresRdfEngine {
4331
4305
  allowedGraphUrls: options.template.cacheScope.allowedGraphUrls,
4332
4306
  deniedGraphUrls: options.template.cacheScope.deniedGraphUrls,
4333
4307
  deniedGraphPrefixes: options.template.cacheScope.deniedGraphPrefixes,
4308
+ allowedSourceUrls: options.template.cacheScope.allowedSourceUrls,
4309
+ deniedSourceUrls: options.template.cacheScope.deniedSourceUrls,
4310
+ deniedSourcePrefixes: options.template.cacheScope.deniedSourcePrefixes,
4334
4311
  },
4335
4312
  };
4336
4313
  const accelerationExplain = {
@@ -4841,8 +4818,8 @@ class PostgresRdfEngine {
4841
4818
  continue;
4842
4819
  }
4843
4820
  const scan = isPgSqlScanCompatiblePattern(compiled)
4844
- ? await this.scanNative(compiled)
4845
- : await this.scanPostFilter(compiled);
4821
+ ? await this.scanNative(compiled, undefined, pattern.sourceScope)
4822
+ : await this.scanPostFilter(compiled, undefined, pattern.sourceScope);
4846
4823
  metrics.scannedRows += scan.metrics.matchedRows;
4847
4824
  metrics.indexChoices.push(scan.metrics.indexChoice);
4848
4825
  metrics.plan.push(...storagePlanMarkers(scan.metrics.queryPlan));
@@ -4873,8 +4850,8 @@ class PostgresRdfEngine {
4873
4850
  return undefined;
4874
4851
  }
4875
4852
  const scan = isPgSqlScanCompatiblePattern(compiled)
4876
- ? await this.scanNative(compiled)
4877
- : await this.scanPostFilter(compiled);
4853
+ ? await this.scanNative(compiled, undefined, pattern.sourceScope)
4854
+ : await this.scanPostFilter(compiled, undefined, pattern.sourceScope);
4878
4855
  metrics.scannedRows += scan.metrics.matchedRows;
4879
4856
  metrics.indexChoices.push(scan.metrics.indexChoice);
4880
4857
  metrics.plan.push(...storagePlanMarkers(scan.metrics.queryPlan));
@@ -5569,7 +5546,10 @@ class PostgresRdfEngine {
5569
5546
  }
5570
5547
  }
5571
5548
  result.push({
5572
- pattern: compiled,
5549
+ pattern: {
5550
+ ...compiled,
5551
+ ...(pattern.sourceScope ? { sourceScope: pattern.sourceScope } : {}),
5552
+ },
5573
5553
  variables,
5574
5554
  equalities: patternEqualities(slotsByVariable),
5575
5555
  pushedDownFilterIndexes: [...pushed],
@@ -5879,14 +5859,15 @@ class PostgresRdfEngine {
5879
5859
  }
5880
5860
  return this.requireDictionary().find(value);
5881
5861
  }
5882
- compileScanSql(resolved, options) {
5883
- const builder = new PgSqlBuilder();
5862
+ compileScanSql(resolved, options, sourceScope) {
5884
5863
  const conditions = [];
5885
5864
  const joins = [];
5865
+ const builder = new PgSqlBuilder();
5886
5866
  const queryPlan = [];
5887
5867
  const useMembershipSource = shouldUseMembershipSource(resolved);
5888
5868
  const permutation = this.choosePermutation(resolved);
5889
5869
  const alias = 'q';
5870
+ this.appendPgFactSourceScope(sourceScope, alias, joins, conditions, builder);
5890
5871
  this.appendResolvedPatternConditions(resolved, alias, conditions, joins, builder, queryPlan, false);
5891
5872
  this.appendSlotTermRangeConditions(options?.slotTermRanges, alias, conditions, builder, queryPlan);
5892
5873
  const order = this.buildOrderClause(options, alias);
@@ -5907,6 +5888,7 @@ class PostgresRdfEngine {
5907
5888
  indexChoice: useMembershipSource ? 'source-membership' : permutation.name,
5908
5889
  queryPlan: [
5909
5890
  ...(useMembershipSource ? ['Rdf3xMembershipScan'] : [`Rdf3xPermutationScan(${permutation.name})`]),
5891
+ ...(sourceScopeHasFilters(sourceScope) ? ['PostgresFactsSourceScope'] : []),
5910
5892
  ...queryPlan,
5911
5893
  ...(order ? [`Rdf3xJoinOrder(${describeScanOrder(options)})`] : []),
5912
5894
  ...(pagination.sql ? ['Pagination'] : []),
@@ -5968,6 +5950,7 @@ class PostgresRdfEngine {
5968
5950
  queryPlan.push(`Rdf3xMergeJoin(${mergeConditions.length})`);
5969
5951
  }
5970
5952
  }
5953
+ this.appendPgFactSourceScope(source.entry.pattern.sourceScope, alias, joins, conditions, builder);
5971
5954
  this.appendResolvedPatternConditions(source.resolved, alias, conditions, joins, builder, queryPlan, options?.fenceGraphPrefix === true);
5972
5955
  this.appendPatternEqualityConditions(source.entry.equalities, alias, conditions, queryPlan);
5973
5956
  indexChoices.push(shouldUseMembershipSource(source.resolved) ? 'source-membership' : source.permutation.name);
@@ -6056,6 +6039,35 @@ class PostgresRdfEngine {
6056
6039
  queryPlan.push(`TermKeyRange(${range.slot})`);
6057
6040
  }
6058
6041
  }
6042
+ appendPgFactSourceScope(scope, quadAlias, joins, conditions, builder) {
6043
+ if (!sourceScopeHasFilters(scope)) {
6044
+ return;
6045
+ }
6046
+ const sourceAlias = `${quadAlias}_source_scope`;
6047
+ const sourceColumn = `${sourceAlias}.source`;
6048
+ const localPathColumn = `${sourceAlias}.local_path`;
6049
+ const sourceIdColumn = `${quadAlias}.source_file_id`;
6050
+ joins.push(` LEFT JOIN rdf_sources ${sourceAlias} ON ${sourceAlias}.id = ${sourceIdColumn}`);
6051
+ const allowedSources = normalizedSourceScopeValues(scope?.allowedSources ?? []);
6052
+ if (scope?.allowedSources) {
6053
+ conditions.push(allowedSources.length === 0
6054
+ ? '1 = 0'
6055
+ : `${sourceColumn} = ANY(${builder.add(allowedSources)}::text[])`);
6056
+ }
6057
+ if (scope?.sourcePrefix) {
6058
+ conditions.push(pgTextPrefixCondition(sourceColumn, scope.sourcePrefix, builder));
6059
+ }
6060
+ if (scope?.localPathPrefix) {
6061
+ conditions.push(pgTextPrefixCondition(localPathColumn, scope.localPathPrefix, builder));
6062
+ }
6063
+ const deniedSources = normalizedSourceScopeValues(scope?.deniedSources ?? []);
6064
+ if (deniedSources.length > 0) {
6065
+ conditions.push(`(${sourceIdColumn} IS NULL OR NOT (${sourceColumn} = ANY(${builder.add(deniedSources)}::text[])))`);
6066
+ }
6067
+ for (const deniedPrefix of normalizedSourceScopeValues(scope?.deniedSourcePrefixes ?? [])) {
6068
+ conditions.push(`(${sourceIdColumn} IS NULL OR NOT (${pgTextPrefixCondition(sourceColumn, deniedPrefix, builder)}))`);
6069
+ }
6070
+ }
6059
6071
  filterRowsBySlotTermRanges(rows, ranges) {
6060
6072
  if (!ranges?.length)
6061
6073
  return rows;
@@ -6701,6 +6713,8 @@ class PostgresRdfEngine {
6701
6713
  return result.length;
6702
6714
  }
6703
6715
  async upsertSource(source, executor = this.requireExecutor()) {
6716
+ const scopedDictionary = new PostgresRdfTermDictionary(executor);
6717
+ await scopedDictionary.getOrCreate(namedNode(source.source));
6704
6718
  const row = await executor.query(`
6705
6719
  INSERT INTO rdf_sources (
6706
6720
  source,
@@ -7768,6 +7782,9 @@ function resolveRdfQueryCacheScope(scope) {
7768
7782
  allowedGraphUrls: descriptorStringArray(descriptors, 'allowedGraphUrls'),
7769
7783
  deniedGraphUrls: descriptorStringArray(descriptors, 'deniedGraphUrls'),
7770
7784
  deniedGraphPrefixes: descriptorStringArray(descriptors, 'deniedGraphPrefixes'),
7785
+ allowedSourceUrls: descriptorStringArray(descriptors, 'allowedSourceUrls'),
7786
+ deniedSourceUrls: descriptorStringArray(descriptors, 'deniedSourceUrls'),
7787
+ deniedSourcePrefixes: descriptorStringArray(descriptors, 'deniedSourcePrefixes'),
7771
7788
  };
7772
7789
  }
7773
7790
  function rdfQueryCacheScopeHash(scopeShape) {
@@ -7793,6 +7810,9 @@ function normalizeRdfQueryCacheScope(scope) {
7793
7810
  allowedGraphUrls: sortedOptional(scope.allowedGraphUrls),
7794
7811
  deniedGraphUrls: sortedOptional(scope.deniedGraphUrls),
7795
7812
  deniedGraphPrefixes: sortedOptional(scope.deniedGraphPrefixes),
7813
+ allowedSourceUrls: sortedOptional(scope.allowedSourceUrls),
7814
+ deniedSourceUrls: sortedOptional(scope.deniedSourceUrls),
7815
+ deniedSourcePrefixes: sortedOptional(scope.deniedSourcePrefixes),
7796
7816
  components: scope.components?.map((component) => normalizeRdfQueryCacheScope(component)),
7797
7817
  }).filter(([, value]) => value !== undefined));
7798
7818
  }
@@ -9983,6 +10003,23 @@ function isRdfVectorIndexLike(input) {
9983
10003
  function uniqueStrings(values) {
9984
10004
  return [...new Set(values)];
9985
10005
  }
10006
+ function normalizedSourceScopeValues(values) {
10007
+ return [...new Set(values.filter((value) => value.length > 0))].sort();
10008
+ }
10009
+ function sourceScopeHasFilters(scope) {
10010
+ return !!scope
10011
+ && (!!scope.sourcePrefix
10012
+ || !!scope.localPathPrefix
10013
+ || scope.allowedSources !== undefined
10014
+ || (scope.deniedSources?.length ?? 0) > 0
10015
+ || (scope.deniedSourcePrefixes?.length ?? 0) > 0);
10016
+ }
10017
+ function pgTextPrefixCondition(column, prefix, builder) {
10018
+ const lower = builder.add(prefix);
10019
+ const upper = builder.add(`${prefix}\uffff`);
10020
+ const exact = builder.add(prefix);
10021
+ return `(${column} COLLATE "C") >= (${lower} COLLATE "C") AND (${column} COLLATE "C") < (${upper} COLLATE "C") AND starts_with(${column}, ${exact})`;
10022
+ }
9986
10023
  function rdfAccessControlCacheInvalidation(quads, source) {
9987
10024
  const fallbackScopes = [
9988
10025
  ...accessControlAffectedScopes(source?.source, source?.workspace, source?.sourceVersion),
@@ -149,10 +149,6 @@
149
149
  {
150
150
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngineOptions__member_nativeSparqlEnabled",
151
151
  "memberFieldName": "nativeSparqlEnabled"
152
- },
153
- {
154
- "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngineOptions__member_nativeSparqlRequired",
155
- "memberFieldName": "nativeSparqlRequired"
156
152
  }
157
153
  ],
158
154
  "constructorArguments": []
@@ -634,18 +630,6 @@
634
630
  }
635
631
  ]
636
632
  }
637
- },
638
- {
639
- "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine_options_nativeSparqlRequired",
640
- "range": {
641
- "@type": "ParameterRangeUnion",
642
- "parameterRangeElements": [
643
- "xsd:boolean",
644
- {
645
- "@type": "ParameterRangeUndefined"
646
- }
647
- ]
648
- }
649
633
  }
650
634
  ],
651
635
  "memberFields": [
@@ -876,6 +860,10 @@
876
860
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_deleteTextSource",
877
861
  "memberFieldName": "deleteTextSource"
878
862
  },
863
+ {
864
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_moveTextSource",
865
+ "memberFieldName": "moveTextSource"
866
+ },
879
867
  {
880
868
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_searchText",
881
869
  "memberFieldName": "searchText"
@@ -888,6 +876,10 @@
888
876
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_deleteVectorSource",
889
877
  "memberFieldName": "deleteVectorSource"
890
878
  },
879
+ {
880
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_moveVectorSource",
881
+ "memberFieldName": "moveVectorSource"
882
+ },
891
883
  {
892
884
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_searchVector",
893
885
  "memberFieldName": "searchVector"
@@ -1524,6 +1516,10 @@
1524
1516
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_appendSlotTermRangeConditions",
1525
1517
  "memberFieldName": "appendSlotTermRangeConditions"
1526
1518
  },
1519
+ {
1520
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_appendPgFactSourceScope",
1521
+ "memberFieldName": "appendPgFactSourceScope"
1522
+ },
1527
1523
  {
1528
1524
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine__member_filterRowsBySlotTermRanges",
1529
1525
  "memberFieldName": "filterRowsBySlotTermRanges"
@@ -2042,12 +2038,6 @@
2042
2038
  "value": {
2043
2039
  "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine_options_nativeSparqlEnabled"
2044
2040
  }
2045
- },
2046
- {
2047
- "keyRaw": "nativeSparqlRequired",
2048
- "value": {
2049
- "@id": "undefineds:dist/storage/rdf/PostgresRdfEngine.jsonld#PostgresRdfEngine_options_nativeSparqlRequired"
2050
- }
2051
2041
  }
2052
2042
  ]
2053
2043
  }
@@ -0,0 +1,8 @@
1
+ import type { PostgresRdfSqlExecutor } from './PostgresRdfSqlExecutor';
2
+ type PostgresRdfIndexKind = 'text' | 'vector';
3
+ export declare function pgHasAnyDomainTable(executor: PostgresRdfSqlExecutor, tables: string[]): Promise<boolean>;
4
+ export declare function assertPgRequiredColumns(executor: PostgresRdfSqlExecutor, table: string, requiredColumns: string[], indexKind: PostgresRdfIndexKind): Promise<void>;
5
+ export declare function assertPgNotNullColumn(executor: PostgresRdfSqlExecutor, table: string, column: string, indexKind: PostgresRdfIndexKind): Promise<void>;
6
+ export declare function assertPgColumnType(executor: PostgresRdfSqlExecutor, table: string, column: string, expectedUdtName: string, indexKind: PostgresRdfIndexKind): Promise<void>;
7
+ export declare function assertPgUniqueColumn(executor: PostgresRdfSqlExecutor, table: string, column: string, indexKind: PostgresRdfIndexKind): Promise<void>;
8
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pgHasAnyDomainTable = pgHasAnyDomainTable;
4
+ exports.assertPgRequiredColumns = assertPgRequiredColumns;
5
+ exports.assertPgNotNullColumn = assertPgNotNullColumn;
6
+ exports.assertPgColumnType = assertPgColumnType;
7
+ exports.assertPgUniqueColumn = assertPgUniqueColumn;
8
+ async function pgHasAnyDomainTable(executor, tables) {
9
+ const placeholders = tables.map((_, index) => `$${index + 1}`).join(', ');
10
+ const rows = await executor.query(`
11
+ SELECT COUNT(*) AS count
12
+ FROM pg_tables
13
+ WHERE schemaname = current_schema()
14
+ AND tablename IN (${placeholders})
15
+ `, tables);
16
+ return Number(rows[0]?.count ?? 0) > 0;
17
+ }
18
+ async function assertPgRequiredColumns(executor, table, requiredColumns, indexKind) {
19
+ const rows = await executor.query(`
20
+ SELECT column_name
21
+ FROM information_schema.columns
22
+ WHERE table_schema = current_schema()
23
+ AND table_name = $1
24
+ `, [table]);
25
+ if (rows.length === 0) {
26
+ throw new Error(`Unsupported PostgreSQL RDF ${indexKind} index schema: missing table ${table}`);
27
+ }
28
+ const columns = new Set(rows.map((row) => row.column_name));
29
+ for (const column of requiredColumns) {
30
+ if (!columns.has(column)) {
31
+ throw new Error(`Unsupported PostgreSQL RDF ${indexKind} index schema: missing column ${table}.${column}`);
32
+ }
33
+ }
34
+ }
35
+ async function assertPgNotNullColumn(executor, table, column, indexKind) {
36
+ const rows = await executor.query(`
37
+ SELECT is_nullable
38
+ FROM information_schema.columns
39
+ WHERE table_schema = current_schema()
40
+ AND table_name = $1
41
+ AND column_name = $2
42
+ `, [table, column]);
43
+ if (rows[0]?.is_nullable !== 'NO') {
44
+ throw new Error(`Unsupported PostgreSQL RDF ${indexKind} index schema: column ${table}.${column} must be NOT NULL`);
45
+ }
46
+ }
47
+ async function assertPgColumnType(executor, table, column, expectedUdtName, indexKind) {
48
+ const rows = await executor.query(`
49
+ SELECT udt_name
50
+ FROM information_schema.columns
51
+ WHERE table_schema = current_schema()
52
+ AND table_name = $1
53
+ AND column_name = $2
54
+ `, [table, column]);
55
+ if (rows.length === 0) {
56
+ throw new Error(`Unsupported PostgreSQL RDF ${indexKind} index schema: missing column ${table}.${column}`);
57
+ }
58
+ if (rows[0].udt_name !== expectedUdtName) {
59
+ throw new Error(`Unsupported PostgreSQL RDF ${indexKind} index schema: column ${table}.${column} must have type ${expectedUdtName}`);
60
+ }
61
+ }
62
+ async function assertPgUniqueColumn(executor, table, column, indexKind) {
63
+ const rows = await executor.query(`
64
+ SELECT COUNT(*) AS count
65
+ FROM pg_constraint constraint_info
66
+ JOIN pg_class table_info ON table_info.oid = constraint_info.conrelid
67
+ JOIN pg_namespace namespace_info ON namespace_info.oid = table_info.relnamespace
68
+ JOIN unnest(constraint_info.conkey) WITH ORDINALITY AS constraint_key(attnum, ordinality) ON TRUE
69
+ JOIN pg_attribute attribute
70
+ ON attribute.attrelid = constraint_info.conrelid
71
+ AND attribute.attnum = constraint_key.attnum
72
+ WHERE namespace_info.nspname = current_schema()
73
+ AND table_info.relname = $1
74
+ AND constraint_info.contype = 'u'
75
+ AND array_length(constraint_info.conkey, 1) = 1
76
+ AND attribute.attname = $2
77
+ `, [table, column]);
78
+ if (Number(rows[0]?.count ?? 0) === 0) {
79
+ throw new Error(`Unsupported PostgreSQL RDF ${indexKind} index schema: column ${table}.${column} must be UNIQUE`);
80
+ }
81
+ }
82
+ //# sourceMappingURL=PostgresRdfSchemaValidation.js.map
@@ -1,4 +1,4 @@
1
- import type { RdfSearchCardinalityEstimate, RdfTextChunkInput, RdfTextIndexLike, RdfTextIndexStats, RdfTextRebuildStatus, RdfTextRebuildStatusInput, RdfTextSearchOptions, RdfTextSearchResult, RdfTextSourceMetadata, RdfTextSourceInput, RdfTextTermDocumentFrequency } from './types';
1
+ import type { RdfSearchCardinalityEstimate, RdfTextChunkInput, RdfTextIndexLike, RdfTextIndexStats, RdfTextRebuildStatus, RdfTextRebuildStatusInput, RdfTextSearchOptions, RdfTextSearchResult, RdfTextSourceListOptions, RdfTextSourceMetadata, RdfTextSourceInput, RdfTextTermDocumentFrequency } from './types';
2
2
  export type PostgresRdfTextSearchBackend = 'posting' | 'pg-native-fts' | 'auto';
3
3
  export interface PostgresRdfTextIndexOptions {
4
4
  driver?: 'pglite' | 'pg';
@@ -27,13 +27,16 @@ export declare class PostgresRdfTextIndex implements RdfTextIndexLike {
27
27
  close(): Promise<void>;
28
28
  clear(): Promise<void>;
29
29
  schemaVersion(): Promise<number>;
30
+ private readSchemaVersion;
30
31
  sourceMetadata(source: string): Promise<RdfTextSourceMetadata | undefined>;
32
+ listSources(options?: RdfTextSourceListOptions): Promise<RdfTextSourceMetadata[]>;
31
33
  recordRebuildStatus(input: RdfTextRebuildStatusInput): Promise<void>;
32
34
  rebuildStatus(source: string): Promise<RdfTextRebuildStatus | undefined>;
33
35
  indexText(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): Promise<void>;
34
36
  moveSource(oldSource: string, next: RdfTextSourceInput): Promise<number>;
35
37
  deleteSource(source: string): Promise<number>;
36
38
  search(options: RdfTextSearchOptions): Promise<RdfTextSearchResult[]>;
39
+ listSourceChunks(sourceKey: string): Promise<RdfTextSearchResult[]>;
37
40
  estimateSearchCardinality(options: RdfTextSearchOptions): Promise<RdfSearchCardinalityEstimate>;
38
41
  private searchNativeFts;
39
42
  private estimateNativeFtsSearchCardinality;
@@ -42,8 +45,8 @@ export declare class PostgresRdfTextIndex implements RdfTextIndexLike {
42
45
  private openInternal;
43
46
  private initializeSchema;
44
47
  private initializeNativeFtsSchema;
45
- private backfillTermPostings;
46
- private backfillNativeFtsRows;
48
+ private validateSchema;
49
+ private validateNativeFtsSchema;
47
50
  private nativeFtsEnabled;
48
51
  private canUseNativeFts;
49
52
  private upsertSource;