@undefineds.co/xpod 0.3.75 → 0.4.0-rc.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/xpod.js +43 -8
- package/config/bun.json +45 -48
- package/config/cloud.json +13 -90
- package/config/components-ignore.json +0 -1
- package/config/local.json +111 -63
- package/config/resolver.json +4 -2
- package/config/terminal.json +4 -1
- package/config/xpod.base.json +16 -8
- package/config/xpod.json +51 -54
- package/dist/acceptance/PublicCloudSemanticConformance.d.ts +4 -0
- package/dist/acceptance/PublicCloudSemanticConformance.js +214 -0
- package/dist/acceptance/QleverSearchConformance.d.ts +39 -0
- package/dist/acceptance/QleverSearchConformance.js +686 -0
- package/dist/acceptance/QleverSemanticConformance.d.ts +3 -0
- package/dist/acceptance/QleverSemanticConformance.js +178 -0
- package/dist/acceptance/RdfSemanticConformance.d.ts +114 -0
- package/dist/acceptance/RdfSemanticConformance.js +307 -0
- package/dist/acceptance/run-installed-qlever-conformance.d.ts +12 -0
- package/dist/acceptance/run-installed-qlever-conformance.js +87 -0
- package/dist/acceptance/run-installed-rdf-conformance.d.ts +12 -0
- package/dist/acceptance/run-installed-rdf-conformance.js +88 -0
- package/dist/ai/service/EmbeddingProviderError.d.ts +7 -0
- package/dist/ai/service/EmbeddingProviderError.js +42 -0
- package/dist/api/ai-gateway/connect/index.js +5 -2
- package/dist/api/auth/AuthContext.d.ts +5 -0
- package/dist/api/auth/AuthContext.js +10 -0
- package/dist/api/container/common.js +20 -1
- package/dist/api/container/rdf.d.ts +1 -0
- package/dist/api/container/rdf.js +43 -4
- package/dist/api/container/types.d.ts +4 -0
- package/dist/api/runs/InngestRunExecutionBackend.d.ts +2 -2
- package/dist/api/runs/PiAgentRuntimeDriver.d.ts +2 -0
- package/dist/api/runs/PiAgentRuntimeDriver.js +1 -0
- package/dist/api/runs/RdfRunContextRetriever.d.ts +8 -0
- package/dist/api/runs/RdfRunContextRetriever.js +23 -1
- package/dist/api/runtime.js +20 -6
- package/dist/api/service/RdfSearchIndexingService.d.ts +37 -3
- package/dist/api/service/RdfSearchIndexingService.js +130 -18
- package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +8 -0
- package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +102 -15
- package/dist/api/service/RdfSearchReconciliationWorker.d.ts +76 -0
- package/dist/api/service/RdfSearchReconciliationWorker.js +294 -0
- package/dist/api/tasks/InngestTaskScheduler.d.ts +4 -4
- package/dist/components/components.jsonld +9 -12
- package/dist/components/context.jsonld +227 -348
- package/dist/document/MarkdownRetrievalPointProjector.d.ts +33 -0
- package/dist/document/MarkdownRetrievalPointProjector.js +196 -0
- package/dist/document/MarkdownRetrievalPointProjector.jsonld +135 -0
- package/dist/document/ReaderMaterialization.d.ts +34 -0
- package/dist/document/ReaderMaterialization.js +3 -0
- package/dist/document/ReaderMaterialization.jsonld +151 -0
- package/dist/document/ReaderMaterializationRepository.d.ts +27 -0
- package/dist/document/ReaderMaterializationRepository.js +400 -0
- package/dist/document/ReaderMaterializationRepository.jsonld +84 -0
- package/dist/document/index.d.ts +3 -1
- package/dist/document/index.js +3 -1
- package/dist/http/SubgraphSparqlHttpHandler.js +34 -54
- package/dist/http/search/SearchHttpHandler.js +14 -12
- package/dist/http/terminal/TerminalHttpHandler.d.ts +3 -0
- package/dist/http/terminal/TerminalHttpHandler.js +1 -0
- package/dist/http/terminal/TerminalHttpHandler.jsonld +11 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.js +19 -39
- package/dist/identity/drizzle/db.d.ts +1 -0
- package/dist/identity/drizzle/db.js +35 -0
- package/dist/index.d.ts +9 -17
- package/dist/index.js +14 -22
- package/dist/provision/ProvisionPodCreator.d.ts +1 -1
- package/dist/provision/ProvisionPodCreator.js +4 -3
- package/dist/search/RdfSearchIntentSink.d.ts +17 -0
- package/dist/search/RdfSearchIntentSink.js +46 -0
- package/dist/search/RdfSearchIntentSink.jsonld +47 -0
- package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
- package/dist/search/RdfSearchReconciliationRepository.js +771 -0
- package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
- package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
- package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
- package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
- package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
- package/dist/solidfs/SolidFsSyncJournal.js +20 -5
- package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
- package/dist/solidfs/index.d.ts +1 -0
- package/dist/solidfs/index.js +1 -0
- package/dist/storage/SparqlUpdateResourceStore.js +3 -3
- package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
- package/dist/storage/accessors/MixDataAccessor.js +182 -399
- package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
- package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
- package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
- package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
- package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
- package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
- package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
- package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
- package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
- package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
- package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
- package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
- package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
- package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
- package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
- package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
- package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
- package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
- package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
- package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
- package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
- package/dist/storage/rdf/Rdf3xIndex.js +20 -16
- package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
- package/dist/storage/rdf/RdfAccessScope.js +74 -9
- package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
- package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
- package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
- package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
- package/dist/storage/rdf/RdfQuadIndex.js +286 -99
- package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
- package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
- package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
- package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
- package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
- package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
- package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
- package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
- package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
- package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
- package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
- package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
- package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
- package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
- package/dist/storage/rdf/RdfTermDictionary.js +0 -136
- package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
- package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
- package/dist/storage/rdf/RdfTermSemantics.js +29 -0
- package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
- package/dist/storage/rdf/RdfTextIndex.js +187 -115
- package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
- package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
- package/dist/storage/rdf/RdfVectorIndex.js +156 -233
- package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
- package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
- package/dist/storage/rdf/SolidRdfEngine.js +28 -308
- package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
- package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
- package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
- package/dist/storage/rdf/index.d.ts +7 -6
- package/dist/storage/rdf/index.js +17 -12
- package/dist/storage/rdf/models-benchmark.d.ts +5 -1
- package/dist/storage/rdf/models-benchmark.js +17 -19
- package/dist/storage/rdf/types.d.ts +68 -6
- package/dist/storage/rdf/types.jsonld +69 -0
- package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
- package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
- package/dist/storage/vector/index.d.ts +0 -1
- package/dist/storage/vector/index.js +0 -1
- package/dist/terminal/AclPermissionService.d.ts +4 -5
- package/dist/terminal/AclPermissionService.js +55 -75
- package/dist/terminal/TerminalSessionManager.d.ts +3 -2
- package/dist/terminal/TerminalSessionManager.js +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
- package/package.json +22 -8
- package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
- package/static/app/assets/inrupt-smoke.js +2 -2
- package/static/app/assets/main.css +1 -1
- package/static/app/assets/main.js +11 -11
- package/static/auth-callback/assets/{AiConfigContext-BvBdu_A3.js → AiConfigContext-iQ74JmRZ.js} +1 -1
- package/static/auth-callback/assets/{AiConfigPage-BpDw4jco.js → AiConfigPage-BBDKE1gJ.js} +1 -1
- package/static/auth-callback/assets/{DocumentProcessingPanel-BmZ_jzRr.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
- package/static/auth-callback/assets/{IndexLifecyclePanel-BfQBjN4z.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
- package/static/auth-callback/assets/{IndexSubjectPanel-BlsnatPt.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
- package/static/auth-callback/assets/{ModelAssignmentsPanel-KA6Mdndz.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
- package/static/auth-callback/assets/{ModelsPage-C7jymyIY.js → ModelsPage-C2hxyrmI.js} +1 -1
- package/static/auth-callback/assets/{NetworkPage-k2ShktNm.js → NetworkPage-IGIc2q1Y.js} +1 -1
- package/static/auth-callback/assets/{PaneListHeader-mLMe_dvU.js → PaneListHeader-CebuPl_g.js} +1 -1
- package/static/auth-callback/assets/{SearchIndexingPanel-CqV9um_t.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
- package/static/auth-callback/assets/{StatusSubjectPanel-BgMBTbr2.js → StatusSubjectPanel-votxBkr5.js} +1 -1
- package/static/auth-callback/assets/{StatusWorkspace-zbSyhdG2.js → StatusWorkspace-Cksl61zX.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsPage-CtW79nW6.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsSubjectPanel-ZOPKYUtZ.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
- package/static/auth-callback/assets/{activity-BQ-CQE3O.js → activity-DQL6kZHZ.js} +1 -1
- package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
- package/static/auth-callback/assets/{auth-callback-Htr_CB_g.js → auth-callback-BxQMd_Mc.js} +39 -39
- package/static/auth-callback/assets/{badge-D5SGTJeO.js → badge-DvW4LUHH.js} +1 -1
- package/static/auth-callback/assets/{download-DK183Ldo.js → download-Cx_uaCR1.js} +1 -1
- package/static/auth-callback/assets/{external-link-LDHy_4bn.js → external-link-D6L6ExH1.js} +1 -1
- package/static/auth-callback/assets/{index-BWrvgHqK.js → index-BAS_hxGu.js} +1 -1
- package/static/auth-callback/assets/{index-2WmlePQ9.js → index-BmBjpCoD.js} +1 -1
- package/static/auth-callback/assets/{index-browser-DUd4E4-x.js → index-browser-pdn4D3M4.js} +1 -1
- package/static/auth-callback/assets/{key-round-ibX79Kr-.js → key-round-BTBzOggq.js} +1 -1
- package/static/auth-callback/assets/{rotate-ccw-B2_VMaiX.js → rotate-ccw-eV7Cx8sB.js} +1 -1
- package/static/auth-callback/assets/{skeleton-F4nrpycc.js → skeleton-Bg4GYgBM.js} +1 -1
- package/static/auth-callback/assets/{waypoints-DImIq93f.js → waypoints-CJbydf0B.js} +1 -1
- package/static/auth-callback/assets/{workspace-layout-IVCSYU21.js → workspace-layout-C6Hh8Xf-.js} +1 -1
- package/static/auth-callback/auth-callback.html +2 -2
- package/static/dashboard/assets/{AiConfigContext-cjjfYTo9.js → AiConfigContext-BkJj28vK.js} +1 -1
- package/static/dashboard/assets/{AiConfigPage-CO0DSD_j.js → AiConfigPage-Cs9B4uyp.js} +1 -1
- package/static/dashboard/assets/{DocumentProcessingPanel-DMGnH8Oj.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
- package/static/dashboard/assets/{IndexLifecyclePanel-DSkIOCL5.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
- package/static/dashboard/assets/{IndexSubjectPanel-qWN_DbAp.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
- package/static/dashboard/assets/{ModelAssignmentsPanel-DCf83uM3.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
- package/static/dashboard/assets/{ModelsPage-CMnvSrl5.js → ModelsPage-CBrLjuUn.js} +1 -1
- package/static/dashboard/assets/{NetworkPage-C8Gkwclb.js → NetworkPage-BlYk8L1z.js} +1 -1
- package/static/dashboard/assets/{PaneListHeader-BtU_8cDK.js → PaneListHeader-A5oZJQC0.js} +1 -1
- package/static/dashboard/assets/{SearchIndexingPanel-DEn12pNU.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
- package/static/dashboard/assets/{StatusSubjectPanel-B1_ILg2d.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
- package/static/dashboard/assets/{StatusWorkspace-BG6nMNCo.js → StatusWorkspace-rDM0yDtk.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsPage-BnWYIXaM.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsSubjectPanel-C_mYVPWb.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
- package/static/dashboard/assets/{activity-DYJ7PdRl.js → activity-CJ5K6hYC.js} +1 -1
- package/static/dashboard/assets/{badge-BIaZco1P.js → badge-L-NMOi1P.js} +1 -1
- package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
- package/static/dashboard/assets/{dashboard-Dl40_MEa.js → dashboard-DyjAyYxx.js} +34 -34
- package/static/dashboard/assets/{download-By16k9VK.js → download-Bi4u5K5B.js} +1 -1
- package/static/dashboard/assets/{external-link-B92xOG_d.js → external-link-jmhLDfvT.js} +1 -1
- package/static/dashboard/assets/{index-BajZpJ48.js → index-BoaGJBxf.js} +1 -1
- package/static/dashboard/assets/{index-wsVPom_x.js → index-C22TAEi4.js} +1 -1
- package/static/dashboard/assets/{key-round-Clo5FOwA.js → key-round-Dk1VmMrn.js} +1 -1
- package/static/dashboard/assets/{rotate-ccw-smWSfi1L.js → rotate-ccw-DIfLsSwi.js} +1 -1
- package/static/dashboard/assets/{skeleton-BrTaGeJw.js → skeleton-BGPJMHb-.js} +1 -1
- package/static/dashboard/assets/{waypoints-DGPQInE7.js → waypoints-CY53egpu.js} +1 -1
- package/static/dashboard/assets/{workspace-layout-CPU4XRmb.js → workspace-layout-CoHkcx70.js} +1 -1
- package/static/dashboard/dashboard.html +2 -2
- package/static/settings/assets/{AiConfigContext-CT29_OyW.js → AiConfigContext-BcEPlEJe.js} +1 -1
- package/static/settings/assets/{AiConfigPage-WIE95S28.js → AiConfigPage-D-t3ZUhg.js} +1 -1
- package/static/settings/assets/{DocumentProcessingPanel-KG8Sq999.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
- package/static/settings/assets/{IndexLifecyclePanel-iKvtHDXY.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
- package/static/settings/assets/{IndexSubjectPanel-BQdSCkk4.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
- package/static/settings/assets/{ModelAssignmentsPanel-P8QcVB0F.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
- package/static/settings/assets/{ModelsPage-UZkZGqor.js → ModelsPage-DZrACwVN.js} +1 -1
- package/static/settings/assets/{NetworkPage-Dcpcvg15.js → NetworkPage-BlrGGfqL.js} +1 -1
- package/static/settings/assets/{PaneListHeader--gHtZws5.js → PaneListHeader-C3TCs1RI.js} +1 -1
- package/static/settings/assets/{SearchIndexingPanel-DdgJSJYQ.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
- package/static/settings/assets/{StatusSubjectPanel-UOxp_XVL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
- package/static/settings/assets/{StatusWorkspace-CPNXuD12.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
- package/static/settings/assets/{SystemSettingsPage-B6ySeVPw.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
- package/static/settings/assets/{SystemSettingsSubjectPanel-I7zWmpiI.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
- package/static/settings/assets/{activity-CFhmzahP.js → activity-D7iNhTkQ.js} +1 -1
- package/static/settings/assets/{badge-BBdUc5B-.js → badge-DO0r_RT4.js} +1 -1
- package/static/settings/assets/{download-WJE9-yxQ.js → download-CsJlNSbd.js} +1 -1
- package/static/settings/assets/{external-link-RKoYyCp_.js → external-link-BCR7SHme.js} +1 -1
- package/static/settings/assets/{index-Bq2o0Bif.js → index-Cgq16ekN.js} +1 -1
- package/static/settings/assets/{index-DvxneI5O.js → index-SrhQvcrU.js} +1 -1
- package/static/settings/assets/{index-browser-Qmo6EsFT.js → index-browser-THpcMCnz.js} +1 -1
- package/static/settings/assets/{key-round-r-D9sQUK.js → key-round-Dd3jk1BT.js} +1 -1
- package/static/settings/assets/{rotate-ccw-D3IIhbPH.js → rotate-ccw-tiL14i1d.js} +1 -1
- package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
- package/static/settings/assets/{settings-D8oDBXWg.js → settings-CVLDPejo.js} +34 -34
- package/static/settings/assets/{skeleton-DrL4RQuw.js → skeleton-DBxLuNgU.js} +1 -1
- package/static/settings/assets/{waypoints-C5sRhpJw.js → waypoints-DS3e3hv7.js} +1 -1
- package/static/settings/assets/{workspace-layout-B4ALmWsM.js → workspace-layout-mucrxyTK.js} +1 -1
- package/static/settings/settings.html +2 -2
- package/config/search.json +0 -66
- package/dist/document/HeadingChunker.jsonld +0 -41
- package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
- package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
- package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
- package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
- package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
- package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
- package/dist/storage/RdfDerivedIndexingListener.js +0 -135
- package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
- package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
- package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
- package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
- package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
- package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
- package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
- package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
- package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
- package/dist/storage/sparql/AlgebraUtils.js +0 -118
- package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
- package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
- package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
- package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
- package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
- package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
- package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
- package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
- package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
- package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
- package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
- package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
- package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
- package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
- package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
- package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
- package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
- package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
- package/dist/storage/sparql/PatternBuilder.js +0 -118
- package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
- package/dist/storage/sparql/QueryOptimizer.js +0 -375
- package/dist/storage/sparql/QuintEngine.d.ts +0 -92
- package/dist/storage/sparql/QuintEngine.js +0 -150
- package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
- package/dist/storage/sparql/QuintQuerySource.js +0 -1069
- package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
- package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
- package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
- package/dist/storage/vector/VectorIndexingListener.js +0 -346
- package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
- package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
- package/static/settings/assets/settings-rWdEQY5f.css +0 -1
|
@@ -1,19 +1,66 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RdfQuadIndex = void 0;
|
|
4
|
-
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
4
|
+
exports.assertRdfFactsSchemaCompatible = assertRdfFactsSchemaCompatible;
|
|
6
5
|
const n3_1 = require("n3");
|
|
7
6
|
const SqliteRuntime_1 = require("../SqliteRuntime");
|
|
8
7
|
const types_1 = require("../quint/types");
|
|
9
8
|
const RdfTermDictionary_1 = require("./RdfTermDictionary");
|
|
10
|
-
const Rdf3xSchema_1 = require("./Rdf3xSchema");
|
|
11
9
|
const RdfJoinShape_1 = require("./RdfJoinShape");
|
|
10
|
+
const RdfSqliteConnection_1 = require("./RdfSqliteConnection");
|
|
12
11
|
const RdfTermSemantics_1 = require("./RdfTermSemantics");
|
|
13
12
|
const XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';
|
|
14
13
|
const XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal';
|
|
15
14
|
const XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';
|
|
16
15
|
const RDF_QUAD_INDEX_SCHEMA_VERSION = 1;
|
|
16
|
+
const RDF_QUAD_REQUIRED_COLUMNS = {
|
|
17
|
+
rdf_terms: [
|
|
18
|
+
'id',
|
|
19
|
+
'kind',
|
|
20
|
+
'value',
|
|
21
|
+
'value_head',
|
|
22
|
+
'datatype_id',
|
|
23
|
+
'lang',
|
|
24
|
+
'hash',
|
|
25
|
+
'normalized_text',
|
|
26
|
+
'numeric_value',
|
|
27
|
+
'created_at',
|
|
28
|
+
],
|
|
29
|
+
rdf_sources: [
|
|
30
|
+
'id',
|
|
31
|
+
'source',
|
|
32
|
+
'workspace',
|
|
33
|
+
'local_path',
|
|
34
|
+
'content_type',
|
|
35
|
+
'last_indexed_at',
|
|
36
|
+
'source_version',
|
|
37
|
+
],
|
|
38
|
+
rdf_quads: [
|
|
39
|
+
'graph_id',
|
|
40
|
+
'subject_id',
|
|
41
|
+
'predicate_id',
|
|
42
|
+
'object_id',
|
|
43
|
+
'source_file_id',
|
|
44
|
+
'source_line_no',
|
|
45
|
+
],
|
|
46
|
+
rdf_index_metadata: ['key', 'value'],
|
|
47
|
+
};
|
|
48
|
+
const RDF_QUAD_REQUIRED_INDEXES = {
|
|
49
|
+
rdf_terms_identity_hash: { table: 'rdf_terms', columns: ['hash'], unique: true },
|
|
50
|
+
rdf_terms_kind_value_head: { table: 'rdf_terms', columns: ['kind', 'value_head'], unique: false },
|
|
51
|
+
rdf_terms_kind_datatype: { table: 'rdf_terms', columns: ['kind', 'datatype_id'], unique: false },
|
|
52
|
+
rdf_terms_kind_lang: { table: 'rdf_terms', columns: ['kind', 'lang'], unique: false },
|
|
53
|
+
rdf_terms_kind_numeric_value: { table: 'rdf_terms', columns: ['kind', 'numeric_value'], unique: false },
|
|
54
|
+
rdf_quads_spog: { table: 'rdf_quads', columns: ['subject_id', 'predicate_id', 'object_id', 'graph_id'], unique: false },
|
|
55
|
+
rdf_quads_sopg: { table: 'rdf_quads', columns: ['subject_id', 'object_id', 'predicate_id', 'graph_id'], unique: false },
|
|
56
|
+
rdf_quads_psog: { table: 'rdf_quads', columns: ['predicate_id', 'subject_id', 'object_id', 'graph_id'], unique: false },
|
|
57
|
+
rdf_quads_posg: { table: 'rdf_quads', columns: ['predicate_id', 'object_id', 'subject_id', 'graph_id'], unique: false },
|
|
58
|
+
rdf_quads_ospg: { table: 'rdf_quads', columns: ['object_id', 'subject_id', 'predicate_id', 'graph_id'], unique: false },
|
|
59
|
+
rdf_quads_opsg: { table: 'rdf_quads', columns: ['object_id', 'predicate_id', 'subject_id', 'graph_id'], unique: false },
|
|
60
|
+
rdf_quads_gspo: { table: 'rdf_quads', columns: ['graph_id', 'subject_id', 'predicate_id', 'object_id'], unique: false },
|
|
61
|
+
rdf_quads_gpos: { table: 'rdf_quads', columns: ['graph_id', 'predicate_id', 'object_id', 'subject_id'], unique: false },
|
|
62
|
+
rdf_quads_source: { table: 'rdf_quads', columns: ['source_file_id'], unique: false },
|
|
63
|
+
};
|
|
17
64
|
const TERM_COLUMN = {
|
|
18
65
|
graph: 'graph_id',
|
|
19
66
|
subject: 'subject_id',
|
|
@@ -31,6 +78,108 @@ function emptyTermRewriteResult() {
|
|
|
31
78
|
affectedQuads: 0,
|
|
32
79
|
};
|
|
33
80
|
}
|
|
81
|
+
function assertRdfFactsSchemaCompatible(db) {
|
|
82
|
+
if (!sqliteTableExists(db, 'rdf_index_metadata')) {
|
|
83
|
+
throw new Error('Unsupported RDF facts schema: missing table rdf_index_metadata');
|
|
84
|
+
}
|
|
85
|
+
const schemaVersion = rdfFactsMetadataValue(db, 'schema_version');
|
|
86
|
+
if (schemaVersion === undefined) {
|
|
87
|
+
throw new Error('Unsupported RDF facts schema: missing schema_version metadata');
|
|
88
|
+
}
|
|
89
|
+
if (schemaVersion !== String(RDF_QUAD_INDEX_SCHEMA_VERSION)) {
|
|
90
|
+
throw new Error(`Unsupported RDF facts schema version: ${schemaVersion}`);
|
|
91
|
+
}
|
|
92
|
+
const dataVersion = rdfFactsMetadataValue(db, 'data_version');
|
|
93
|
+
if (dataVersion === undefined) {
|
|
94
|
+
throw new Error('Unsupported RDF facts schema: missing data_version metadata');
|
|
95
|
+
}
|
|
96
|
+
if (!/^(0|[1-9]\d*)$/.test(dataVersion)) {
|
|
97
|
+
throw new Error(`Unsupported RDF facts data version: ${dataVersion}`);
|
|
98
|
+
}
|
|
99
|
+
for (const [table, columns] of Object.entries(RDF_QUAD_REQUIRED_COLUMNS)) {
|
|
100
|
+
assertRdfFactsTableColumns(db, table, columns);
|
|
101
|
+
}
|
|
102
|
+
for (const [index, definition] of Object.entries(RDF_QUAD_REQUIRED_INDEXES)) {
|
|
103
|
+
assertRdfFactsIndex(db, index, definition);
|
|
104
|
+
}
|
|
105
|
+
const legacyRows = db.prepare(`
|
|
106
|
+
SELECT name
|
|
107
|
+
FROM sqlite_schema
|
|
108
|
+
WHERE name IN ('rdf_terms_hash', 'rdf_terms_kind_value', 'rdf_terms_normalized_text')
|
|
109
|
+
`).all();
|
|
110
|
+
if (legacyRows.length > 0) {
|
|
111
|
+
throw new Error(`Unsupported RDF facts schema: legacy indexes ${legacyRows.map((row) => row.name).join(', ')}`);
|
|
112
|
+
}
|
|
113
|
+
const uniqueTermIndexes = db
|
|
114
|
+
.prepare('PRAGMA index_list(rdf_terms)')
|
|
115
|
+
.all()
|
|
116
|
+
.filter((row) => row.unique === 1);
|
|
117
|
+
for (const index of uniqueTermIndexes) {
|
|
118
|
+
const columns = sqliteIndexColumns(db, index.name);
|
|
119
|
+
if (sameStringList(columns, ['kind', 'value', 'datatype_id', 'lang'])) {
|
|
120
|
+
throw new Error(`Unsupported RDF facts schema: raw-value unique index ${index.name}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function sqliteTableExists(db, table) {
|
|
125
|
+
return Boolean(db
|
|
126
|
+
.prepare("SELECT name FROM sqlite_schema WHERE type = 'table' AND name = ?")
|
|
127
|
+
.get(table));
|
|
128
|
+
}
|
|
129
|
+
function rdfFactsMetadataValue(db, key) {
|
|
130
|
+
return db
|
|
131
|
+
.prepare('SELECT value FROM rdf_index_metadata WHERE key = ?')
|
|
132
|
+
.get(key)?.value;
|
|
133
|
+
}
|
|
134
|
+
function assertRdfFactsTableColumns(db, table, requiredColumns) {
|
|
135
|
+
const rows = db.prepare(`PRAGMA table_info(${table})`).all();
|
|
136
|
+
if (rows.length === 0) {
|
|
137
|
+
throw new Error(`Unsupported RDF facts schema: missing table ${table}`);
|
|
138
|
+
}
|
|
139
|
+
const columns = rows.map((row) => row.name);
|
|
140
|
+
const missing = requiredColumns.filter((column) => !columns.includes(column));
|
|
141
|
+
if (missing.length > 0) {
|
|
142
|
+
throw new Error(`Unsupported RDF facts schema: ${table} missing columns ${missing.join(', ')}`);
|
|
143
|
+
}
|
|
144
|
+
const unexpected = columns.filter((column) => !requiredColumns.includes(column));
|
|
145
|
+
if (unexpected.length > 0) {
|
|
146
|
+
throw new Error(`Unsupported RDF facts schema: ${table} has unexpected columns ${unexpected.join(', ')}`);
|
|
147
|
+
}
|
|
148
|
+
if (!sameStringList(columns, requiredColumns)) {
|
|
149
|
+
throw new Error(`Unsupported RDF facts schema: ${table} column order is not canonical`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function assertRdfFactsIndex(db, index, definition) {
|
|
153
|
+
const row = db
|
|
154
|
+
.prepare("SELECT name, tbl_name FROM sqlite_schema WHERE type = 'index' AND name = ?")
|
|
155
|
+
.get(index);
|
|
156
|
+
if (!row) {
|
|
157
|
+
throw new Error(`Unsupported RDF facts schema: missing index ${index}`);
|
|
158
|
+
}
|
|
159
|
+
if (row.tbl_name !== definition.table) {
|
|
160
|
+
throw new Error(`Unsupported RDF facts schema: index ${index} belongs to ${row.tbl_name}`);
|
|
161
|
+
}
|
|
162
|
+
const indexListRow = db
|
|
163
|
+
.prepare(`PRAGMA index_list(${definition.table})`)
|
|
164
|
+
.all()
|
|
165
|
+
.find((candidate) => candidate.name === index);
|
|
166
|
+
if (!indexListRow || (indexListRow.unique === 1) !== definition.unique) {
|
|
167
|
+
throw new Error(`Unsupported RDF facts schema: index ${index} uniqueness is not canonical`);
|
|
168
|
+
}
|
|
169
|
+
const columns = sqliteIndexColumns(db, index);
|
|
170
|
+
if (!sameStringList(columns, definition.columns)) {
|
|
171
|
+
throw new Error(`Unsupported RDF facts schema: index ${index} columns are not canonical`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
function sqliteIndexColumns(db, index) {
|
|
175
|
+
return db
|
|
176
|
+
.prepare('SELECT name FROM pragma_index_info(?) ORDER BY seqno')
|
|
177
|
+
.all(index)
|
|
178
|
+
.map((row) => row.name);
|
|
179
|
+
}
|
|
180
|
+
function sameStringList(actual, expected) {
|
|
181
|
+
return actual.length === expected.length && actual.every((value, index) => value === expected[index]);
|
|
182
|
+
}
|
|
34
183
|
class RdfQuadIndex {
|
|
35
184
|
constructor(options) {
|
|
36
185
|
this.options = options;
|
|
@@ -43,17 +192,16 @@ class RdfQuadIndex {
|
|
|
43
192
|
if (this.db) {
|
|
44
193
|
return;
|
|
45
194
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
195
|
+
this.db = (0, RdfSqliteConnection_1.openRdfSqliteDatabase)(this.sqliteRuntime, this.options.path);
|
|
196
|
+
try {
|
|
197
|
+
this.prepareFactsSchema();
|
|
198
|
+
this.dictionary = new RdfTermDictionary_1.RdfTermDictionary(this.db);
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
this.db.close();
|
|
202
|
+
this.db = null;
|
|
203
|
+
throw error;
|
|
51
204
|
}
|
|
52
|
-
this.db = this.sqliteRuntime.openDatabase(this.options.path);
|
|
53
|
-
this.prepareSchemaVersion();
|
|
54
|
-
this.dictionary = new RdfTermDictionary_1.RdfTermDictionary(this.db);
|
|
55
|
-
this.dictionary.initialize();
|
|
56
|
-
this.initializeSchema();
|
|
57
205
|
}
|
|
58
206
|
close() {
|
|
59
207
|
this.db?.close();
|
|
@@ -241,12 +389,6 @@ class RdfQuadIndex {
|
|
|
241
389
|
.get();
|
|
242
390
|
return Number(row?.value ?? 0) || 0;
|
|
243
391
|
}
|
|
244
|
-
migrationState(name) {
|
|
245
|
-
return this.requireDb().prepare('SELECT value FROM rdf_index_metadata WHERE key = ?').get(`migration:${name}`)?.value;
|
|
246
|
-
}
|
|
247
|
-
setMigrationState(name, state) {
|
|
248
|
-
this.setMetadataValue(`migration:${name}`, state);
|
|
249
|
-
}
|
|
250
392
|
scan(pattern, options) {
|
|
251
393
|
if (isRdfPatternQueryInput(pattern)) {
|
|
252
394
|
return this.scanInternal(pattern.pattern, options ?? pattern.options);
|
|
@@ -518,6 +660,7 @@ class RdfQuadIndex {
|
|
|
518
660
|
equalityColumns.add(TERM_COLUMN[key]);
|
|
519
661
|
}
|
|
520
662
|
}
|
|
663
|
+
this.addSourceScopeConditions(entry.pattern.sourceScope, alias, alias, joins, conditions, params, queryPlan);
|
|
521
664
|
indexChoices.push(this.chooseIndex(equalityColumns));
|
|
522
665
|
}
|
|
523
666
|
const projectVariables = options?.project ?? [...variableColumns.keys()];
|
|
@@ -1055,9 +1198,37 @@ class RdfQuadIndex {
|
|
|
1055
1198
|
return 4096;
|
|
1056
1199
|
}
|
|
1057
1200
|
}
|
|
1058
|
-
|
|
1059
|
-
this.
|
|
1060
|
-
|
|
1201
|
+
prepareFactsSchema() {
|
|
1202
|
+
if (this.hasExistingFactsSchema()) {
|
|
1203
|
+
assertRdfFactsSchemaCompatible(this.requireDb());
|
|
1204
|
+
return;
|
|
1205
|
+
}
|
|
1206
|
+
this.createFreshFactsSchema();
|
|
1207
|
+
}
|
|
1208
|
+
createFreshFactsSchema() {
|
|
1209
|
+
const db = this.requireDb();
|
|
1210
|
+
db.transaction(() => {
|
|
1211
|
+
db.exec(`
|
|
1212
|
+
CREATE TABLE rdf_terms (
|
|
1213
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
1214
|
+
kind TEXT NOT NULL,
|
|
1215
|
+
value TEXT NOT NULL,
|
|
1216
|
+
value_head TEXT NOT NULL,
|
|
1217
|
+
datatype_id INTEGER,
|
|
1218
|
+
lang TEXT,
|
|
1219
|
+
hash TEXT NOT NULL,
|
|
1220
|
+
normalized_text TEXT,
|
|
1221
|
+
numeric_value REAL,
|
|
1222
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
1223
|
+
);
|
|
1224
|
+
|
|
1225
|
+
CREATE UNIQUE INDEX rdf_terms_identity_hash ON rdf_terms (hash);
|
|
1226
|
+
CREATE INDEX rdf_terms_kind_value_head ON rdf_terms (kind, value_head);
|
|
1227
|
+
CREATE INDEX rdf_terms_kind_datatype ON rdf_terms (kind, datatype_id);
|
|
1228
|
+
CREATE INDEX rdf_terms_kind_lang ON rdf_terms (kind, lang);
|
|
1229
|
+
CREATE INDEX rdf_terms_kind_numeric_value ON rdf_terms (kind, numeric_value);
|
|
1230
|
+
|
|
1231
|
+
CREATE TABLE rdf_sources (
|
|
1061
1232
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
1062
1233
|
source TEXT NOT NULL UNIQUE,
|
|
1063
1234
|
workspace TEXT NOT NULL,
|
|
@@ -1067,7 +1238,7 @@ class RdfQuadIndex {
|
|
|
1067
1238
|
source_version TEXT
|
|
1068
1239
|
);
|
|
1069
1240
|
|
|
1070
|
-
CREATE TABLE
|
|
1241
|
+
CREATE TABLE rdf_quads (
|
|
1071
1242
|
graph_id INTEGER NOT NULL,
|
|
1072
1243
|
subject_id INTEGER NOT NULL,
|
|
1073
1244
|
predicate_id INTEGER NOT NULL,
|
|
@@ -1082,94 +1253,49 @@ class RdfQuadIndex {
|
|
|
1082
1253
|
FOREIGN KEY (source_file_id) REFERENCES rdf_sources(id)
|
|
1083
1254
|
);
|
|
1084
1255
|
|
|
1085
|
-
CREATE INDEX
|
|
1086
|
-
CREATE INDEX
|
|
1087
|
-
CREATE INDEX
|
|
1088
|
-
CREATE INDEX
|
|
1089
|
-
CREATE INDEX
|
|
1090
|
-
CREATE INDEX
|
|
1091
|
-
CREATE INDEX
|
|
1092
|
-
CREATE INDEX
|
|
1093
|
-
CREATE INDEX
|
|
1256
|
+
CREATE INDEX rdf_quads_spog ON rdf_quads(subject_id, predicate_id, object_id, graph_id);
|
|
1257
|
+
CREATE INDEX rdf_quads_sopg ON rdf_quads(subject_id, object_id, predicate_id, graph_id);
|
|
1258
|
+
CREATE INDEX rdf_quads_psog ON rdf_quads(predicate_id, subject_id, object_id, graph_id);
|
|
1259
|
+
CREATE INDEX rdf_quads_posg ON rdf_quads(predicate_id, object_id, subject_id, graph_id);
|
|
1260
|
+
CREATE INDEX rdf_quads_ospg ON rdf_quads(object_id, subject_id, predicate_id, graph_id);
|
|
1261
|
+
CREATE INDEX rdf_quads_opsg ON rdf_quads(object_id, predicate_id, subject_id, graph_id);
|
|
1262
|
+
CREATE INDEX rdf_quads_gspo ON rdf_quads(graph_id, subject_id, predicate_id, object_id);
|
|
1263
|
+
CREATE INDEX rdf_quads_gpos ON rdf_quads(graph_id, predicate_id, object_id, subject_id);
|
|
1264
|
+
CREATE INDEX rdf_quads_source ON rdf_quads(source_file_id);
|
|
1094
1265
|
|
|
1095
|
-
CREATE TABLE
|
|
1266
|
+
CREATE TABLE rdf_index_metadata (
|
|
1096
1267
|
key TEXT PRIMARY KEY,
|
|
1097
1268
|
value TEXT NOT NULL
|
|
1098
1269
|
);
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
INSERT
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
`).run();
|
|
1105
|
-
}
|
|
1106
|
-
prepareSchemaVersion() {
|
|
1107
|
-
this.ensureMetadataTable();
|
|
1108
|
-
const db = this.requireDb();
|
|
1109
|
-
const row = db
|
|
1110
|
-
.prepare("SELECT value FROM rdf_index_metadata WHERE key = 'schema_version'")
|
|
1111
|
-
.get();
|
|
1112
|
-
if (row && row.value !== String(RDF_QUAD_INDEX_SCHEMA_VERSION)) {
|
|
1113
|
-
this.dropIndexSchema();
|
|
1114
|
-
this.ensureMetadataTable();
|
|
1115
|
-
}
|
|
1116
|
-
this.setMetadataValue('schema_version', String(RDF_QUAD_INDEX_SCHEMA_VERSION));
|
|
1117
|
-
}
|
|
1118
|
-
ensureMetadataTable() {
|
|
1119
|
-
this.requireDb().exec(`
|
|
1120
|
-
CREATE TABLE IF NOT EXISTS rdf_index_metadata (
|
|
1121
|
-
key TEXT PRIMARY KEY,
|
|
1122
|
-
value TEXT NOT NULL
|
|
1123
|
-
);
|
|
1124
|
-
`);
|
|
1270
|
+
|
|
1271
|
+
INSERT INTO rdf_index_metadata (key, value) VALUES ('data_version', '0');
|
|
1272
|
+
INSERT INTO rdf_index_metadata (key, value) VALUES ('schema_version', '${RDF_QUAD_INDEX_SCHEMA_VERSION}');
|
|
1273
|
+
`);
|
|
1274
|
+
})();
|
|
1125
1275
|
}
|
|
1126
|
-
|
|
1276
|
+
hasExistingFactsSchema() {
|
|
1127
1277
|
const db = this.requireDb();
|
|
1128
|
-
const
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
DROP INDEX IF EXISTS rdf_quads_posg;
|
|
1136
|
-
DROP INDEX IF EXISTS rdf_quads_ospg;
|
|
1137
|
-
DROP INDEX IF EXISTS rdf_quads_opsg;
|
|
1138
|
-
DROP INDEX IF EXISTS rdf_quads_gspo;
|
|
1139
|
-
DROP INDEX IF EXISTS rdf_quads_gpos;
|
|
1140
|
-
DROP INDEX IF EXISTS rdf_quads_source;
|
|
1141
|
-
DROP TABLE IF EXISTS rdf_quads;
|
|
1142
|
-
DROP TABLE IF EXISTS rdf_sources;
|
|
1143
|
-
DROP TABLE IF EXISTS rdf_terms;
|
|
1144
|
-
DROP TABLE IF EXISTS rdf_index_metadata;
|
|
1145
|
-
`);
|
|
1146
|
-
(0, Rdf3xSchema_1.dropRdf3xDerivedSchemaObjects)(db);
|
|
1147
|
-
}
|
|
1148
|
-
finally {
|
|
1149
|
-
if (foreignKeys) {
|
|
1150
|
-
db.exec('PRAGMA foreign_keys = ON;');
|
|
1151
|
-
}
|
|
1152
|
-
}
|
|
1153
|
-
this.cardinalityCache.clear();
|
|
1278
|
+
const row = db.prepare(`
|
|
1279
|
+
SELECT COUNT(*) AS count
|
|
1280
|
+
FROM sqlite_schema
|
|
1281
|
+
WHERE name IN ('rdf_terms', 'rdf_sources', 'rdf_quads', 'rdf_index_metadata')
|
|
1282
|
+
OR tbl_name IN ('rdf_terms', 'rdf_sources', 'rdf_quads', 'rdf_index_metadata')
|
|
1283
|
+
`).get();
|
|
1284
|
+
return (row?.count ?? 0) > 0;
|
|
1154
1285
|
}
|
|
1155
1286
|
bumpDataVersion() {
|
|
1156
|
-
this.requireDb().prepare(`
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
DO UPDATE SET value = CAST(value AS INTEGER) + 1
|
|
1287
|
+
const result = this.requireDb().prepare(`
|
|
1288
|
+
UPDATE rdf_index_metadata
|
|
1289
|
+
SET value = CAST(value AS INTEGER) + 1
|
|
1290
|
+
WHERE key = 'data_version'
|
|
1161
1291
|
`).run();
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
INSERT INTO rdf_index_metadata (key, value)
|
|
1166
|
-
VALUES (?, ?)
|
|
1167
|
-
ON CONFLICT (key)
|
|
1168
|
-
DO UPDATE SET value = excluded.value
|
|
1169
|
-
`).run(key, value);
|
|
1292
|
+
if (result.changes !== 1) {
|
|
1293
|
+
throw new Error('Unsupported RDF facts schema: missing data_version metadata');
|
|
1294
|
+
}
|
|
1170
1295
|
}
|
|
1171
1296
|
upsertSource(source) {
|
|
1172
1297
|
const db = this.requireDb();
|
|
1298
|
+
this.requireDictionary().getOrCreate(n3_1.DataFactory.namedNode(source.source));
|
|
1173
1299
|
db.prepare(`
|
|
1174
1300
|
INSERT INTO rdf_sources (
|
|
1175
1301
|
source,
|
|
@@ -1195,6 +1321,7 @@ class RdfQuadIndex {
|
|
|
1195
1321
|
return row.id;
|
|
1196
1322
|
}
|
|
1197
1323
|
updateSourceRow(id, source) {
|
|
1324
|
+
this.requireDictionary().getOrCreate(n3_1.DataFactory.namedNode(source.source));
|
|
1198
1325
|
this.requireDb().prepare(`
|
|
1199
1326
|
UPDATE rdf_sources
|
|
1200
1327
|
SET source = ?,
|
|
@@ -1232,6 +1359,7 @@ class RdfQuadIndex {
|
|
|
1232
1359
|
equalityColumns.add(column);
|
|
1233
1360
|
}
|
|
1234
1361
|
}
|
|
1362
|
+
this.addSourceScopeConditions(pattern.sourceScope, 'rdf_quads', 'source_scope', joins, conditions, params, queryPlan);
|
|
1235
1363
|
return {
|
|
1236
1364
|
joins: joins.join(''),
|
|
1237
1365
|
whereClause: conditions.length > 0 ? ` WHERE ${conditions.join(' AND ')}` : '',
|
|
@@ -1240,6 +1368,59 @@ class RdfQuadIndex {
|
|
|
1240
1368
|
queryPlan,
|
|
1241
1369
|
};
|
|
1242
1370
|
}
|
|
1371
|
+
addSourceScopeConditions(scope, quadAlias, aliasPrefix, joins, conditions, params, queryPlan) {
|
|
1372
|
+
if (!scope) {
|
|
1373
|
+
return;
|
|
1374
|
+
}
|
|
1375
|
+
const allowedSources = uniqueStrings(scope.allowedSources ?? []);
|
|
1376
|
+
const deniedSources = uniqueStrings(scope.deniedSources ?? []);
|
|
1377
|
+
const deniedPrefixes = uniqueStrings(scope.deniedSourcePrefixes ?? []);
|
|
1378
|
+
const sourcePrefix = scope.sourcePrefix;
|
|
1379
|
+
const localPathPrefix = scope.localPathPrefix;
|
|
1380
|
+
if (allowedSources.length === 0
|
|
1381
|
+
&& !scope.allowedSources
|
|
1382
|
+
&& deniedSources.length === 0
|
|
1383
|
+
&& deniedPrefixes.length === 0
|
|
1384
|
+
&& !sourcePrefix
|
|
1385
|
+
&& !localPathPrefix) {
|
|
1386
|
+
return;
|
|
1387
|
+
}
|
|
1388
|
+
if (scope.allowedSources && allowedSources.length === 0) {
|
|
1389
|
+
conditions.push('1 = 0');
|
|
1390
|
+
queryPlan.push('SourceScope(allowed:none)');
|
|
1391
|
+
return;
|
|
1392
|
+
}
|
|
1393
|
+
const sourceAlias = this.scopedSqlName('rdf_sources', { aliasPrefix });
|
|
1394
|
+
const sourceIdColumn = `${quadAlias}.source_file_id`;
|
|
1395
|
+
joins.push(` LEFT JOIN rdf_sources ${sourceAlias} ON ${sourceAlias}.id = ${sourceIdColumn}`);
|
|
1396
|
+
if (allowedSources.length > 0) {
|
|
1397
|
+
conditions.push(`${sourceAlias}.source IN (${allowedSources.map(() => '?').join(', ')})`);
|
|
1398
|
+
params.push(...allowedSources);
|
|
1399
|
+
queryPlan.push(`SourceScope(allowed:${allowedSources.length})`);
|
|
1400
|
+
}
|
|
1401
|
+
if (sourcePrefix) {
|
|
1402
|
+
conditions.push(`${sourceAlias}.source LIKE ? ESCAPE '\\'`);
|
|
1403
|
+
params.push(`${escapeLikePattern(sourcePrefix)}%`);
|
|
1404
|
+
queryPlan.push('SourceScope(prefix)');
|
|
1405
|
+
}
|
|
1406
|
+
if (localPathPrefix) {
|
|
1407
|
+
conditions.push(`${sourceAlias}.local_path LIKE ? ESCAPE '\\'`);
|
|
1408
|
+
params.push(`${escapeLikePattern(localPathPrefix)}%`);
|
|
1409
|
+
queryPlan.push('SourceScope(local-path-prefix)');
|
|
1410
|
+
}
|
|
1411
|
+
if (deniedSources.length > 0) {
|
|
1412
|
+
conditions.push(`(${sourceIdColumn} IS NULL OR ${sourceAlias}.source NOT IN (${deniedSources.map(() => '?').join(', ')}))`);
|
|
1413
|
+
params.push(...deniedSources);
|
|
1414
|
+
queryPlan.push(`SourceScope(denied:${deniedSources.length})`);
|
|
1415
|
+
}
|
|
1416
|
+
for (const deniedPrefix of deniedPrefixes) {
|
|
1417
|
+
conditions.push(`(${sourceIdColumn} IS NULL OR ${sourceAlias}.source NOT LIKE ? ESCAPE '\\')`);
|
|
1418
|
+
params.push(`${escapeLikePattern(deniedPrefix)}%`);
|
|
1419
|
+
}
|
|
1420
|
+
if (deniedPrefixes.length > 0) {
|
|
1421
|
+
queryPlan.push(`SourceScope(denied-prefix:${deniedPrefixes.length})`);
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1243
1424
|
matchToCondition(key, column, match, allowUnresolved, scope) {
|
|
1244
1425
|
const columnRef = this.scopedQuadColumn(column, scope);
|
|
1245
1426
|
if ((0, types_1.isTerm)(match)) {
|
|
@@ -1794,6 +1975,9 @@ class RdfQuadIndex {
|
|
|
1794
1975
|
return 'full-scan';
|
|
1795
1976
|
}
|
|
1796
1977
|
exactTermPattern(pattern) {
|
|
1978
|
+
if (pattern.sourceScope) {
|
|
1979
|
+
return undefined;
|
|
1980
|
+
}
|
|
1797
1981
|
const ids = {};
|
|
1798
1982
|
const columns = new Set();
|
|
1799
1983
|
for (const key of TERM_KEYS) {
|
|
@@ -2042,6 +2226,9 @@ function escapeLikePattern(value) {
|
|
|
2042
2226
|
function uniqueNumbers(values) {
|
|
2043
2227
|
return [...new Set(values)];
|
|
2044
2228
|
}
|
|
2229
|
+
function uniqueStrings(values) {
|
|
2230
|
+
return [...new Set(values.filter((value) => value.length > 0))].sort();
|
|
2231
|
+
}
|
|
2045
2232
|
function uniquePatternKeys(values) {
|
|
2046
2233
|
return TERM_KEYS.filter((key) => values.includes(key));
|
|
2047
2234
|
}
|
|
@@ -111,14 +111,6 @@
|
|
|
111
111
|
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_dataVersion",
|
|
112
112
|
"memberFieldName": "dataVersion"
|
|
113
113
|
},
|
|
114
|
-
{
|
|
115
|
-
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_migrationState",
|
|
116
|
-
"memberFieldName": "migrationState"
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_setMigrationState",
|
|
120
|
-
"memberFieldName": "setMigrationState"
|
|
121
|
-
},
|
|
122
114
|
{
|
|
123
115
|
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_scan",
|
|
124
116
|
"memberFieldName": "scan"
|
|
@@ -268,29 +260,21 @@
|
|
|
268
260
|
"memberFieldName": "estimatePageSize"
|
|
269
261
|
},
|
|
270
262
|
{
|
|
271
|
-
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#
|
|
272
|
-
"memberFieldName": "
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_prepareSchemaVersion",
|
|
276
|
-
"memberFieldName": "prepareSchemaVersion"
|
|
263
|
+
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_prepareFactsSchema",
|
|
264
|
+
"memberFieldName": "prepareFactsSchema"
|
|
277
265
|
},
|
|
278
266
|
{
|
|
279
|
-
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#
|
|
280
|
-
"memberFieldName": "
|
|
267
|
+
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_createFreshFactsSchema",
|
|
268
|
+
"memberFieldName": "createFreshFactsSchema"
|
|
281
269
|
},
|
|
282
270
|
{
|
|
283
|
-
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#
|
|
284
|
-
"memberFieldName": "
|
|
271
|
+
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_hasExistingFactsSchema",
|
|
272
|
+
"memberFieldName": "hasExistingFactsSchema"
|
|
285
273
|
},
|
|
286
274
|
{
|
|
287
275
|
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_bumpDataVersion",
|
|
288
276
|
"memberFieldName": "bumpDataVersion"
|
|
289
277
|
},
|
|
290
|
-
{
|
|
291
|
-
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_setMetadataValue",
|
|
292
|
-
"memberFieldName": "setMetadataValue"
|
|
293
|
-
},
|
|
294
278
|
{
|
|
295
279
|
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_upsertSource",
|
|
296
280
|
"memberFieldName": "upsertSource"
|
|
@@ -303,6 +287,10 @@
|
|
|
303
287
|
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_buildWhereClause",
|
|
304
288
|
"memberFieldName": "buildWhereClause"
|
|
305
289
|
},
|
|
290
|
+
{
|
|
291
|
+
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_addSourceScopeConditions",
|
|
292
|
+
"memberFieldName": "addSourceScopeConditions"
|
|
293
|
+
},
|
|
306
294
|
{
|
|
307
295
|
"@id": "undefineds:dist/storage/rdf/RdfQuadIndex.jsonld#RdfQuadIndex__member_matchToCondition",
|
|
308
296
|
"memberFieldName": "matchToCondition"
|
|
@@ -1058,6 +1058,7 @@ class RdfQueryExecutor {
|
|
|
1058
1058
|
}
|
|
1059
1059
|
canUseRdf3xPrimaryScan(pattern, scanOptions) {
|
|
1060
1060
|
return Boolean(this.rdf3xPrimaryIndex)
|
|
1061
|
+
&& !pattern.sourceScope
|
|
1061
1062
|
&& isRdf3xCompatiblePattern(pattern);
|
|
1062
1063
|
}
|
|
1063
1064
|
requiredBgpPushdown(query, requiredPatterns, filters) {
|
|
@@ -1216,7 +1217,7 @@ class RdfQueryExecutor {
|
|
|
1216
1217
|
canUseRdf3xPrimaryJoin(patterns) {
|
|
1217
1218
|
return Boolean(this.rdf3xPrimaryIndex)
|
|
1218
1219
|
&& patterns.length > 0
|
|
1219
|
-
&& patterns.every((entry) => isRdf3xCompatiblePattern(entry.pattern));
|
|
1220
|
+
&& patterns.every((entry) => !entry.pattern.sourceScope && isRdf3xCompatiblePattern(entry.pattern));
|
|
1220
1221
|
}
|
|
1221
1222
|
tupleValuesForBinding(source, binding) {
|
|
1222
1223
|
if (!source.tupleValues) {
|
|
@@ -1932,6 +1933,7 @@ class RdfQueryExecutor {
|
|
|
1932
1933
|
return isConsistentPattern(compiled)
|
|
1933
1934
|
? {
|
|
1934
1935
|
...compiled,
|
|
1936
|
+
...(pattern.sourceScope ? { sourceScope: pattern.sourceScope } : {}),
|
|
1935
1937
|
pushedDownFilters: pushedDownFilterIndexes.size,
|
|
1936
1938
|
pushedDownFilterIndexes: [...pushedDownFilterIndexes],
|
|
1937
1939
|
}
|
|
@@ -2582,9 +2584,10 @@ function normalizeOptionalGroup(group) {
|
|
|
2582
2584
|
return Array.isArray(group) ? { patterns: group } : group;
|
|
2583
2585
|
}
|
|
2584
2586
|
function compiledPatternKey(pattern) {
|
|
2585
|
-
return
|
|
2586
|
-
.map((key) => `${key}:${termMatchKey(pattern[key])}`)
|
|
2587
|
-
.
|
|
2587
|
+
return [
|
|
2588
|
+
...TERM_KEYS.map((key) => `${key}:${termMatchKey(pattern[key])}`),
|
|
2589
|
+
`source:${JSON.stringify(pattern.sourceScope ?? {})}`,
|
|
2590
|
+
].join('|');
|
|
2588
2591
|
}
|
|
2589
2592
|
function termMatchKey(match) {
|
|
2590
2593
|
if (!match) {
|
|
@@ -3212,6 +3215,9 @@ function stripRdf3xNumericAggregateGuards(patterns, aggregates) {
|
|
|
3212
3215
|
});
|
|
3213
3216
|
}
|
|
3214
3217
|
function isRdf3xCompatiblePattern(pattern) {
|
|
3218
|
+
if (pattern.sourceScope) {
|
|
3219
|
+
return false;
|
|
3220
|
+
}
|
|
3215
3221
|
return TERM_KEYS.every((key) => {
|
|
3216
3222
|
const value = pattern[key];
|
|
3217
3223
|
if (!value || (0, types_1.isTerm)(value)) {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AsyncIterator } from 'asynciterator';
|
|
2
|
+
import type { BindingsStream } from '@comunica/types';
|
|
3
|
+
import type { Quad, Variable } from '@rdfjs/types';
|
|
4
|
+
import type { SparqlEngine, SparqlQueryOptions, SparqlVoidOptions } from '../sparql/SubgraphQueryEngine';
|
|
5
|
+
import { type RdfAccessScope } from './RdfAccessScope';
|
|
6
|
+
import type { RdfEngineLike } from './types';
|
|
7
|
+
type RdfBindingsStream = BindingsStream & {
|
|
8
|
+
metadata(): Promise<{
|
|
9
|
+
variables: Variable[];
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Public Cloud SPARQL authority.
|
|
14
|
+
*
|
|
15
|
+
* Comunica is the sole SPARQL algebra evaluator. Every RDF/JS source match is
|
|
16
|
+
* translated into an access-scoped query against the PostgreSQL RDF facts
|
|
17
|
+
* authority; there is no second evaluator or alternate per-query route.
|
|
18
|
+
*/
|
|
19
|
+
export declare class RdfQuerySparqlEngine implements SparqlEngine {
|
|
20
|
+
private readonly rdfEngine;
|
|
21
|
+
private readonly comunica;
|
|
22
|
+
constructor(rdfEngine: RdfEngineLike);
|
|
23
|
+
queryBindings(query: string, basePath: string, accessScope?: RdfAccessScope, options?: SparqlQueryOptions): Promise<RdfBindingsStream>;
|
|
24
|
+
queryBoolean(query: string, basePath: string, accessScope?: RdfAccessScope, options?: SparqlQueryOptions): Promise<boolean>;
|
|
25
|
+
queryQuads(query: string, basePath: string, accessScope?: RdfAccessScope, options?: SparqlQueryOptions): Promise<AsyncIterator<Quad>>;
|
|
26
|
+
queryVoid(_query: string, _basePath: string, _accessScope?: RdfAccessScope, _options?: SparqlVoidOptions): Promise<void>;
|
|
27
|
+
constructGraph(graph: string, basePath: string, accessScope?: RdfAccessScope): Promise<AsyncIterator<Quad>>;
|
|
28
|
+
listGraphs(basePath: string, accessScope?: RdfAccessScope): Promise<Set<string>>;
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
private context;
|
|
31
|
+
private assertCloudQuery;
|
|
32
|
+
}
|
|
33
|
+
export {};
|