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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/bin/xpod.js +43 -8
  2. package/config/bun.json +45 -48
  3. package/config/cloud.json +13 -90
  4. package/config/components-ignore.json +0 -1
  5. package/config/local.json +111 -63
  6. package/config/resolver.json +4 -2
  7. package/config/terminal.json +4 -1
  8. package/config/xpod.base.json +16 -8
  9. package/config/xpod.json +51 -54
  10. package/dist/acceptance/PublicCloudSemanticConformance.d.ts +4 -0
  11. package/dist/acceptance/PublicCloudSemanticConformance.js +214 -0
  12. package/dist/acceptance/QleverSearchConformance.d.ts +39 -0
  13. package/dist/acceptance/QleverSearchConformance.js +686 -0
  14. package/dist/acceptance/QleverSemanticConformance.d.ts +3 -0
  15. package/dist/acceptance/QleverSemanticConformance.js +178 -0
  16. package/dist/acceptance/RdfSemanticConformance.d.ts +114 -0
  17. package/dist/acceptance/RdfSemanticConformance.js +307 -0
  18. package/dist/acceptance/run-installed-qlever-conformance.d.ts +12 -0
  19. package/dist/acceptance/run-installed-qlever-conformance.js +87 -0
  20. package/dist/acceptance/run-installed-rdf-conformance.d.ts +12 -0
  21. package/dist/acceptance/run-installed-rdf-conformance.js +88 -0
  22. package/dist/ai/service/EmbeddingProviderError.d.ts +7 -0
  23. package/dist/ai/service/EmbeddingProviderError.js +42 -0
  24. package/dist/api/ai-gateway/connect/index.js +5 -2
  25. package/dist/api/auth/AuthContext.d.ts +5 -0
  26. package/dist/api/auth/AuthContext.js +10 -0
  27. package/dist/api/container/common.js +20 -1
  28. package/dist/api/container/rdf.d.ts +1 -0
  29. package/dist/api/container/rdf.js +43 -4
  30. package/dist/api/container/types.d.ts +4 -0
  31. package/dist/api/runs/InngestRunExecutionBackend.d.ts +2 -2
  32. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +2 -0
  33. package/dist/api/runs/PiAgentRuntimeDriver.js +1 -0
  34. package/dist/api/runs/RdfRunContextRetriever.d.ts +8 -0
  35. package/dist/api/runs/RdfRunContextRetriever.js +23 -1
  36. package/dist/api/runtime.js +20 -6
  37. package/dist/api/service/RdfSearchIndexingService.d.ts +37 -3
  38. package/dist/api/service/RdfSearchIndexingService.js +130 -18
  39. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +8 -0
  40. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +102 -15
  41. package/dist/api/service/RdfSearchReconciliationWorker.d.ts +76 -0
  42. package/dist/api/service/RdfSearchReconciliationWorker.js +294 -0
  43. package/dist/api/tasks/InngestTaskScheduler.d.ts +4 -4
  44. package/dist/components/components.jsonld +9 -12
  45. package/dist/components/context.jsonld +227 -348
  46. package/dist/document/MarkdownRetrievalPointProjector.d.ts +33 -0
  47. package/dist/document/MarkdownRetrievalPointProjector.js +196 -0
  48. package/dist/document/MarkdownRetrievalPointProjector.jsonld +135 -0
  49. package/dist/document/ReaderMaterialization.d.ts +34 -0
  50. package/dist/document/ReaderMaterialization.js +3 -0
  51. package/dist/document/ReaderMaterialization.jsonld +151 -0
  52. package/dist/document/ReaderMaterializationRepository.d.ts +27 -0
  53. package/dist/document/ReaderMaterializationRepository.js +400 -0
  54. package/dist/document/ReaderMaterializationRepository.jsonld +84 -0
  55. package/dist/document/index.d.ts +3 -1
  56. package/dist/document/index.js +3 -1
  57. package/dist/http/SubgraphSparqlHttpHandler.js +34 -54
  58. package/dist/http/search/SearchHttpHandler.js +14 -12
  59. package/dist/http/terminal/TerminalHttpHandler.d.ts +3 -0
  60. package/dist/http/terminal/TerminalHttpHandler.js +1 -0
  61. package/dist/http/terminal/TerminalHttpHandler.jsonld +11 -0
  62. package/dist/identity/drizzle/DrizzleIndexedStorage.js +19 -39
  63. package/dist/identity/drizzle/db.d.ts +1 -0
  64. package/dist/identity/drizzle/db.js +35 -0
  65. package/dist/index.d.ts +9 -17
  66. package/dist/index.js +14 -22
  67. package/dist/provision/ProvisionPodCreator.d.ts +1 -1
  68. package/dist/provision/ProvisionPodCreator.js +4 -3
  69. package/dist/search/RdfSearchIntentSink.d.ts +17 -0
  70. package/dist/search/RdfSearchIntentSink.js +46 -0
  71. package/dist/search/RdfSearchIntentSink.jsonld +47 -0
  72. package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
  73. package/dist/search/RdfSearchReconciliationRepository.js +771 -0
  74. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
  75. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
  76. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
  77. package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
  78. package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
  79. package/dist/solidfs/SolidFsSyncJournal.js +20 -5
  80. package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
  81. package/dist/solidfs/index.d.ts +1 -0
  82. package/dist/solidfs/index.js +1 -0
  83. package/dist/storage/SparqlUpdateResourceStore.js +3 -3
  84. package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
  85. package/dist/storage/accessors/MixDataAccessor.js +182 -399
  86. package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
  87. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
  88. package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
  89. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
  90. package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
  91. package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
  92. package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
  93. package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
  94. package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
  95. package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
  96. package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
  97. package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
  98. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
  99. package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
  100. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
  101. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
  102. package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
  103. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
  104. package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
  105. package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
  106. package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
  107. package/dist/storage/rdf/Rdf3xIndex.js +20 -16
  108. package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
  109. package/dist/storage/rdf/RdfAccessScope.js +74 -9
  110. package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
  111. package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
  112. package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
  113. package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
  114. package/dist/storage/rdf/RdfQuadIndex.js +286 -99
  115. package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
  116. package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
  117. package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
  118. package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
  119. package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
  120. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
  121. package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
  122. package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
  123. package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
  124. package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
  125. package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
  126. package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
  127. package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
  128. package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
  129. package/dist/storage/rdf/RdfTermDictionary.js +0 -136
  130. package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
  131. package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
  132. package/dist/storage/rdf/RdfTermSemantics.js +29 -0
  133. package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
  134. package/dist/storage/rdf/RdfTextIndex.js +187 -115
  135. package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
  136. package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
  137. package/dist/storage/rdf/RdfVectorIndex.js +156 -233
  138. package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
  139. package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
  140. package/dist/storage/rdf/SolidRdfEngine.js +28 -308
  141. package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
  142. package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
  143. package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
  144. package/dist/storage/rdf/index.d.ts +7 -6
  145. package/dist/storage/rdf/index.js +17 -12
  146. package/dist/storage/rdf/models-benchmark.d.ts +5 -1
  147. package/dist/storage/rdf/models-benchmark.js +17 -19
  148. package/dist/storage/rdf/types.d.ts +68 -6
  149. package/dist/storage/rdf/types.jsonld +69 -0
  150. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
  151. package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
  152. package/dist/storage/vector/index.d.ts +0 -1
  153. package/dist/storage/vector/index.js +0 -1
  154. package/dist/terminal/AclPermissionService.d.ts +4 -5
  155. package/dist/terminal/AclPermissionService.js +55 -75
  156. package/dist/terminal/TerminalSessionManager.d.ts +3 -2
  157. package/dist/terminal/TerminalSessionManager.js +3 -3
  158. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
  214. package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
  215. package/package.json +19 -8
  216. package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
  217. package/static/app/assets/inrupt-smoke.js +2 -2
  218. package/static/app/assets/main.css +1 -1
  219. package/static/app/assets/main.js +11 -11
  220. package/static/auth-callback/assets/{AiConfigContext-BvBdu_A3.js → AiConfigContext-iQ74JmRZ.js} +1 -1
  221. package/static/auth-callback/assets/{AiConfigPage-BpDw4jco.js → AiConfigPage-BBDKE1gJ.js} +1 -1
  222. package/static/auth-callback/assets/{DocumentProcessingPanel-BmZ_jzRr.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
  223. package/static/auth-callback/assets/{IndexLifecyclePanel-BfQBjN4z.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
  224. package/static/auth-callback/assets/{IndexSubjectPanel-BlsnatPt.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
  225. package/static/auth-callback/assets/{ModelAssignmentsPanel-KA6Mdndz.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
  226. package/static/auth-callback/assets/{ModelsPage-C7jymyIY.js → ModelsPage-C2hxyrmI.js} +1 -1
  227. package/static/auth-callback/assets/{NetworkPage-k2ShktNm.js → NetworkPage-IGIc2q1Y.js} +1 -1
  228. package/static/auth-callback/assets/{PaneListHeader-mLMe_dvU.js → PaneListHeader-CebuPl_g.js} +1 -1
  229. package/static/auth-callback/assets/{SearchIndexingPanel-CqV9um_t.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
  230. package/static/auth-callback/assets/{StatusSubjectPanel-BgMBTbr2.js → StatusSubjectPanel-votxBkr5.js} +1 -1
  231. package/static/auth-callback/assets/{StatusWorkspace-zbSyhdG2.js → StatusWorkspace-Cksl61zX.js} +1 -1
  232. package/static/auth-callback/assets/{SystemSettingsPage-CtW79nW6.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
  233. package/static/auth-callback/assets/{SystemSettingsSubjectPanel-ZOPKYUtZ.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
  234. package/static/auth-callback/assets/{activity-BQ-CQE3O.js → activity-DQL6kZHZ.js} +1 -1
  235. package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
  236. package/static/auth-callback/assets/{auth-callback-Htr_CB_g.js → auth-callback-BxQMd_Mc.js} +39 -39
  237. package/static/auth-callback/assets/{badge-D5SGTJeO.js → badge-DvW4LUHH.js} +1 -1
  238. package/static/auth-callback/assets/{download-DK183Ldo.js → download-Cx_uaCR1.js} +1 -1
  239. package/static/auth-callback/assets/{external-link-LDHy_4bn.js → external-link-D6L6ExH1.js} +1 -1
  240. package/static/auth-callback/assets/{index-BWrvgHqK.js → index-BAS_hxGu.js} +1 -1
  241. package/static/auth-callback/assets/{index-2WmlePQ9.js → index-BmBjpCoD.js} +1 -1
  242. package/static/auth-callback/assets/{index-browser-DUd4E4-x.js → index-browser-pdn4D3M4.js} +1 -1
  243. package/static/auth-callback/assets/{key-round-ibX79Kr-.js → key-round-BTBzOggq.js} +1 -1
  244. package/static/auth-callback/assets/{rotate-ccw-B2_VMaiX.js → rotate-ccw-eV7Cx8sB.js} +1 -1
  245. package/static/auth-callback/assets/{skeleton-F4nrpycc.js → skeleton-Bg4GYgBM.js} +1 -1
  246. package/static/auth-callback/assets/{waypoints-DImIq93f.js → waypoints-CJbydf0B.js} +1 -1
  247. package/static/auth-callback/assets/{workspace-layout-IVCSYU21.js → workspace-layout-C6Hh8Xf-.js} +1 -1
  248. package/static/auth-callback/auth-callback.html +2 -2
  249. package/static/dashboard/assets/{AiConfigContext-cjjfYTo9.js → AiConfigContext-BkJj28vK.js} +1 -1
  250. package/static/dashboard/assets/{AiConfigPage-CO0DSD_j.js → AiConfigPage-Cs9B4uyp.js} +1 -1
  251. package/static/dashboard/assets/{DocumentProcessingPanel-DMGnH8Oj.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
  252. package/static/dashboard/assets/{IndexLifecyclePanel-DSkIOCL5.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
  253. package/static/dashboard/assets/{IndexSubjectPanel-qWN_DbAp.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
  254. package/static/dashboard/assets/{ModelAssignmentsPanel-DCf83uM3.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
  255. package/static/dashboard/assets/{ModelsPage-CMnvSrl5.js → ModelsPage-CBrLjuUn.js} +1 -1
  256. package/static/dashboard/assets/{NetworkPage-C8Gkwclb.js → NetworkPage-BlYk8L1z.js} +1 -1
  257. package/static/dashboard/assets/{PaneListHeader-BtU_8cDK.js → PaneListHeader-A5oZJQC0.js} +1 -1
  258. package/static/dashboard/assets/{SearchIndexingPanel-DEn12pNU.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
  259. package/static/dashboard/assets/{StatusSubjectPanel-B1_ILg2d.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
  260. package/static/dashboard/assets/{StatusWorkspace-BG6nMNCo.js → StatusWorkspace-rDM0yDtk.js} +1 -1
  261. package/static/dashboard/assets/{SystemSettingsPage-BnWYIXaM.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
  262. package/static/dashboard/assets/{SystemSettingsSubjectPanel-C_mYVPWb.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
  263. package/static/dashboard/assets/{activity-DYJ7PdRl.js → activity-CJ5K6hYC.js} +1 -1
  264. package/static/dashboard/assets/{badge-BIaZco1P.js → badge-L-NMOi1P.js} +1 -1
  265. package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
  266. package/static/dashboard/assets/{dashboard-Dl40_MEa.js → dashboard-DyjAyYxx.js} +34 -34
  267. package/static/dashboard/assets/{download-By16k9VK.js → download-Bi4u5K5B.js} +1 -1
  268. package/static/dashboard/assets/{external-link-B92xOG_d.js → external-link-jmhLDfvT.js} +1 -1
  269. package/static/dashboard/assets/{index-BajZpJ48.js → index-BoaGJBxf.js} +1 -1
  270. package/static/dashboard/assets/{index-wsVPom_x.js → index-C22TAEi4.js} +1 -1
  271. package/static/dashboard/assets/{key-round-Clo5FOwA.js → key-round-Dk1VmMrn.js} +1 -1
  272. package/static/dashboard/assets/{rotate-ccw-smWSfi1L.js → rotate-ccw-DIfLsSwi.js} +1 -1
  273. package/static/dashboard/assets/{skeleton-BrTaGeJw.js → skeleton-BGPJMHb-.js} +1 -1
  274. package/static/dashboard/assets/{waypoints-DGPQInE7.js → waypoints-CY53egpu.js} +1 -1
  275. package/static/dashboard/assets/{workspace-layout-CPU4XRmb.js → workspace-layout-CoHkcx70.js} +1 -1
  276. package/static/dashboard/dashboard.html +2 -2
  277. package/static/settings/assets/{AiConfigContext-CT29_OyW.js → AiConfigContext-BcEPlEJe.js} +1 -1
  278. package/static/settings/assets/{AiConfigPage-WIE95S28.js → AiConfigPage-D-t3ZUhg.js} +1 -1
  279. package/static/settings/assets/{DocumentProcessingPanel-KG8Sq999.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
  280. package/static/settings/assets/{IndexLifecyclePanel-iKvtHDXY.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
  281. package/static/settings/assets/{IndexSubjectPanel-BQdSCkk4.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
  282. package/static/settings/assets/{ModelAssignmentsPanel-P8QcVB0F.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
  283. package/static/settings/assets/{ModelsPage-UZkZGqor.js → ModelsPage-DZrACwVN.js} +1 -1
  284. package/static/settings/assets/{NetworkPage-Dcpcvg15.js → NetworkPage-BlrGGfqL.js} +1 -1
  285. package/static/settings/assets/{PaneListHeader--gHtZws5.js → PaneListHeader-C3TCs1RI.js} +1 -1
  286. package/static/settings/assets/{SearchIndexingPanel-DdgJSJYQ.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
  287. package/static/settings/assets/{StatusSubjectPanel-UOxp_XVL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
  288. package/static/settings/assets/{StatusWorkspace-CPNXuD12.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
  289. package/static/settings/assets/{SystemSettingsPage-B6ySeVPw.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
  290. package/static/settings/assets/{SystemSettingsSubjectPanel-I7zWmpiI.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
  291. package/static/settings/assets/{activity-CFhmzahP.js → activity-D7iNhTkQ.js} +1 -1
  292. package/static/settings/assets/{badge-BBdUc5B-.js → badge-DO0r_RT4.js} +1 -1
  293. package/static/settings/assets/{download-WJE9-yxQ.js → download-CsJlNSbd.js} +1 -1
  294. package/static/settings/assets/{external-link-RKoYyCp_.js → external-link-BCR7SHme.js} +1 -1
  295. package/static/settings/assets/{index-Bq2o0Bif.js → index-Cgq16ekN.js} +1 -1
  296. package/static/settings/assets/{index-DvxneI5O.js → index-SrhQvcrU.js} +1 -1
  297. package/static/settings/assets/{index-browser-Qmo6EsFT.js → index-browser-THpcMCnz.js} +1 -1
  298. package/static/settings/assets/{key-round-r-D9sQUK.js → key-round-Dd3jk1BT.js} +1 -1
  299. package/static/settings/assets/{rotate-ccw-D3IIhbPH.js → rotate-ccw-tiL14i1d.js} +1 -1
  300. package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
  301. package/static/settings/assets/{settings-D8oDBXWg.js → settings-CVLDPejo.js} +34 -34
  302. package/static/settings/assets/{skeleton-DrL4RQuw.js → skeleton-DBxLuNgU.js} +1 -1
  303. package/static/settings/assets/{waypoints-C5sRhpJw.js → waypoints-DS3e3hv7.js} +1 -1
  304. package/static/settings/assets/{workspace-layout-B4ALmWsM.js → workspace-layout-mucrxyTK.js} +1 -1
  305. package/static/settings/settings.html +2 -2
  306. package/config/search.json +0 -66
  307. package/dist/document/HeadingChunker.jsonld +0 -41
  308. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
  309. package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
  310. package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
  311. package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
  312. package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
  313. package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
  314. package/dist/storage/RdfDerivedIndexingListener.js +0 -135
  315. package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
  316. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
  317. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
  318. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
  319. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
  320. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
  321. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
  322. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
  323. package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
  324. package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
  325. package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
  326. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
  327. package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
  328. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
  329. package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
  330. package/dist/storage/sparql/AlgebraUtils.js +0 -118
  331. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
  332. package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
  333. package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
  334. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
  335. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
  336. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
  337. package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
  338. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
  339. package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
  340. package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
  341. package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
  342. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
  343. package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
  344. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
  345. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
  346. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
  347. package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
  348. package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
  349. package/dist/storage/sparql/PatternBuilder.js +0 -118
  350. package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
  351. package/dist/storage/sparql/QueryOptimizer.js +0 -375
  352. package/dist/storage/sparql/QuintEngine.d.ts +0 -92
  353. package/dist/storage/sparql/QuintEngine.js +0 -150
  354. package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
  355. package/dist/storage/sparql/QuintQuerySource.js +0 -1069
  356. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
  357. package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
  358. package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
  359. package/dist/storage/vector/VectorIndexingListener.js +0 -346
  360. package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
  361. package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
  362. package/static/settings/assets/settings-rWdEQY5f.css +0 -1
@@ -1,421 +0,0 @@
1
- "use strict";
2
- /**
3
- * FilterPushdownExtractor - Extract pushdownable conditions from SPARQL FILTER
4
- *
5
- * Analyzes SPARQL FILTER expressions and extracts conditions that can be
6
- * pushed down to the database layer for efficient query execution.
7
- *
8
- * Supported pushdown operations:
9
- * - Comparison: =, !=, <, >, <=, >=
10
- * - String functions: STRSTARTS, STRENDS, CONTAINS, REGEX
11
- * - Type checking: isIRI, isBlank, isLiteral, isNumeric
12
- * - Language: LANGMATCHES
13
- * - Logical: AND, OR (with $in optimization)
14
- * - Set operations: IN, NOT IN
15
- * - Existence: BOUND, !BOUND
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.FilterPushdownExtractor = void 0;
19
- const rdf_data_factory_1 = require("rdf-data-factory");
20
- const serialization_1 = require("../quint/serialization");
21
- const AlgebraUtils_1 = require("./AlgebraUtils");
22
- const dataFactory = new rdf_data_factory_1.DataFactory();
23
- /**
24
- * FilterPushdownExtractor extracts pushdownable conditions from FILTER expressions
25
- */
26
- class FilterPushdownExtractor {
27
- /**
28
- * Extract pushdownable filters from an expression
29
- * Returns filters that can be pushed down and the remaining expression
30
- */
31
- extractPushdownFilters(expr, pattern) {
32
- if (expr.expressionType !== 'operator') {
33
- // Can't pushdown non-operator expressions
34
- return { filters: {}, remainder: expr };
35
- }
36
- const opExpr = expr;
37
- const op = opExpr.operator.toLowerCase();
38
- // Handle AND: recursively extract from both sides
39
- if (op === '&&') {
40
- const filters = {};
41
- const remainders = [];
42
- for (const arg of opExpr.args) {
43
- const result = this.extractPushdownFilters(arg, pattern);
44
- // Merge filters
45
- for (const [varName, ops] of Object.entries(result.filters)) {
46
- filters[varName] = { ...filters[varName], ...ops };
47
- }
48
- if (result.remainder) {
49
- remainders.push(result.remainder);
50
- }
51
- }
52
- // Combine remainders with AND
53
- let remainder = null;
54
- if (remainders.length === 1) {
55
- remainder = remainders[0];
56
- }
57
- else if (remainders.length > 1) {
58
- remainder = {
59
- type: 'expression',
60
- expressionType: 'operator',
61
- operator: '&&',
62
- args: remainders,
63
- };
64
- }
65
- return { filters, remainder };
66
- }
67
- // Handle OR: try to convert to $in or OR branches
68
- if (op === '||') {
69
- return this.extractOrPushdown(opExpr, pattern);
70
- }
71
- // Try to extract single pushdown condition
72
- const result = this.tryExtractSinglePushdown(opExpr, pattern);
73
- if (result) {
74
- return { filters: result, remainder: null };
75
- }
76
- // Can't pushdown
77
- return { filters: {}, remainder: expr };
78
- }
79
- /**
80
- * Handle OR expression pushdown
81
- * - Same variable equality: convert to $in
82
- * - Different variables: create OR branches for separate queries
83
- * - Mixed (pushdownable + non-pushdownable): orBranches + orNonPushdownBranches
84
- */
85
- extractOrPushdown(expr, pattern) {
86
- // Flatten OR tree and collect all branches
87
- const branches = [];
88
- const collectBranches = (e) => {
89
- if (e.expressionType === 'operator') {
90
- const op = e;
91
- if (op.operator.toLowerCase() === '||') {
92
- op.args.forEach(collectBranches);
93
- return;
94
- }
95
- }
96
- branches.push(e);
97
- };
98
- collectBranches(expr);
99
- // Try to extract pushdown from each branch
100
- const pushdownable = [];
101
- const nonPushdownable = [];
102
- for (const branch of branches) {
103
- if (branch.expressionType === 'operator') {
104
- const branchFilters = this.tryExtractSinglePushdown(branch, pattern);
105
- if (branchFilters && Object.keys(branchFilters).length > 0) {
106
- pushdownable.push({ filters: branchFilters, expr: branch });
107
- continue;
108
- }
109
- }
110
- nonPushdownable.push(branch);
111
- }
112
- // If nothing pushdownable, return as remainder
113
- if (pushdownable.length === 0) {
114
- return { filters: {}, remainder: expr };
115
- }
116
- // Check if all are same-variable equality (can use $in)
117
- const inResult = this.tryConvertToIn(pushdownable);
118
- if (inResult && nonPushdownable.length === 0) {
119
- return { filters: inResult, remainder: null };
120
- }
121
- // Different variables or mixed: use OR branches
122
- const orBranches = pushdownable.map(p => p.filters);
123
- // Non-pushdownable branches need OR semantics (not AND), so use orNonPushdownBranches
124
- return {
125
- filters: {},
126
- remainder: null,
127
- orBranches,
128
- orNonPushdownBranches: nonPushdownable.length > 0 ? nonPushdownable : undefined
129
- };
130
- }
131
- /**
132
- * Try to convert same-variable equalities to $in
133
- */
134
- tryConvertToIn(branches) {
135
- // Check if all branches are single-variable equality
136
- const varValues = new Map();
137
- for (const { filters } of branches) {
138
- const keys = Object.keys(filters);
139
- if (keys.length !== 1)
140
- return null;
141
- const varName = keys[0];
142
- const ops = filters[varName];
143
- const opKeys = Object.keys(ops);
144
- if (opKeys.length !== 1 || !('$eq' in ops))
145
- return null;
146
- if (!varValues.has(varName)) {
147
- varValues.set(varName, []);
148
- }
149
- varValues.get(varName).push(ops.$eq);
150
- }
151
- // Must be single variable
152
- if (varValues.size !== 1)
153
- return null;
154
- const [varName, values] = [...varValues.entries()][0];
155
- return { [varName]: { $in: values } };
156
- }
157
- /**
158
- * Try to extract pushdown filter from a single operator expression
159
- */
160
- tryExtractSinglePushdown(expr, pattern) {
161
- const op = expr.operator.toLowerCase();
162
- const filters = {};
163
- // Comparison: =, !=, <, >, <=, >=
164
- if (['=', '!=', '<', '>', '<=', '>='].includes(op) && expr.args.length === 2) {
165
- const result = this.extractComparison(expr, op);
166
- if (result) {
167
- // Only pushdown if the variable is in the pattern
168
- if ((0, AlgebraUtils_1.isVariableInPattern)(result.varName, pattern)) {
169
- filters[result.varName] = { [result.op]: result.value };
170
- return filters;
171
- }
172
- }
173
- }
174
- // STRSTARTS, STRENDS, CONTAINS
175
- // Subject/predicate/graph columns store raw IRI strings. Object string
176
- // operators are explicit lexical STR(?object) pushdowns so the store can
177
- // route text literals to object_text and IRIs/blank nodes to object_key.
178
- if (['strstarts', 'strends', 'contains'].includes(op) && expr.args.length === 2) {
179
- const varName = (0, AlgebraUtils_1.extractStrVariable)(expr.args[0]);
180
- const value = (0, AlgebraUtils_1.extractLiteralValue)(expr.args[1]);
181
- if (varName && value && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
182
- const position = (0, AlgebraUtils_1.getVariablePosition)(varName, pattern);
183
- const startsWithOp = position === 'object' ? '$strStartsWith' : '$startsWith';
184
- const endsWithOp = position === 'object' ? '$strEndsWith' : '$endsWith';
185
- const containsOp = position === 'object' ? '$strContains' : '$contains';
186
- if (op === 'strstarts') {
187
- filters[varName] = { [startsWithOp]: value };
188
- }
189
- else if (op === 'strends') {
190
- filters[varName] = { [endsWithOp]: value };
191
- }
192
- else {
193
- filters[varName] = { [containsOp]: value };
194
- }
195
- return filters;
196
- }
197
- }
198
- // REGEX
199
- if (op === 'regex' && expr.args.length >= 2) {
200
- const varName = (0, AlgebraUtils_1.extractStrVariable)(expr.args[0]);
201
- const regexPattern = (0, AlgebraUtils_1.extractLiteralValue)(expr.args[1]);
202
- if (varName && regexPattern && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
203
- const position = (0, AlgebraUtils_1.getVariablePosition)(varName, pattern);
204
- filters[varName] = position === 'object'
205
- ? { $strRegex: regexPattern }
206
- : { $regex: regexPattern };
207
- return filters;
208
- }
209
- }
210
- // IN
211
- if (op === 'in' && expr.args.length >= 1) {
212
- const varName = (0, AlgebraUtils_1.extractVariable)(expr.args[0]);
213
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
214
- const values = [];
215
- for (let i = 1; i < expr.args.length; i++) {
216
- const lit = (0, AlgebraUtils_1.extractLiteral)(expr.args[i]);
217
- if (lit) {
218
- values.push(this.serializeExactValue(lit.value, lit.datatype));
219
- }
220
- }
221
- if (values.length > 0) {
222
- filters[varName] = { $in: values };
223
- return filters;
224
- }
225
- }
226
- }
227
- // NOT IN
228
- if (op === 'notin' && expr.args.length >= 1) {
229
- const varName = (0, AlgebraUtils_1.extractVariable)(expr.args[0]);
230
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
231
- const values = [];
232
- for (let i = 1; i < expr.args.length; i++) {
233
- const lit = (0, AlgebraUtils_1.extractLiteral)(expr.args[i]);
234
- if (lit) {
235
- values.push(this.serializeExactValue(lit.value, lit.datatype));
236
- }
237
- }
238
- if (values.length > 0) {
239
- filters[varName] = { $notIn: values };
240
- return filters;
241
- }
242
- }
243
- }
244
- // BOUND
245
- if (op === 'bound' && expr.args.length === 1) {
246
- const varName = (0, AlgebraUtils_1.extractVariable)(expr.args[0]);
247
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
248
- filters[varName] = { $isNull: false };
249
- return filters;
250
- }
251
- }
252
- // !BOUND
253
- if (op === '!' && expr.args.length === 1) {
254
- const inner = expr.args[0];
255
- if (inner.expressionType === 'operator') {
256
- const innerOp = inner;
257
- if (innerOp.operator.toLowerCase() === 'bound' && innerOp.args.length === 1) {
258
- const varName = (0, AlgebraUtils_1.extractVariable)(innerOp.args[0]);
259
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
260
- filters[varName] = { $isNull: true };
261
- return filters;
262
- }
263
- }
264
- }
265
- }
266
- // Type checking functions
267
- // isiri/isuri: In Solid, IRIs are http:// or https://
268
- if ((op === 'isiri' || op === 'isuri') && expr.args.length === 1) {
269
- const varName = (0, AlgebraUtils_1.extractVariable)(expr.args[0]);
270
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
271
- filters[varName] = { $startsWith: 'http' };
272
- return filters;
273
- }
274
- }
275
- // isblank: Blank nodes start with _:
276
- if (op === 'isblank' && expr.args.length === 1) {
277
- const varName = (0, AlgebraUtils_1.extractVariable)(expr.args[0]);
278
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
279
- filters[varName] = { $startsWith: '_:' };
280
- return filters;
281
- }
282
- }
283
- // isliteral: Literals start with " (or N\0 for numeric, D\0 for datetime)
284
- if (op === 'isliteral' && expr.args.length === 1) {
285
- const varName = (0, AlgebraUtils_1.extractVariable)(expr.args[0]);
286
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
287
- // Match strings starting with ", N (numeric), or D (datetime)
288
- filters[varName] = { $regex: '^["ND]' };
289
- return filters;
290
- }
291
- }
292
- // isnumeric: Our numeric literals start with N\0
293
- if (op === 'isnumeric' && expr.args.length === 1) {
294
- const varName = (0, AlgebraUtils_1.extractVariable)(expr.args[0]);
295
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
296
- filters[varName] = { $startsWith: 'N\0' };
297
- return filters;
298
- }
299
- }
300
- // LANGMATCHES(LANG(?x), "en") - language tagged literals end with @lang"
301
- if (op === 'langmatches' && expr.args.length === 2) {
302
- const langExpr = expr.args[0];
303
- const langPattern = expr.args[1];
304
- // First arg should be LANG(?var)
305
- if (langExpr.expressionType === 'operator' &&
306
- langExpr.operator === 'lang' &&
307
- langExpr.args.length === 1) {
308
- const varName = (0, AlgebraUtils_1.extractVariable)(langExpr.args[0]);
309
- if (varName && (0, AlgebraUtils_1.isVariableInPattern)(varName, pattern)) {
310
- const position = (0, AlgebraUtils_1.getVariablePosition)(varName, pattern);
311
- if (position === 'object') {
312
- if (langPattern.termType === 'Literal') {
313
- const lang = langPattern.value.toLowerCase();
314
- filters[varName] = { $language: lang };
315
- return filters;
316
- }
317
- }
318
- // Get the language pattern
319
- if (langPattern.termType === 'Literal') {
320
- const lang = langPattern.value.toLowerCase();
321
- if (lang === '*') {
322
- // Match any language tagged literal - ends with @something"
323
- // Use regex to match @[a-z]+" pattern at end
324
- filters[varName] = { $regex: '@[a-zA-Z]+"$' };
325
- }
326
- else {
327
- // Match specific language - ends with @lang"
328
- filters[varName] = { $endsWith: `@${lang}"` };
329
- }
330
- return filters;
331
- }
332
- }
333
- }
334
- }
335
- return null;
336
- }
337
- /**
338
- * Extract comparison operator info
339
- */
340
- extractComparison(expr, op) {
341
- const [left, right] = expr.args;
342
- // ?var op literal
343
- const leftVar = (0, AlgebraUtils_1.extractVariable)(left);
344
- const rightLiteral = (0, AlgebraUtils_1.extractLiteral)(right);
345
- if (leftVar && rightLiteral) {
346
- const filterOp = this.mapComparisonOp(op);
347
- const value = this.serializeForComparison(rightLiteral.value, rightLiteral.datatype, filterOp);
348
- return { varName: leftVar, op: filterOp, value };
349
- }
350
- // literal op ?var (reverse)
351
- const leftLiteral = (0, AlgebraUtils_1.extractLiteral)(left);
352
- const rightVar = (0, AlgebraUtils_1.extractVariable)(right);
353
- if (leftLiteral && rightVar) {
354
- const reversedOp = this.reverseComparisonOp(op);
355
- const filterOp = this.mapComparisonOp(reversedOp);
356
- const value = this.serializeForComparison(leftLiteral.value, leftLiteral.datatype, filterOp);
357
- return { varName: rightVar, op: filterOp, value };
358
- }
359
- // ?var = <namedNode>
360
- const leftVarForTerm = (0, AlgebraUtils_1.extractVariable)(left);
361
- const rightTerm = (0, AlgebraUtils_1.extractTerm)(right);
362
- if (leftVarForTerm && rightTerm && (op === '=' || op === '!=')) {
363
- const filterOp = op === '=' ? '$eq' : '$ne';
364
- return { varName: leftVarForTerm, op: filterOp, value: rightTerm };
365
- }
366
- return null;
367
- }
368
- mapComparisonOp(op) {
369
- const map = {
370
- '=': '$eq', '!=': '$ne', '<': '$lt', '>': '$gt', '<=': '$lte', '>=': '$gte'
371
- };
372
- return map[op] || '$eq';
373
- }
374
- reverseComparisonOp(op) {
375
- const map = {
376
- '<': '>', '>': '<', '<=': '>=', '>=': '<=', '=': '=', '!=': '!='
377
- };
378
- return map[op] || op;
379
- }
380
- /**
381
- * Serialize value for comparison
382
- *
383
- * Range comparison handling:
384
- * - $gt, $lte: Use fpstring + max suffix to be >= all values with same fpstring
385
- * - $lt, $gte: Use fpstring only (prefix), stored values are always > prefix
386
- * - $eq, $ne: Use exact serialization
387
- */
388
- serializeForComparison(value, datatype, filterOp) {
389
- // Exact match uses full serialization
390
- if (filterOp === '$eq' || filterOp === '$ne') {
391
- return this.serializeExactValue(value, datatype);
392
- }
393
- // Range comparison
394
- if (datatype && serialization_1.NUMERIC_TYPES.has(datatype)) {
395
- const fpValue = `N${serialization_1.SEP}${(0, serialization_1.fpEncode)(value)}`;
396
- // $gt and $lte need max suffix to compare correctly
397
- if (filterOp === '$gt' || filterOp === '$lte') {
398
- return fpValue + serialization_1.SEP + '\uffff';
399
- }
400
- // $lt and $gte use prefix only
401
- return fpValue;
402
- }
403
- if (datatype === serialization_1.DATETIME_TYPE) {
404
- const fpValue = `D${serialization_1.SEP}${(0, serialization_1.fpEncode)(new Date(value).valueOf())}`;
405
- if (filterOp === '$gt' || filterOp === '$lte') {
406
- return fpValue + serialization_1.SEP + '\uffff';
407
- }
408
- return fpValue;
409
- }
410
- // For non-numeric types, use exact value (string comparison)
411
- return this.serializeExactValue(value, datatype);
412
- }
413
- serializeExactValue(value, datatype) {
414
- const lit = datatype
415
- ? dataFactory.literal(value, dataFactory.namedNode(datatype))
416
- : dataFactory.literal(value);
417
- return (0, serialization_1.serializeObject)(lit);
418
- }
419
- }
420
- exports.FilterPushdownExtractor = FilterPushdownExtractor;
421
- //# sourceMappingURL=FilterPushdownExtractor.js.map
@@ -1,65 +0,0 @@
1
- /**
2
- * OptimizedQuadstoreEngine - 优化的 SPARQL 查询引擎
3
- *
4
- * 在 quadstore-comunica Engine 基础上增加查询优化:
5
- * - 对于简单查询(单 BGP),直接使用 quadstore API,支持 LIMIT/ORDER BY 下推
6
- * - 对于复杂查询(JOIN/OPTIONAL/UNION/FILTER),委托给 Comunica
7
- */
8
- import type { Quad, Term, Variable } from '@rdfjs/types';
9
- import type { ResultStream, Bindings } from '@rdfjs/types';
10
- import { Quadstore } from 'quadstore';
11
- /**
12
- * 简单的 Bindings 实现
13
- */
14
- export declare class SimpleBindings extends Map<string, Term> {
15
- get(key: string | Variable): Term | undefined;
16
- has(key: string | Variable): boolean;
17
- }
18
- /**
19
- * 优化的 Quadstore SPARQL 引擎
20
- */
21
- export declare class OptimizedQuadstoreEngine {
22
- private readonly comunica;
23
- private readonly quadstore;
24
- private readonly debug;
25
- constructor(store: Quadstore, debug?: boolean);
26
- private log;
27
- /**
28
- * 获取底层 quadstore
29
- */
30
- getStore(): Quadstore;
31
- /**
32
- * 执行 SELECT 查询
33
- */
34
- queryBindings(query: string, context?: any): Promise<ResultStream<Bindings>>;
35
- /**
36
- * 执行 ASK 查询
37
- */
38
- queryBoolean(query: string, context?: any): Promise<boolean>;
39
- /**
40
- * 执行 CONSTRUCT/DESCRIBE 查询
41
- */
42
- queryQuads(query: string, context?: any): Promise<ResultStream<Quad>>;
43
- /**
44
- * 执行 UPDATE 查询
45
- */
46
- queryVoid(query: string, context?: any): Promise<void>;
47
- /**
48
- * 分析查询,判断是否可以优化
49
- */
50
- private analyzeQuery;
51
- /**
52
- * 分析 Algebra 树
53
- */
54
- private analyzeAlgebra;
55
- /**
56
- * 从 BGP pattern 提取匹配条件
57
- */
58
- private extractPattern;
59
- /**
60
- * 执行优化的 SELECT
61
- */
62
- private executeOptimizedSelect;
63
- private varNameToTermName;
64
- private streamToArray;
65
- }