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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/bin/xpod.js +43 -8
  2. package/config/bun.json +45 -48
  3. package/config/cloud.json +13 -90
  4. package/config/components-ignore.json +0 -1
  5. package/config/local.json +111 -63
  6. package/config/resolver.json +4 -2
  7. package/config/terminal.json +4 -1
  8. package/config/xpod.base.json +16 -8
  9. package/config/xpod.json +51 -54
  10. package/dist/acceptance/PublicCloudSemanticConformance.d.ts +4 -0
  11. package/dist/acceptance/PublicCloudSemanticConformance.js +214 -0
  12. package/dist/acceptance/QleverSearchConformance.d.ts +39 -0
  13. package/dist/acceptance/QleverSearchConformance.js +686 -0
  14. package/dist/acceptance/QleverSemanticConformance.d.ts +3 -0
  15. package/dist/acceptance/QleverSemanticConformance.js +178 -0
  16. package/dist/acceptance/RdfSemanticConformance.d.ts +114 -0
  17. package/dist/acceptance/RdfSemanticConformance.js +307 -0
  18. package/dist/acceptance/run-installed-qlever-conformance.d.ts +12 -0
  19. package/dist/acceptance/run-installed-qlever-conformance.js +87 -0
  20. package/dist/acceptance/run-installed-rdf-conformance.d.ts +12 -0
  21. package/dist/acceptance/run-installed-rdf-conformance.js +88 -0
  22. package/dist/ai/service/EmbeddingProviderError.d.ts +7 -0
  23. package/dist/ai/service/EmbeddingProviderError.js +42 -0
  24. package/dist/api/ai-gateway/connect/index.js +5 -2
  25. package/dist/api/auth/AuthContext.d.ts +5 -0
  26. package/dist/api/auth/AuthContext.js +10 -0
  27. package/dist/api/container/common.js +21 -8
  28. package/dist/api/container/rdf.d.ts +1 -0
  29. package/dist/api/container/rdf.js +43 -4
  30. package/dist/api/container/types.d.ts +4 -0
  31. package/dist/api/runs/InngestRunExecutionBackend.d.ts +2 -2
  32. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +2 -0
  33. package/dist/api/runs/PiAgentRuntimeDriver.js +1 -0
  34. package/dist/api/runs/RdfRunContextRetriever.d.ts +8 -0
  35. package/dist/api/runs/RdfRunContextRetriever.js +23 -1
  36. package/dist/api/runtime.js +20 -6
  37. package/dist/api/service/RdfSearchIndexingService.d.ts +37 -3
  38. package/dist/api/service/RdfSearchIndexingService.js +130 -18
  39. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +8 -0
  40. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +102 -15
  41. package/dist/api/service/RdfSearchReconciliationWorker.d.ts +76 -0
  42. package/dist/api/service/RdfSearchReconciliationWorker.js +294 -0
  43. package/dist/api/tasks/InngestTaskScheduler.d.ts +4 -4
  44. package/dist/components/components.jsonld +9 -12
  45. package/dist/components/context.jsonld +227 -348
  46. package/dist/document/MarkdownRetrievalPointProjector.d.ts +33 -0
  47. package/dist/document/MarkdownRetrievalPointProjector.js +196 -0
  48. package/dist/document/MarkdownRetrievalPointProjector.jsonld +135 -0
  49. package/dist/document/ReaderMaterialization.d.ts +34 -0
  50. package/dist/document/ReaderMaterialization.js +3 -0
  51. package/dist/document/ReaderMaterialization.jsonld +151 -0
  52. package/dist/document/ReaderMaterializationRepository.d.ts +27 -0
  53. package/dist/document/ReaderMaterializationRepository.js +400 -0
  54. package/dist/document/ReaderMaterializationRepository.jsonld +84 -0
  55. package/dist/document/index.d.ts +3 -1
  56. package/dist/document/index.js +3 -1
  57. package/dist/http/SubgraphSparqlHttpHandler.js +34 -54
  58. package/dist/http/search/SearchHttpHandler.js +14 -12
  59. package/dist/http/terminal/TerminalHttpHandler.d.ts +3 -0
  60. package/dist/http/terminal/TerminalHttpHandler.js +1 -0
  61. package/dist/http/terminal/TerminalHttpHandler.jsonld +11 -0
  62. package/dist/identity/drizzle/DrizzleIndexedStorage.js +19 -39
  63. package/dist/identity/drizzle/db.d.ts +1 -0
  64. package/dist/identity/drizzle/db.js +35 -0
  65. package/dist/index.d.ts +9 -17
  66. package/dist/index.js +14 -22
  67. package/dist/provision/ProvisionPodCreator.d.ts +1 -1
  68. package/dist/provision/ProvisionPodCreator.js +4 -3
  69. package/dist/runtime/css-process.js +0 -1
  70. package/dist/search/RdfSearchIntentSink.d.ts +17 -0
  71. package/dist/search/RdfSearchIntentSink.js +46 -0
  72. package/dist/search/RdfSearchIntentSink.jsonld +47 -0
  73. package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
  74. package/dist/search/RdfSearchReconciliationRepository.js +771 -0
  75. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
  76. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
  77. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
  78. package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
  79. package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
  80. package/dist/solidfs/SolidFsSyncJournal.js +20 -5
  81. package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
  82. package/dist/solidfs/index.d.ts +1 -0
  83. package/dist/solidfs/index.js +1 -0
  84. package/dist/storage/SparqlUpdateResourceStore.js +3 -3
  85. package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
  86. package/dist/storage/accessors/MixDataAccessor.js +182 -399
  87. package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
  88. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
  89. package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
  90. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
  91. package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
  92. package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
  93. package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
  94. package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
  95. package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
  96. package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
  97. package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
  98. package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
  99. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
  100. package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
  101. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
  102. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
  103. package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
  104. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
  105. package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
  106. package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
  107. package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
  108. package/dist/storage/rdf/Rdf3xIndex.js +20 -16
  109. package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
  110. package/dist/storage/rdf/RdfAccessScope.js +74 -9
  111. package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
  112. package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
  113. package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
  114. package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
  115. package/dist/storage/rdf/RdfQuadIndex.js +286 -99
  116. package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
  117. package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
  118. package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
  119. package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
  120. package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
  121. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
  122. package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
  123. package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
  124. package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
  125. package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
  126. package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
  127. package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
  128. package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
  129. package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
  130. package/dist/storage/rdf/RdfTermDictionary.js +0 -136
  131. package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
  132. package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
  133. package/dist/storage/rdf/RdfTermSemantics.js +29 -0
  134. package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
  135. package/dist/storage/rdf/RdfTextIndex.js +187 -115
  136. package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
  137. package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
  138. package/dist/storage/rdf/RdfVectorIndex.js +156 -233
  139. package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
  140. package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
  141. package/dist/storage/rdf/SolidRdfEngine.js +28 -308
  142. package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
  143. package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
  144. package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
  145. package/dist/storage/rdf/index.d.ts +7 -6
  146. package/dist/storage/rdf/index.js +17 -12
  147. package/dist/storage/rdf/models-benchmark.d.ts +5 -1
  148. package/dist/storage/rdf/models-benchmark.js +17 -19
  149. package/dist/storage/rdf/types.d.ts +68 -6
  150. package/dist/storage/rdf/types.jsonld +69 -0
  151. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
  152. package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
  153. package/dist/storage/vector/index.d.ts +0 -1
  154. package/dist/storage/vector/index.js +0 -1
  155. package/dist/terminal/AclPermissionService.d.ts +4 -5
  156. package/dist/terminal/AclPermissionService.js +55 -75
  157. package/dist/terminal/TerminalSessionManager.d.ts +3 -2
  158. package/dist/terminal/TerminalSessionManager.js +3 -3
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
  214. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
  215. package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
  216. package/package.json +19 -8
  217. package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
  218. package/static/app/assets/inrupt-smoke.js +2 -2
  219. package/static/app/assets/main.css +1 -1
  220. package/static/app/assets/main.js +11 -11
  221. package/static/auth-callback/assets/{AiConfigContext-DNfRNaZQ.js → AiConfigContext-iQ74JmRZ.js} +1 -1
  222. package/static/auth-callback/assets/{AiConfigPage-BBiTOm3o.js → AiConfigPage-BBDKE1gJ.js} +1 -1
  223. package/static/auth-callback/assets/{DocumentProcessingPanel-BzpEwqKT.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
  224. package/static/auth-callback/assets/{IndexLifecyclePanel-CvXMwooQ.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
  225. package/static/auth-callback/assets/{IndexSubjectPanel-CayA221L.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
  226. package/static/auth-callback/assets/{ModelAssignmentsPanel-Iew2QgtR.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
  227. package/static/auth-callback/assets/{ModelsPage-CTJKAUA3.js → ModelsPage-C2hxyrmI.js} +1 -1
  228. package/static/auth-callback/assets/{NetworkPage--8ZCjIHB.js → NetworkPage-IGIc2q1Y.js} +1 -1
  229. package/static/auth-callback/assets/{PaneListHeader-BT-OGKL7.js → PaneListHeader-CebuPl_g.js} +1 -1
  230. package/static/auth-callback/assets/{SearchIndexingPanel-CFjjk1-C.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
  231. package/static/auth-callback/assets/{StatusSubjectPanel-DAN5Ej9q.js → StatusSubjectPanel-votxBkr5.js} +1 -1
  232. package/static/auth-callback/assets/{StatusWorkspace-CEgmKJcX.js → StatusWorkspace-Cksl61zX.js} +1 -1
  233. package/static/auth-callback/assets/{SystemSettingsPage-Bk0TB4RU.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
  234. package/static/auth-callback/assets/{SystemSettingsSubjectPanel-CKl8ukiz.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
  235. package/static/auth-callback/assets/{activity-BOtct9Ie.js → activity-DQL6kZHZ.js} +1 -1
  236. package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
  237. package/static/auth-callback/assets/{auth-callback-ai6OMe6C.js → auth-callback-BxQMd_Mc.js} +39 -39
  238. package/static/auth-callback/assets/{badge-DGSg5wio.js → badge-DvW4LUHH.js} +1 -1
  239. package/static/auth-callback/assets/{download-4eVPmxQ_.js → download-Cx_uaCR1.js} +1 -1
  240. package/static/auth-callback/assets/{external-link-BlD92fAM.js → external-link-D6L6ExH1.js} +1 -1
  241. package/static/auth-callback/assets/{index-FrugCRsJ.js → index-BAS_hxGu.js} +1 -1
  242. package/static/auth-callback/assets/{index-7ppych8q.js → index-BmBjpCoD.js} +1 -1
  243. package/static/auth-callback/assets/{index-browser-dwpJ2mdT.js → index-browser-pdn4D3M4.js} +1 -1
  244. package/static/auth-callback/assets/{key-round-BFOQbNNp.js → key-round-BTBzOggq.js} +1 -1
  245. package/static/auth-callback/assets/{rotate-ccw-BySVgaAP.js → rotate-ccw-eV7Cx8sB.js} +1 -1
  246. package/static/auth-callback/assets/{skeleton-CgcxPTqc.js → skeleton-Bg4GYgBM.js} +1 -1
  247. package/static/auth-callback/assets/{waypoints-DM902DhB.js → waypoints-CJbydf0B.js} +1 -1
  248. package/static/auth-callback/assets/{workspace-layout-DlZlN49Q.js → workspace-layout-C6Hh8Xf-.js} +1 -1
  249. package/static/auth-callback/auth-callback.html +2 -2
  250. package/static/dashboard/assets/{AiConfigContext-VnWI7bOR.js → AiConfigContext-BkJj28vK.js} +1 -1
  251. package/static/dashboard/assets/{AiConfigPage-Dn3oxXcA.js → AiConfigPage-Cs9B4uyp.js} +1 -1
  252. package/static/dashboard/assets/{DocumentProcessingPanel-CAF1uLi3.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
  253. package/static/dashboard/assets/{IndexLifecyclePanel-D9zVZwu8.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
  254. package/static/dashboard/assets/{IndexSubjectPanel-_JCGwJmO.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
  255. package/static/dashboard/assets/{ModelAssignmentsPanel-DtlxQxFa.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
  256. package/static/dashboard/assets/{ModelsPage-CCNTpXM5.js → ModelsPage-CBrLjuUn.js} +1 -1
  257. package/static/dashboard/assets/{NetworkPage-BAKv9unq.js → NetworkPage-BlYk8L1z.js} +1 -1
  258. package/static/dashboard/assets/{PaneListHeader-Dr1jq2Ii.js → PaneListHeader-A5oZJQC0.js} +1 -1
  259. package/static/dashboard/assets/{SearchIndexingPanel-BW0pPrQB.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
  260. package/static/dashboard/assets/{StatusSubjectPanel-c9iebk4M.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
  261. package/static/dashboard/assets/{StatusWorkspace-KZ7zrrmB.js → StatusWorkspace-rDM0yDtk.js} +1 -1
  262. package/static/dashboard/assets/{SystemSettingsPage-fVSfJMi9.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
  263. package/static/dashboard/assets/{SystemSettingsSubjectPanel-DUSxcVT8.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
  264. package/static/dashboard/assets/{activity-Dg4XxJA8.js → activity-CJ5K6hYC.js} +1 -1
  265. package/static/dashboard/assets/{badge-OHMG7sYk.js → badge-L-NMOi1P.js} +1 -1
  266. package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
  267. package/static/dashboard/assets/{dashboard-UuQZ5g0B.js → dashboard-DyjAyYxx.js} +34 -34
  268. package/static/dashboard/assets/{download-CkbQhuL2.js → download-Bi4u5K5B.js} +1 -1
  269. package/static/dashboard/assets/{external-link-C15frgwD.js → external-link-jmhLDfvT.js} +1 -1
  270. package/static/dashboard/assets/{index-BiU8tNWd.js → index-BoaGJBxf.js} +1 -1
  271. package/static/dashboard/assets/{index-JUkJUI4K.js → index-C22TAEi4.js} +1 -1
  272. package/static/dashboard/assets/{key-round-BVREfX5D.js → key-round-Dk1VmMrn.js} +1 -1
  273. package/static/dashboard/assets/{rotate-ccw-cPEquKE_.js → rotate-ccw-DIfLsSwi.js} +1 -1
  274. package/static/dashboard/assets/{skeleton-BPM2LdA5.js → skeleton-BGPJMHb-.js} +1 -1
  275. package/static/dashboard/assets/{waypoints-Cd3kODMk.js → waypoints-CY53egpu.js} +1 -1
  276. package/static/dashboard/assets/{workspace-layout-BP3gLLXb.js → workspace-layout-CoHkcx70.js} +1 -1
  277. package/static/dashboard/dashboard.html +2 -2
  278. package/static/settings/assets/{AiConfigContext-B-D3riwG.js → AiConfigContext-BcEPlEJe.js} +1 -1
  279. package/static/settings/assets/{AiConfigPage-CAYT-CgT.js → AiConfigPage-D-t3ZUhg.js} +1 -1
  280. package/static/settings/assets/{DocumentProcessingPanel-D__vS86O.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
  281. package/static/settings/assets/{IndexLifecyclePanel-CuYEAG62.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
  282. package/static/settings/assets/{IndexSubjectPanel-Do71gQQC.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
  283. package/static/settings/assets/{ModelAssignmentsPanel-Cn3kSze7.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
  284. package/static/settings/assets/{ModelsPage-BKO0ARYt.js → ModelsPage-DZrACwVN.js} +1 -1
  285. package/static/settings/assets/{NetworkPage-XPYrdyVd.js → NetworkPage-BlrGGfqL.js} +1 -1
  286. package/static/settings/assets/{PaneListHeader-BAiQcCss.js → PaneListHeader-C3TCs1RI.js} +1 -1
  287. package/static/settings/assets/{SearchIndexingPanel-Bx3Fco0x.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
  288. package/static/settings/assets/{StatusSubjectPanel-BzKzXmSL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
  289. package/static/settings/assets/{StatusWorkspace-NjLpo9xp.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
  290. package/static/settings/assets/{SystemSettingsPage-CclI_Lpv.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
  291. package/static/settings/assets/{SystemSettingsSubjectPanel-CMnSE-8N.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
  292. package/static/settings/assets/{activity-DYpNPFzG.js → activity-D7iNhTkQ.js} +1 -1
  293. package/static/settings/assets/{badge-C7Vhmg28.js → badge-DO0r_RT4.js} +1 -1
  294. package/static/settings/assets/{download-DdXcAiwj.js → download-CsJlNSbd.js} +1 -1
  295. package/static/settings/assets/{external-link-D7thdQae.js → external-link-BCR7SHme.js} +1 -1
  296. package/static/settings/assets/{index-CwBKvDQZ.js → index-Cgq16ekN.js} +1 -1
  297. package/static/settings/assets/{index-BnYbrf5s.js → index-SrhQvcrU.js} +1 -1
  298. package/static/settings/assets/{index-browser-DYzi1DO1.js → index-browser-THpcMCnz.js} +1 -1
  299. package/static/settings/assets/{key-round-BXErodZA.js → key-round-Dd3jk1BT.js} +1 -1
  300. package/static/settings/assets/{rotate-ccw-DPyOBmDD.js → rotate-ccw-tiL14i1d.js} +1 -1
  301. package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
  302. package/static/settings/assets/{settings-BGpEf8nx.js → settings-CVLDPejo.js} +34 -34
  303. package/static/settings/assets/{skeleton-S9l3JIr9.js → skeleton-DBxLuNgU.js} +1 -1
  304. package/static/settings/assets/{waypoints-C5By7zWc.js → waypoints-DS3e3hv7.js} +1 -1
  305. package/static/settings/assets/{workspace-layout-Bb6RVAEx.js → workspace-layout-mucrxyTK.js} +1 -1
  306. package/static/settings/settings.html +2 -2
  307. package/config/search.json +0 -66
  308. package/dist/document/HeadingChunker.jsonld +0 -41
  309. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
  310. package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
  311. package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
  312. package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
  313. package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
  314. package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
  315. package/dist/storage/RdfDerivedIndexingListener.js +0 -135
  316. package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
  317. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
  318. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
  319. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
  320. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
  321. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
  322. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
  323. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
  324. package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
  325. package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
  326. package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
  327. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
  328. package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
  329. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
  330. package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
  331. package/dist/storage/sparql/AlgebraUtils.js +0 -118
  332. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
  333. package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
  334. package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
  335. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
  336. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
  337. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
  338. package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
  339. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
  340. package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
  341. package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
  342. package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
  343. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
  344. package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
  345. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
  346. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
  347. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
  348. package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
  349. package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
  350. package/dist/storage/sparql/PatternBuilder.js +0 -118
  351. package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
  352. package/dist/storage/sparql/QueryOptimizer.js +0 -375
  353. package/dist/storage/sparql/QuintEngine.d.ts +0 -92
  354. package/dist/storage/sparql/QuintEngine.js +0 -150
  355. package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
  356. package/dist/storage/sparql/QuintQuerySource.js +0 -1069
  357. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
  358. package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
  359. package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
  360. package/dist/storage/vector/VectorIndexingListener.js +0 -346
  361. package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
  362. package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
  363. package/static/settings/assets/settings-rWdEQY5f.css +0 -1
@@ -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
- }