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