@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
@@ -1,125 +0,0 @@
1
- /**
2
- * QueryOptimizer - 统一的查询优化层
3
- *
4
- * 职责:
5
- * 1. 分析 SPARQL algebra,识别可优化的模式
6
- * 2. 选择最优执行策略
7
- * 3. 执行优化后的查询
8
- *
9
- * 支持的优化:
10
- * - OPTIONAL 优化:批量获取属性,避免指数级 LEFT JOIN
11
- * - Compound Query:多 pattern SQL JOIN,避免 JS 层 hash join
12
- * - FILTER 下推:条件下推到 SQL 层
13
- *
14
- * 设计原则:
15
- * - 所有优化逻辑集中在此类
16
- * - 对外暴露统一的接口
17
- * - 优化失败时优雅降级到 Comunica 默认行为
18
- */
19
- import type { Bindings } from '@rdfjs/types';
20
- import type { Algebra } from 'sparqlalgebrajs';
21
- import type { QuintStore } from '../quint/types';
22
- /**
23
- * OPTIONAL 优化分析结果
24
- */
25
- export interface OptionalAnalysis {
26
- /** 是否可优化 */
27
- canOptimize: boolean;
28
- /** 核心查询(不含 OPTIONAL) */
29
- coreOperation?: Algebra.Operation;
30
- /** subject 变量名 */
31
- subjectVar?: string;
32
- /** 要获取的属性 predicates */
33
- optionalPredicates?: string[];
34
- /** 各 OPTIONAL 的变量名 */
35
- optionalVars?: Map<string, string>;
36
- /** 不能优化的原因 */
37
- reason?: string;
38
- }
39
- /**
40
- * Compound Query 优化分析结果
41
- */
42
- export interface CompoundAnalysis {
43
- /** 是否可优化 */
44
- canOptimize: boolean;
45
- /** 所有 patterns */
46
- patterns?: Algebra.Pattern[];
47
- /** JOIN 变量名 */
48
- joinVar?: string;
49
- /** JOIN 字段 */
50
- joinField?: 'subject' | 'predicate' | 'object' | 'graph';
51
- /** 不能优化的原因 */
52
- reason?: string;
53
- }
54
- /**
55
- * 查询优化结果
56
- */
57
- export interface OptimizationResult {
58
- /** 优化类型 */
59
- type: 'optional' | 'compound' | 'none';
60
- /** 分析结果 */
61
- analysis: OptionalAnalysis | CompoundAnalysis | null;
62
- }
63
- export interface QueryOptimizerOptions {
64
- debug?: boolean;
65
- bindingsFactory: any;
66
- }
67
- /**
68
- * QueryOptimizer - 查询优化器
69
- */
70
- export declare class QueryOptimizer {
71
- private readonly store;
72
- private readonly debug;
73
- private readonly bindingsFactory;
74
- constructor(store: QuintStore, options: QueryOptimizerOptions);
75
- /**
76
- * 分析查询,确定最佳优化策略
77
- */
78
- analyzeQuery(algebra: Algebra.Operation): OptimizationResult;
79
- /**
80
- * 执行 OPTIONAL 优化查询
81
- *
82
- * @param analysis OPTIONAL 分析结果
83
- * @param coreBindings 核心查询的绑定结果
84
- * @param orderOptions 排序选项(可选)
85
- */
86
- executeOptionalOptimized(analysis: OptionalAnalysis, coreBindings: Bindings[], orderOptions?: {
87
- varName: string;
88
- reverse?: boolean;
89
- }): Promise<Bindings[]>;
90
- /**
91
- * 对 Bindings 数组按指定变量排序
92
- */
93
- private sortBindings;
94
- /**
95
- * 分析查询是否可以进行 OPTIONAL 优化
96
- *
97
- * 可优化条件:
98
- * 1. 有核心条件(BGP 或带 FILTER 的 BGP)
99
- * 2. 有 OPTIONAL(>= 1 个)
100
- * 3. 所有 OPTIONAL 都是简单的属性获取:?s <pred> ?var
101
- * 4. 所有 OPTIONAL 使用同一个 subject 变量
102
- * 5. OPTIONAL 内部没有额外的 FILTER
103
- */
104
- analyzeOptional(algebra: Algebra.Operation): OptionalAnalysis;
105
- /**
106
- * 分析查询是否可以进行 Compound Query 优化
107
- */
108
- analyzeCompound(algebra: Algebra.Operation): CompoundAnalysis;
109
- /**
110
- * 从核心操作提取 subject 变量
111
- */
112
- private extractSubjectVariable;
113
- /**
114
- * 从 OPTIONAL 的右操作数提取简单 pattern 信息
115
- */
116
- private extractSimplePattern;
117
- /**
118
- * 从 JOIN 操作提取所有 patterns
119
- */
120
- private extractPatternsFromJoin;
121
- /**
122
- * 组装 OPTIONAL 优化结果
123
- */
124
- private assembleOptionalResults;
125
- }
@@ -1,375 +0,0 @@
1
- "use strict";
2
- /**
3
- * QueryOptimizer - 统一的查询优化层
4
- *
5
- * 职责:
6
- * 1. 分析 SPARQL algebra,识别可优化的模式
7
- * 2. 选择最优执行策略
8
- * 3. 执行优化后的查询
9
- *
10
- * 支持的优化:
11
- * - OPTIONAL 优化:批量获取属性,避免指数级 LEFT JOIN
12
- * - Compound Query:多 pattern SQL JOIN,避免 JS 层 hash join
13
- * - FILTER 下推:条件下推到 SQL 层
14
- *
15
- * 设计原则:
16
- * - 所有优化逻辑集中在此类
17
- * - 对外暴露统一的接口
18
- * - 优化失败时优雅降级到 Comunica 默认行为
19
- */
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.QueryOptimizer = void 0;
22
- const rdf_data_factory_1 = require("rdf-data-factory");
23
- const dataFactory = new rdf_data_factory_1.DataFactory();
24
- /**
25
- * QueryOptimizer - 查询优化器
26
- */
27
- class QueryOptimizer {
28
- constructor(store, options) {
29
- this.store = store;
30
- this.debug = options.debug ?? false;
31
- this.bindingsFactory = options.bindingsFactory;
32
- }
33
- // ============================================================
34
- // 公共接口
35
- // ============================================================
36
- /**
37
- * 分析查询,确定最佳优化策略
38
- */
39
- analyzeQuery(algebra) {
40
- // 先检查 OPTIONAL 优化(优先级最高)
41
- if (this.store.getAttributes) {
42
- const optionalAnalysis = this.analyzeOptional(algebra);
43
- if (optionalAnalysis.canOptimize) {
44
- return { type: 'optional', analysis: optionalAnalysis };
45
- }
46
- }
47
- // 检查 Compound Query 优化
48
- if (this.store.getCompound) {
49
- const compoundAnalysis = this.analyzeCompound(algebra);
50
- if (compoundAnalysis.canOptimize) {
51
- return { type: 'compound', analysis: compoundAnalysis };
52
- }
53
- }
54
- return { type: 'none', analysis: null };
55
- }
56
- /**
57
- * 执行 OPTIONAL 优化查询
58
- *
59
- * @param analysis OPTIONAL 分析结果
60
- * @param coreBindings 核心查询的绑定结果
61
- * @param orderOptions 排序选项(可选)
62
- */
63
- async executeOptionalOptimized(analysis, coreBindings, orderOptions) {
64
- const { subjectVar, optionalPredicates, optionalVars } = analysis;
65
- if (!subjectVar || !optionalPredicates || !optionalVars) {
66
- throw new Error('Invalid OptionalAnalysis');
67
- }
68
- if (coreBindings.length === 0) {
69
- return [];
70
- }
71
- // 提取所有 subject 值
72
- const subjects = [];
73
- for (const binding of coreBindings) {
74
- const subjectTerm = binding.get(dataFactory.variable(subjectVar));
75
- if (subjectTerm && subjectTerm.termType === 'NamedNode') {
76
- subjects.push(subjectTerm.value);
77
- }
78
- }
79
- if (this.debug) {
80
- console.log(`[QueryOptimizer] OPTIONAL: ${coreBindings.length} bindings, ${subjects.length} subjects`);
81
- }
82
- // 批量获取属性
83
- const attributeMap = await this.store.getAttributes(subjects, optionalPredicates, undefined // TODO: 支持 graph 过滤
84
- );
85
- if (this.debug) {
86
- console.log(`[QueryOptimizer] getAttributes returned data for ${attributeMap.size} subjects`);
87
- }
88
- // 组装结果
89
- let results = this.assembleOptionalResults(coreBindings, attributeMap, subjectVar, optionalVars);
90
- // 应用排序
91
- if (orderOptions?.varName && results.length > 1) {
92
- results = this.sortBindings(results, orderOptions.varName, orderOptions.reverse ?? false);
93
- if (this.debug) {
94
- console.log(`[QueryOptimizer] Applied ORDER BY ?${orderOptions.varName} ${orderOptions.reverse ? 'DESC' : 'ASC'}`);
95
- }
96
- }
97
- return results;
98
- }
99
- /**
100
- * 对 Bindings 数组按指定变量排序
101
- */
102
- sortBindings(bindings, varName, reverse) {
103
- const orderVar = dataFactory.variable(varName);
104
- return [...bindings].sort((a, b) => {
105
- const aVal = a.get(orderVar);
106
- const bVal = b.get(orderVar);
107
- // null/undefined 值排在最后
108
- if (!aVal && !bVal)
109
- return 0;
110
- if (!aVal)
111
- return 1;
112
- if (!bVal)
113
- return -1;
114
- // 比较值
115
- let cmp;
116
- if (aVal.termType === 'Literal' && bVal.termType === 'Literal') {
117
- // 对于字面量,先尝试数值比较
118
- const aNum = parseFloat(aVal.value);
119
- const bNum = parseFloat(bVal.value);
120
- if (!isNaN(aNum) && !isNaN(bNum)) {
121
- cmp = aNum - bNum;
122
- }
123
- else {
124
- // 字符串比较
125
- cmp = aVal.value.localeCompare(bVal.value);
126
- }
127
- }
128
- else {
129
- // 其他类型用字符串比较
130
- cmp = aVal.value.localeCompare(bVal.value);
131
- }
132
- return reverse ? -cmp : cmp;
133
- });
134
- }
135
- // ============================================================
136
- // OPTIONAL 优化
137
- // ============================================================
138
- /**
139
- * 分析查询是否可以进行 OPTIONAL 优化
140
- *
141
- * 可优化条件:
142
- * 1. 有核心条件(BGP 或带 FILTER 的 BGP)
143
- * 2. 有 OPTIONAL(>= 1 个)
144
- * 3. 所有 OPTIONAL 都是简单的属性获取:?s <pred> ?var
145
- * 4. 所有 OPTIONAL 使用同一个 subject 变量
146
- * 5. OPTIONAL 内部没有额外的 FILTER
147
- */
148
- analyzeOptional(algebra) {
149
- // 从 project -> slice -> orderby -> ... 找到实际的查询结构
150
- let current = algebra;
151
- while (current.type === 'project' || current.type === 'slice' ||
152
- current.type === 'distinct' || current.type === 'reduced' ||
153
- current.type === 'orderby') {
154
- current = current.input;
155
- }
156
- // 穿透 filter 节点,保留 filter expression 供后续包回 coreOp
157
- let outerFilter = null;
158
- if (current.type === 'filter') {
159
- outerFilter = current.expression;
160
- current = current.input;
161
- }
162
- // 收集所有 leftjoin(OPTIONAL)和核心操作
163
- const leftJoins = [];
164
- let coreOp = null;
165
- const collectLeftJoins = (op) => {
166
- if (op.type === 'leftjoin') {
167
- const lj = op;
168
- leftJoins.push(lj);
169
- collectLeftJoins(lj.input[0]);
170
- }
171
- else {
172
- // 如果有外层 FILTER,把它包回 coreOp 上,确保核心查询仍带 FILTER 条件
173
- if (outerFilter && op) {
174
- coreOp = { type: 'filter', input: op, expression: outerFilter };
175
- }
176
- else {
177
- coreOp = op;
178
- }
179
- }
180
- };
181
- collectLeftJoins(current);
182
- if (leftJoins.length < 1) {
183
- return { canOptimize: false, reason: 'No OPTIONAL found' };
184
- }
185
- if (!coreOp) {
186
- return { canOptimize: false, reason: 'No core operation found' };
187
- }
188
- // 分析核心操作获取 subject 变量
189
- const subjectVar = this.extractSubjectVariable(coreOp);
190
- if (!subjectVar) {
191
- return { canOptimize: false, reason: 'Cannot determine subject variable from core operation' };
192
- }
193
- // 分析所有 OPTIONAL
194
- const optionalPredicates = [];
195
- const optionalVars = new Map();
196
- for (const lj of leftJoins) {
197
- // 检查是否有额外的 filter
198
- if (lj.expression) {
199
- return { canOptimize: false, reason: 'OPTIONAL contains FILTER expression' };
200
- }
201
- const patternInfo = this.extractSimplePattern(lj.input[1]);
202
- if (!patternInfo) {
203
- return { canOptimize: false, reason: 'OPTIONAL is not a simple pattern' };
204
- }
205
- if (patternInfo.subjectVar !== subjectVar) {
206
- return {
207
- canOptimize: false,
208
- reason: `OPTIONAL subject ?${patternInfo.subjectVar} doesn't match core subject ?${subjectVar}`
209
- };
210
- }
211
- if (!patternInfo.predicate) {
212
- return { canOptimize: false, reason: 'OPTIONAL predicate must be a constant' };
213
- }
214
- optionalPredicates.push(patternInfo.predicate);
215
- if (patternInfo.objectVar) {
216
- optionalVars.set(patternInfo.predicate, patternInfo.objectVar);
217
- }
218
- }
219
- return {
220
- canOptimize: true,
221
- coreOperation: coreOp,
222
- subjectVar,
223
- optionalPredicates,
224
- optionalVars,
225
- };
226
- }
227
- // ============================================================
228
- // Compound Query 优化
229
- // ============================================================
230
- /**
231
- * 分析查询是否可以进行 Compound Query 优化
232
- */
233
- analyzeCompound(algebra) {
234
- // 从 project -> slice -> ... 找到实际的查询结构
235
- let current = algebra;
236
- while (current.type === 'project' || current.type === 'slice' ||
237
- current.type === 'distinct' || current.type === 'reduced' ||
238
- current.type === 'filter') {
239
- current = current.input;
240
- }
241
- // 检查是否是 BGP 或 JOIN
242
- let patterns = [];
243
- if (current.type === 'bgp') {
244
- const bgp = current;
245
- patterns = bgp.patterns;
246
- }
247
- else if (current.type === 'join') {
248
- const join = current;
249
- patterns = this.extractPatternsFromJoin(join);
250
- }
251
- if (patterns.length < 2) {
252
- return { canOptimize: false, reason: 'Need at least 2 patterns for compound query' };
253
- }
254
- // 检查所有 pattern 是否共享同一个 subject 变量
255
- const subjectVars = patterns.map(p => p.subject?.termType === 'Variable' ? p.subject.value : null);
256
- const uniqueSubjectVars = [...new Set(subjectVars.filter(v => v !== null))];
257
- if (uniqueSubjectVars.length !== 1) {
258
- return { canOptimize: false, reason: 'Patterns do not share the same subject variable' };
259
- }
260
- return {
261
- canOptimize: true,
262
- patterns,
263
- joinVar: uniqueSubjectVars[0],
264
- joinField: 'subject',
265
- };
266
- }
267
- // ============================================================
268
- // 辅助方法
269
- // ============================================================
270
- /**
271
- * 从核心操作提取 subject 变量
272
- */
273
- extractSubjectVariable(op) {
274
- if (op.type === 'pattern') {
275
- const pattern = op;
276
- if (pattern.subject?.termType === 'Variable') {
277
- return pattern.subject.value;
278
- }
279
- }
280
- else if (op.type === 'bgp') {
281
- const bgp = op;
282
- if (bgp.patterns.length > 0) {
283
- const firstPattern = bgp.patterns[0];
284
- if (firstPattern.subject?.termType === 'Variable') {
285
- return firstPattern.subject.value;
286
- }
287
- }
288
- }
289
- else if (op.type === 'filter') {
290
- return this.extractSubjectVariable(op.input);
291
- }
292
- else if (op.type === 'join') {
293
- const join = op;
294
- if (join.input && join.input.length > 0) {
295
- return this.extractSubjectVariable(join.input[0]);
296
- }
297
- }
298
- return null;
299
- }
300
- /**
301
- * 从 OPTIONAL 的右操作数提取简单 pattern 信息
302
- */
303
- extractSimplePattern(op) {
304
- if (op.type === 'pattern') {
305
- const pattern = op;
306
- if (pattern.subject?.termType !== 'Variable') {
307
- return null;
308
- }
309
- return {
310
- subjectVar: pattern.subject.value,
311
- predicate: pattern.predicate?.termType === 'NamedNode' ? pattern.predicate.value : null,
312
- objectVar: pattern.object?.termType === 'Variable' ? pattern.object.value : null,
313
- };
314
- }
315
- else if (op.type === 'bgp') {
316
- const bgp = op;
317
- if (bgp.patterns.length === 1) {
318
- return this.extractSimplePattern(bgp.patterns[0]);
319
- }
320
- }
321
- return null;
322
- }
323
- /**
324
- * 从 JOIN 操作提取所有 patterns
325
- */
326
- extractPatternsFromJoin(join) {
327
- const patterns = [];
328
- for (const input of join.input) {
329
- if (input.type === 'pattern') {
330
- patterns.push(input);
331
- }
332
- else if (input.type === 'bgp') {
333
- patterns.push(...input.patterns);
334
- }
335
- else if (input.type === 'join') {
336
- patterns.push(...this.extractPatternsFromJoin(input));
337
- }
338
- }
339
- return patterns;
340
- }
341
- /**
342
- * 组装 OPTIONAL 优化结果
343
- */
344
- assembleOptionalResults(coreBindings, attributeMap, subjectVar, optionalVars) {
345
- const results = [];
346
- for (const coreBinding of coreBindings) {
347
- const subjectTerm = coreBinding.get(dataFactory.variable(subjectVar));
348
- if (!subjectTerm || subjectTerm.termType !== 'NamedNode') {
349
- results.push(coreBinding);
350
- continue;
351
- }
352
- const subjectAttrs = attributeMap.get(subjectTerm.value);
353
- // 创建包含所有 OPTIONAL 变量的新 binding
354
- const entries = [];
355
- // 复制核心 binding 的所有变量
356
- for (const v of coreBinding.keys()) {
357
- const term = coreBinding.get(v);
358
- if (term) {
359
- entries.push([v, term]);
360
- }
361
- }
362
- // 添加 OPTIONAL 变量
363
- for (const [predicate, varName] of optionalVars) {
364
- const values = subjectAttrs?.get(predicate);
365
- if (values && values.length > 0) {
366
- entries.push([dataFactory.variable(varName), values[0]]);
367
- }
368
- }
369
- results.push(this.bindingsFactory.bindings(entries));
370
- }
371
- return results;
372
- }
373
- }
374
- exports.QueryOptimizer = QueryOptimizer;
375
- //# sourceMappingURL=QueryOptimizer.js.map
@@ -1,92 +0,0 @@
1
- /**
2
- * QuintEngine - Configurable SPARQL engine backed by QuintStore
3
- *
4
- * Store type (SQLite/PostgreSQL) determined by endpoint scheme.
5
- *
6
- * Usage:
7
- * ```json
8
- * {
9
- * "@type": "QuintEngine",
10
- * "endpoint": "postgresql://user:pass@localhost/db"
11
- * }
12
- * ```
13
- */
14
- import type { Bindings, ResultStream } from '@rdfjs/types';
15
- import type { Quad } from '@rdfjs/types';
16
- import type { QuintStore } from '../quint/types';
17
- import { ComunicaQuintEngine, type QueryContext } from './ComunicaQuintEngine';
18
- export interface QuintEngineArgs {
19
- /**
20
- * Connection string with scheme prefix:
21
- * - SQLite: 'sqlite:/path/to/db' or 'sqlite::memory:'
22
- * - PostgreSQL: 'postgresql://user:pass@host/db' or 'postgres://...'
23
- */
24
- endpoint: string;
25
- /**
26
- * Enable debug logging
27
- */
28
- debug?: boolean;
29
- }
30
- /**
31
- * QuintEngine - Injectable SPARQL engine with configurable backend
32
- *
33
- * This class provides a unified interface for SPARQL queries backed by
34
- * either SQLite or PostgreSQL QuintStore implementations.
35
- */
36
- export declare class QuintEngine {
37
- private readonly store;
38
- private readonly engine;
39
- private readonly storeType;
40
- private isOpen;
41
- constructor(args: QuintEngineArgs);
42
- /**
43
- * Parse endpoint string to extract store type and connection string
44
- *
45
- * Formats:
46
- * - sqlite:/path/to/db -> SQLite with file path
47
- * - sqlite::memory: -> SQLite in-memory
48
- * - postgresql://user:pass@host/db -> PostgreSQL
49
- * - postgres://user:pass@host/db -> PostgreSQL (alias)
50
- */
51
- private parseEndpoint;
52
- /**
53
- * Open the underlying store connection
54
- */
55
- open(): Promise<void>;
56
- /**
57
- * Close the store connection
58
- */
59
- close(): Promise<void>;
60
- /**
61
- * Ensure store is open, auto-open if needed
62
- */
63
- private ensureOpen;
64
- /**
65
- * Execute SELECT query
66
- */
67
- queryBindings(query: string, context?: QueryContext): Promise<ResultStream<Bindings>>;
68
- /**
69
- * Execute ASK query
70
- */
71
- queryBoolean(query: string, context?: QueryContext): Promise<boolean>;
72
- /**
73
- * Execute CONSTRUCT/DESCRIBE query
74
- */
75
- queryQuads(query: string, context?: QueryContext): Promise<ResultStream<Quad>>;
76
- /**
77
- * Execute UPDATE query (INSERT/DELETE)
78
- */
79
- queryVoid(query: string, context?: QueryContext): Promise<void>;
80
- /**
81
- * Get the underlying QuintStore for direct operations
82
- */
83
- getStore(): QuintStore;
84
- /**
85
- * Get the underlying ComunicaQuintEngine
86
- */
87
- getEngine(): ComunicaQuintEngine;
88
- /**
89
- * Get the store type
90
- */
91
- getStoreType(): 'sqlite' | 'postgresql';
92
- }