@undefineds.co/xpod 0.3.25 → 0.3.26
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/config/cloud.json +6 -5
- package/config/main.json +0 -3
- package/config/xpod.base.json +0 -32
- package/dist/api/container/index.js +3 -0
- package/dist/api/container/index.js.map +1 -1
- package/dist/api/container/routes.js +2 -0
- package/dist/api/container/routes.js.map +1 -1
- package/dist/api/container/types.d.ts +5 -0
- package/dist/api/container/types.js.map +1 -1
- package/dist/authorization/AuthMode.d.ts +8 -0
- package/dist/authorization/AuthMode.js +51 -0
- package/dist/authorization/AuthMode.js.map +1 -0
- package/dist/authorization/PodAuthorizationResources.d.ts +18 -0
- package/dist/authorization/PodAuthorizationResources.js +108 -0
- package/dist/authorization/PodAuthorizationResources.js.map +1 -0
- package/dist/cli/commands/start.js +11 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/components/components.jsonld +3 -2
- package/dist/components/context.jsonld +115 -14
- package/dist/index.d.ts +5 -3
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/main.js +11 -2
- package/dist/main.js.map +1 -1
- package/dist/provision/LocalPodProvisioningService.d.ts +6 -2
- package/dist/provision/LocalPodProvisioningService.js +36 -33
- package/dist/provision/LocalPodProvisioningService.js.map +1 -1
- package/dist/provision/LocalPodProvisioningService.jsonld +65 -8
- package/dist/runtime/XpodRuntime.js +0 -1
- package/dist/runtime/XpodRuntime.js.map +1 -1
- package/dist/runtime/bootstrap.d.ts +4 -2
- package/dist/runtime/bootstrap.js +43 -11
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/css-process.d.ts +6 -1
- package/dist/runtime/css-process.js +18 -6
- package/dist/runtime/css-process.js.map +1 -1
- package/dist/runtime/lifecycle.d.ts +2 -3
- package/dist/runtime/lifecycle.js +2 -2
- package/dist/runtime/lifecycle.js.map +1 -1
- package/dist/runtime/runtime-types.d.ts +2 -1
- package/dist/runtime/runtime-types.js.map +1 -1
- package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +2 -3
- package/dist/storage/accessors/SolidRdfDataAccessor.js +48 -42
- package/dist/storage/accessors/SolidRdfDataAccessor.js.map +1 -1
- package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +1 -1
- package/dist/storage/keyvalue/BaseKeyValueStorage.d.ts +33 -0
- package/dist/storage/keyvalue/BaseKeyValueStorage.js +106 -0
- package/dist/storage/keyvalue/BaseKeyValueStorage.js.map +1 -0
- package/dist/storage/keyvalue/BaseKeyValueStorage.jsonld +177 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.d.ts +9 -18
- package/dist/storage/keyvalue/PostgresKeyValueStorage.js +24 -96
- package/dist/storage/keyvalue/PostgresKeyValueStorage.js.map +1 -1
- package/dist/storage/keyvalue/PostgresKeyValueStorage.jsonld +15 -58
- package/dist/storage/keyvalue/SqliteKeyValueStorage.d.ts +9 -15
- package/dist/storage/keyvalue/SqliteKeyValueStorage.js +36 -104
- package/dist/storage/keyvalue/SqliteKeyValueStorage.js.map +1 -1
- package/dist/storage/keyvalue/SqliteKeyValueStorage.jsonld +21 -52
- package/dist/storage/quint/BaseQuintStore.d.ts +4 -1
- package/dist/storage/quint/BaseQuintStore.js +59 -46
- package/dist/storage/quint/BaseQuintStore.js.map +1 -1
- package/dist/storage/quint/PgQuintStore.d.ts +4 -3
- package/dist/storage/quint/PgQuintStore.js.map +1 -1
- package/dist/storage/quint/SqliteQuintStore.d.ts +43 -54
- package/dist/storage/quint/SqliteQuintStore.js +197 -520
- package/dist/storage/quint/SqliteQuintStore.js.map +1 -1
- package/dist/storage/quint/SqliteQuintStore.jsonld +38 -86
- package/dist/storage/rdf/PostgresRdfEngine.d.ts +118 -0
- package/dist/storage/rdf/PostgresRdfEngine.js +2609 -0
- package/dist/storage/rdf/PostgresRdfEngine.js.map +1 -0
- package/dist/storage/rdf/PostgresRdfEngine.jsonld +657 -0
- package/dist/storage/rdf/SolidRdfEngine.d.ts +2 -2
- package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
- package/dist/storage/rdf/SolidRdfEngine.jsonld +3 -0
- package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +3 -3
- package/dist/storage/rdf/SolidRdfSparqlEngine.js +20 -20
- package/dist/storage/rdf/SolidRdfSparqlEngine.js.map +1 -1
- package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +1 -1
- package/dist/storage/rdf/index.d.ts +2 -1
- package/dist/storage/rdf/index.js +3 -1
- package/dist/storage/rdf/index.js.map +1 -1
- package/dist/storage/rdf/types.d.ts +19 -0
- package/dist/storage/rdf/types.js.map +1 -1
- package/dist/storage/rdf/types.jsonld +115 -0
- package/package.json +2 -2
- package/config/runtime-open.json +0 -22
- package/dist/authorization/AuthModeSelector.d.ts +0 -10
- package/dist/authorization/AuthModeSelector.js +0 -27
- package/dist/authorization/AuthModeSelector.js.map +0 -1
- package/dist/authorization/AuthModeSelector.jsonld +0 -81
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidRdfEngine.js","sourceRoot":"","sources":["../../../src/storage/rdf/SolidRdfEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Quad, Term } from '@rdfjs/types';\nimport { termToId } from 'n3';\nimport type { QuintPattern, QuintStore } from '../quint/types';\nimport { isTerm } from '../quint/types';\nimport type {\n Rdf3xObjectOperatorPattern,\n Rdf3xObjectTextSearchPattern,\n Rdf3xShadowJoinResult,\n Rdf3xShadowScanResult,\n Rdf3xTermInPattern,\n Rdf3xTermMetadataPattern,\n Rdf3xTermNotInPattern,\n Rdf3xIndexOptions,\n Rdf3xTriplePattern,\n RdfDerivedIndexProfile,\n RdfDerivedIndexRefreshResult,\n RdfEngineStorageStats,\n RdfIndexPutOptions,\n RdfPatternQuery,\n RdfQuadJoinOptions,\n RdfQuadJoinPattern,\n RdfQuadIndexOptions,\n RdfQuadIndexScanResult,\n RdfSourceInput,\n RdfShadowScanResult,\n RdfTextChunkInput,\n RdfTextIndexOptions,\n RdfTextSearchOptions,\n RdfTextSearchResult,\n RdfTextSourceInput,\n RdfVectorChunkInput,\n RdfVectorIndexOptions,\n RdfVectorSearchOptions,\n RdfVectorSearchResult,\n RdfVectorSourceInput,\n} from './types';\nimport { RdfQuadIndex } from './RdfQuadIndex';\nimport { Rdf3xIndex } from './Rdf3xIndex';\nimport { RdfTextIndex } from './RdfTextIndex';\nimport { RdfVectorIndex } from './RdfVectorIndex';\nimport { RdfShadowComparator, diffQuads } from './RdfShadowComparator';\nimport { RdfLocalQueryEngine } from './RdfLocalQueryEngine';\nimport type { RdfLocalQuery, RdfLocalQueryResult } from './types';\n\nexport interface SolidRdfEngineOptions {\n index: RdfQuadIndex | RdfQuadIndexOptions;\n derivedIndexProfile?: RdfDerivedIndexProfile;\n textIndex?: RdfTextIndex | RdfTextIndexOptions;\n vectorIndex?: RdfVectorIndex | RdfVectorIndexOptions;\n rdf3xIndex?: Rdf3xIndex | Rdf3xIndexOptions;\n rdf3xPrimary?: boolean;\n compatibilityStore?: QuintStore;\n autoOpen?: boolean;\n}\n\nexport class SolidRdfEngine {\n public readonly index: RdfQuadIndex;\n public readonly textIndex?: RdfTextIndex;\n public readonly vectorIndex?: RdfVectorIndex;\n public readonly rdf3xIndex?: Rdf3xIndex;\n public readonly derivedIndexProfile: RdfDerivedIndexProfile;\n private readonly ownsIndex: boolean;\n private readonly ownsTextIndex: boolean;\n private readonly ownsVectorIndex: boolean;\n private readonly ownsRdf3xIndex: boolean;\n private readonly rdf3xPrimary: boolean;\n private readonly compatibilityStore?: QuintStore;\n private shadowComparator?: RdfShadowComparator;\n private rdf3xDirty = true;\n private rdf3xDataVersion: number | undefined;\n\n public constructor(options: SolidRdfEngineOptions) {\n const indexOptions = isRdfQuadIndexOptions(options.index) ? options.index : undefined;\n const rdf3xIndexInput = normalizeOptionalRdf3xIndex(options.rdf3xIndex);\n this.derivedIndexProfile = resolveDerivedIndexProfile(options, indexOptions, rdf3xIndexInput);\n if (options.index instanceof RdfQuadIndex) {\n this.index = options.index;\n this.ownsIndex = false;\n } else {\n this.index = new RdfQuadIndex(options.index);\n this.ownsIndex = true;\n }\n if (options.textIndex instanceof RdfTextIndex) {\n this.textIndex = options.textIndex;\n this.ownsTextIndex = false;\n } else if (isRdfTextIndexOptions(options.textIndex)) {\n this.textIndex = new RdfTextIndex(options.textIndex);\n this.ownsTextIndex = true;\n } else {\n this.ownsTextIndex = false;\n }\n if (options.vectorIndex instanceof RdfVectorIndex) {\n this.vectorIndex = options.vectorIndex;\n this.ownsVectorIndex = false;\n } else if (isRdfVectorIndexOptions(options.vectorIndex)) {\n this.vectorIndex = new RdfVectorIndex(options.vectorIndex);\n this.ownsVectorIndex = true;\n } else {\n this.ownsVectorIndex = false;\n }\n let autoConfiguredRdf3xPrimary = false;\n if (rdf3xIndexInput instanceof Rdf3xIndex) {\n this.rdf3xIndex = rdf3xIndexInput;\n this.ownsRdf3xIndex = false;\n } else if (isRdf3xIndexOptions(rdf3xIndexInput)) {\n this.rdf3xIndex = new Rdf3xIndex(rdf3xIndexInput);\n this.ownsRdf3xIndex = true;\n } else if (shouldAutoConfigureRdf3xIndex(this.derivedIndexProfile, rdf3xIndexInput, indexOptions)) {\n this.rdf3xIndex = new Rdf3xIndex({\n path: indexOptions.path,\n debug: indexOptions.debug,\n });\n this.ownsRdf3xIndex = true;\n autoConfiguredRdf3xPrimary = true;\n } else {\n this.ownsRdf3xIndex = false;\n }\n if (this.derivedIndexProfile === 'baseline' && this.rdf3xIndex) {\n throw new Error('SolidRdfEngine derivedIndexProfile=baseline cannot materialize an rdf3xIndex');\n }\n if (this.derivedIndexProfile === 'rdf3x' && !this.rdf3xIndex) {\n throw new Error('SolidRdfEngine derivedIndexProfile=rdf3x requires an rdf3xIndex or a file-backed index option');\n }\n if (options.rdf3xPrimary && !this.rdf3xIndex) {\n throw new Error('SolidRdfEngine rdf3xPrimary requires an rdf3xIndex or a file-backed index option');\n }\n this.rdf3xPrimary = options.rdf3xPrimary ?? autoConfiguredRdf3xPrimary;\n this.compatibilityStore = options.compatibilityStore;\n if (this.compatibilityStore) {\n this.shadowComparator = new RdfShadowComparator(this.index, this.compatibilityStore);\n }\n if (options.autoOpen) {\n this.open();\n }\n }\n\n public open(): void {\n this.index.open();\n this.textIndex?.open();\n this.vectorIndex?.open();\n this.rdf3xIndex?.open();\n }\n\n public async close(): Promise<void> {\n if (this.ownsRdf3xIndex) {\n this.rdf3xIndex?.close();\n }\n if (this.ownsVectorIndex) {\n this.vectorIndex?.close();\n }\n if (this.ownsTextIndex) {\n this.textIndex?.close();\n }\n if (this.ownsIndex) {\n this.index.close();\n }\n if (this.compatibilityStore) {\n await this.compatibilityStore.close();\n }\n }\n\n public put(quads: Quad | Quad[], options?: RdfIndexPutOptions): void {\n this.index.multiPut(Array.isArray(quads) ? quads : [quads], options);\n this.markRdf3xDirty();\n }\n\n public replaceSource(quads: Quad[], source: RdfSourceInput): void {\n this.index.replaceSource(quads, source);\n this.markRdf3xDirty();\n }\n\n public deleteSource(source: string): number {\n const changes = this.index.deleteSource(source);\n if (changes > 0) {\n this.markRdf3xDirty();\n }\n return changes;\n }\n\n public delete(pattern: QuintPattern): number {\n const changes = this.index.delete(pattern);\n if (changes > 0) {\n this.markRdf3xDirty();\n }\n return changes;\n }\n\n public applyDelta(deletes: QuintPattern[], inserts: Quad[], options?: RdfIndexPutOptions): { deletedRows: number; insertedRows: number } {\n const result = this.index.applyDelta(deletes, inserts, options);\n if (result.deletedRows > 0 || result.insertedRows > 0) {\n this.markRdf3xDirty();\n }\n return result;\n }\n\n public scan(query: RdfPatternQuery): RdfQuadIndexScanResult {\n return this.index.scan(query.pattern, query.options);\n }\n\n public query(query: RdfLocalQuery): RdfLocalQueryResult {\n const rdf3xReady = this.isRdf3xPrimaryReady();\n const result = new RdfLocalQueryEngine(\n this.index,\n this.textIndex,\n this.vectorIndex,\n rdf3xReady ? this.rdf3xIndex : undefined,\n ).query(query);\n if (this.rdf3xPrimary && this.rdf3xIndex && !rdf3xReady) {\n result.metrics.plan.unshift('Rdf3xPrimaryStaleFallback');\n }\n return result;\n }\n\n public refreshDerivedIndexes(): RdfDerivedIndexRefreshResult {\n const factsDataVersion = this.index.dataVersion();\n const rdf3x = this.refreshRdf3xDerivedIndex(factsDataVersion);\n return {\n derivedIndexProfile: this.derivedIndexProfile,\n factsDataVersion,\n ...(rdf3x ? { rdf3x } : {}),\n };\n }\n\n public indexTextSource(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): void {\n this.requireTextIndex().indexText(source, text, chunks);\n }\n\n public deleteTextSource(source: string): number {\n return this.requireTextIndex().deleteSource(source);\n }\n\n public searchText(options: RdfTextSearchOptions | string): RdfTextSearchResult[] {\n return this.requireTextIndex().search(typeof options === 'string' ? { query: options } : options);\n }\n\n public indexVectorSource(source: RdfVectorSourceInput, chunks: RdfVectorChunkInput[]): void {\n this.requireVectorIndex().indexVector(source, chunks);\n }\n\n public deleteVectorSource(source: string): number {\n return this.requireVectorIndex().deleteSource(source);\n }\n\n public searchVector(options: RdfVectorSearchOptions): RdfVectorSearchResult[] {\n return this.requireVectorIndex().search(options);\n }\n\n public async shadowScan(query: RdfPatternQuery): Promise<RdfShadowScanResult> {\n if (!this.shadowComparator) {\n throw new Error('SolidRdfEngine shadowScan requires a compatibility QuintStore');\n }\n return this.shadowComparator.compareScan(query);\n }\n\n public shadowRdf3xScan(query: RdfPatternQuery): Rdf3xShadowScanResult {\n const rdf3xIndex = this.requireRdf3xIndex();\n const rdf3xPattern = toRdf3xTriplePattern(query.pattern);\n const rebuild = rdf3xIndex.rebuildFromCurrentQuads();\n const primary = this.index.scan(query.pattern, query.options);\n const rdf3x = rdf3xIndex.scan(rdf3xPattern, query.options);\n const diff = diffQuads(rdf3x.quads, primary.quads);\n const orderedMatch = canonicalQuadKeys(primary.quads).join('\\n') === canonicalQuadKeys(rdf3x.quads).join('\\n');\n return {\n matched: diff.missingFromPrimary.length === 0 && diff.extraInPrimary.length === 0,\n orderedMatch,\n primary: primary.quads,\n rdf3x: rdf3x.quads,\n diff: {\n missingFromRdf3x: diff.extraInPrimary,\n extraInRdf3x: diff.missingFromPrimary,\n },\n primaryMetrics: primary.metrics,\n rdf3xMetrics: rdf3x.metrics,\n rebuild,\n };\n }\n\n public shadowRdf3xJoin(\n patterns: RdfQuadJoinPattern[],\n options?: RdfQuadJoinOptions,\n ): Rdf3xShadowJoinResult {\n const rdf3xIndex = this.requireRdf3xIndex();\n const rebuild = rdf3xIndex.rebuildFromCurrentQuads();\n const primary = this.index.joinPatterns(patterns, options);\n const rdf3x = rdf3xIndex.joinPatterns(patterns, options);\n const primaryKeys = primary.bindings.map(canonicalBindingKey);\n const rdf3xKeys = rdf3x.bindings.map(canonicalBindingKey);\n const diff = diffBindingKeys(rdf3xKeys, primaryKeys);\n return {\n matched: diff.missingFromRdf3x.length === 0 && diff.extraInRdf3x.length === 0,\n orderedMatch: primaryKeys.join('\\n') === rdf3xKeys.join('\\n'),\n primary: primary.bindings,\n rdf3x: rdf3x.bindings,\n diff,\n primaryMetrics: primary.metrics,\n rdf3xMetrics: rdf3x.metrics,\n rebuild,\n };\n }\n\n public supportsPrimary(query: RdfPatternQuery): boolean {\n try {\n this.index.scan(query.pattern, { ...query.options, limit: 0 });\n return true;\n } catch {\n return false;\n }\n }\n\n public storageStats(): RdfEngineStorageStats {\n const facts = this.index.stats();\n const rdf3x = this.rdf3xIndex\n ? {\n stats: this.rdf3xIndex.stats(),\n syncedWithFacts: this.rdf3xIndex.isSyncedWithCurrentQuads(),\n }\n : undefined;\n const factsBytes = facts.databaseBytes;\n const derivedBytes = rdf3x?.stats.databaseBytes ?? 0;\n const totalBytes = factsBytes + derivedBytes;\n return {\n derivedIndexProfile: this.derivedIndexProfile,\n facts,\n ...(rdf3x ? { rdf3x } : {}),\n factsBytes,\n derivedBytes,\n totalBytes,\n derivedToFactsRatio: byteRatio(derivedBytes, factsBytes),\n totalToFactsRatio: byteRatio(totalBytes, factsBytes),\n };\n }\n\n private requireTextIndex(): RdfTextIndex {\n if (!this.textIndex) {\n throw new Error('SolidRdfEngine text index is not configured');\n }\n return this.textIndex;\n }\n\n private requireVectorIndex(): RdfVectorIndex {\n if (!this.vectorIndex) {\n throw new Error('SolidRdfEngine vector index is not configured');\n }\n return this.vectorIndex;\n }\n\n private requireRdf3xIndex(): Rdf3xIndex {\n if (!this.rdf3xIndex) {\n throw new Error('SolidRdfEngine RDF-3X shadow index is not configured');\n }\n return this.rdf3xIndex;\n }\n\n private markRdf3xDirty(): void {\n if (this.rdf3xIndex) {\n this.rdf3xDirty = true;\n }\n }\n\n private isRdf3xPrimaryReady(): boolean {\n return Boolean(this.rdf3xPrimary && this.rdf3xIndex?.isSyncedWithCurrentQuads());\n }\n\n private refreshRdf3xDerivedIndex(factsDataVersion = this.index.dataVersion()): RdfDerivedIndexRefreshResult['rdf3x'] {\n if (!this.rdf3xIndex) {\n return undefined;\n }\n const dataVersion = factsDataVersion;\n if (!this.rdf3xDirty && this.rdf3xDataVersion === dataVersion) {\n return {\n refreshed: false,\n previousFactsDataVersion: dataVersion,\n factsDataVersion: dataVersion,\n syncedWithFacts: true,\n };\n }\n const rdf3xIndex = this.rdf3xIndex;\n const previousFactsDataVersion = rdf3xIndex.factsDataVersion();\n if (previousFactsDataVersion === dataVersion) {\n this.rdf3xDirty = false;\n this.rdf3xDataVersion = dataVersion;\n return {\n refreshed: false,\n previousFactsDataVersion,\n factsDataVersion: dataVersion,\n syncedWithFacts: true,\n };\n }\n const rebuild = rdf3xIndex.rebuildFromCurrentQuads();\n this.rdf3xDirty = false;\n this.rdf3xDataVersion = rebuild.factsDataVersion;\n return {\n refreshed: true,\n previousFactsDataVersion,\n factsDataVersion: rebuild.factsDataVersion,\n syncedWithFacts: rdf3xIndex.factsDataVersion() === this.index.dataVersion(),\n rebuild,\n };\n }\n}\n\nfunction isRdfTextIndexOptions(input: RdfTextIndex | RdfTextIndexOptions | undefined): input is RdfTextIndexOptions {\n return input !== undefined && !(input instanceof RdfTextIndex) && typeof input.path === 'string';\n}\n\nfunction isRdfVectorIndexOptions(input: RdfVectorIndex | RdfVectorIndexOptions | undefined): input is RdfVectorIndexOptions {\n return input !== undefined && !(input instanceof RdfVectorIndex) && typeof input.path === 'string';\n}\n\nfunction isRdf3xIndexOptions(input: Rdf3xIndex | Rdf3xIndexOptions | undefined): input is Rdf3xIndexOptions {\n return input !== undefined && !(input instanceof Rdf3xIndex) && typeof input.path === 'string';\n}\n\nfunction isRdfQuadIndexOptions(input: RdfQuadIndex | RdfQuadIndexOptions): input is RdfQuadIndexOptions {\n return !(input instanceof RdfQuadIndex) && typeof input.path === 'string';\n}\n\nfunction resolveDerivedIndexProfile(\n options: SolidRdfEngineOptions,\n indexOptions: RdfQuadIndexOptions | undefined,\n rdf3xIndexInput: Rdf3xIndex | Rdf3xIndexOptions | undefined,\n): RdfDerivedIndexProfile {\n if (options.derivedIndexProfile) {\n return options.derivedIndexProfile;\n }\n if (rdf3xIndexInput !== undefined || options.rdf3xPrimary === true) {\n return 'rdf3x';\n }\n if (options.rdf3xPrimary === false) {\n return 'baseline';\n }\n return indexOptions !== undefined && indexOptions.path !== ':memory:' ? 'rdf3x' : 'baseline';\n}\n\nfunction shouldAutoConfigureRdf3xIndex(\n profile: RdfDerivedIndexProfile,\n rdf3xIndexInput: Rdf3xIndex | Rdf3xIndexOptions | undefined,\n indexOptions: RdfQuadIndexOptions | undefined,\n): indexOptions is RdfQuadIndexOptions {\n return profile === 'rdf3x'\n && rdf3xIndexInput === undefined\n && indexOptions !== undefined\n && indexOptions.path !== ':memory:';\n}\n\nfunction normalizeOptionalRdf3xIndex(input: Rdf3xIndex | Rdf3xIndexOptions | undefined): Rdf3xIndex | Rdf3xIndexOptions | undefined {\n if (input instanceof Rdf3xIndex || isRdf3xIndexOptions(input)) {\n return input;\n }\n return undefined;\n}\n\nfunction byteRatio(numerator: number, denominator: number): number {\n if (denominator <= 0) {\n return numerator <= 0 ? 1 : Number.POSITIVE_INFINITY;\n }\n return numerator / denominator;\n}\n\nfunction canonicalQuadKeys(quads: Quad[]): string[] {\n return quads.map((quad) => [\n termToId(quad.graph as any),\n termToId(quad.subject as any),\n termToId(quad.predicate as any),\n termToId(quad.object as any),\n ].join('\\u001f'));\n}\n\nfunction canonicalBindingKey(binding: Record<string, unknown>): string {\n return Object.keys(binding)\n .sort()\n .map((key) => `${key}=${termToId(binding[key] as any)}`)\n .join('\\u001f');\n}\n\nfunction diffBindingKeys(\n rdf3xKeys: string[],\n primaryKeys: string[],\n): Rdf3xShadowJoinResult['diff'] {\n const rdf3xSet = new Set(rdf3xKeys);\n const primarySet = new Set(primaryKeys);\n return {\n missingFromRdf3x: Array.from(primarySet).filter((key) => !rdf3xSet.has(key)).sort(),\n extraInRdf3x: Array.from(rdf3xSet).filter((key) => !primarySet.has(key)).sort(),\n };\n}\n\nfunction toRdf3xTriplePattern(pattern: QuintPattern): Rdf3xTriplePattern {\n const result: Rdf3xTriplePattern = {};\n for (const key of ['graph', 'subject', 'predicate', 'object'] as const) {\n const value = pattern[key];\n if (!value) {\n continue;\n }\n if (!isTerm(value)) {\n if (isRdf3xTermInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (isRdf3xTermNotInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (isRdf3xCompatibleOperatorPattern(key, value)) {\n result[key] = value as Rdf3xTriplePattern[typeof key];\n continue;\n }\n throw new Error(`SolidRdfEngine RDF-3X shadow scan only supports exact ${key} terms${key === 'graph' ? ' or graph $startsWith' : ''}`);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction isRdf3xTermInPattern(value: unknown): value is Rdf3xTermInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $in?: unknown }).$in)\n && ((value as { $in: unknown[] }).$in).length > 0\n && ((value as { $in: unknown[] }).$in).every((entry) => isTerm(entry as any));\n}\n\nfunction isRdf3xTermNotInPattern(value: unknown): value is Rdf3xTermNotInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $notIn?: unknown }).$notIn)\n && ((value as { $notIn: unknown[] }).$notIn).length > 0\n && ((value as { $notIn: unknown[] }).$notIn).every((entry) => isTerm(entry as any));\n}\n\nfunction isRdf3xCompatibleOperatorPattern(\n key: keyof Rdf3xTriplePattern,\n value: unknown,\n): value is Rdf3xTermMetadataPattern | Rdf3xObjectOperatorPattern {\n if (value === null || typeof value !== 'object' || 'termType' in value) {\n return false;\n }\n const allowed = new Set<string>([\n '$in',\n '$notIn',\n '$termType',\n '$language',\n '$notLanguage',\n '$langMatches',\n '$datatype',\n '$notDatatype',\n ...(key === 'graph' ? ['$startsWith'] : []),\n ...(key === 'object' ? ['$gt', '$gte', '$lt', '$lte', '$contains', '$endsWith'] : []),\n ]);\n if (Object.keys(value).length === 0 || Object.keys(value).some((operator) => !allowed.has(operator))) {\n return false;\n }\n const operators = value as Record<string, unknown>;\n if (operators.$in !== undefined && !isRdf3xTermInPattern({ $in: operators.$in })) return false;\n if (operators.$notIn !== undefined && !isRdf3xTermNotInPattern({ $notIn: operators.$notIn })) return false;\n if (operators.$startsWith !== undefined && typeof operators.$startsWith !== 'string') return false;\n if (operators.$termType !== undefined && !['iri', 'blank', 'literal', 'numeric'].includes(operators.$termType as string)) return false;\n for (const languageOperator of ['$language', '$notLanguage', '$langMatches']) {\n if (operators[languageOperator] !== undefined && typeof operators[languageOperator] !== 'string') return false;\n }\n for (const datatypeOperator of ['$datatype', '$notDatatype']) {\n const datatype = operators[datatypeOperator];\n if (datatype !== undefined && (!isTerm(datatype as any) || (datatype as Term).termType !== 'NamedNode')) return false;\n }\n if (key === 'object') {\n for (const rangeOperator of ['$gt', '$gte', '$lt', '$lte']) {\n const rangeValue = operators[rangeOperator];\n if (rangeValue !== undefined && !isRdf3xObjectRangeValue(rangeValue)) return false;\n }\n for (const textOperator of ['$contains', '$endsWith'] satisfies Array<keyof Rdf3xObjectTextSearchPattern>) {\n if (operators[textOperator] !== undefined && typeof operators[textOperator] !== 'string') return false;\n }\n }\n return true;\n}\n\nfunction isRdf3xObjectRangeValue(value: unknown): boolean {\n if (typeof value === 'number') {\n return Number.isFinite(value);\n }\n if (typeof value === 'string') {\n return true;\n }\n return isTerm(value as any);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidRdfEngine.js","sourceRoot":"","sources":["../../../src/storage/rdf/SolidRdfEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Quad, Term } from '@rdfjs/types';\nimport { termToId } from 'n3';\nimport type { QuintPattern, QuintStore } from '../quint/types';\nimport { isTerm } from '../quint/types';\nimport type {\n Rdf3xObjectOperatorPattern,\n Rdf3xObjectTextSearchPattern,\n Rdf3xShadowJoinResult,\n Rdf3xShadowScanResult,\n Rdf3xTermInPattern,\n Rdf3xTermMetadataPattern,\n Rdf3xTermNotInPattern,\n Rdf3xIndexOptions,\n Rdf3xTriplePattern,\n RdfDerivedIndexProfile,\n RdfDerivedIndexRefreshResult,\n RdfEngineStorageStats,\n RdfIndexPutOptions,\n RdfPatternQuery,\n RdfQuadJoinOptions,\n RdfQuadJoinPattern,\n RdfQuadIndexOptions,\n RdfQuadIndexScanResult,\n RdfSourceInput,\n RdfShadowScanResult,\n RdfTextChunkInput,\n RdfTextIndexOptions,\n RdfTextSearchOptions,\n RdfTextSearchResult,\n RdfTextSourceInput,\n RdfVectorChunkInput,\n RdfVectorIndexOptions,\n RdfVectorSearchOptions,\n RdfVectorSearchResult,\n RdfVectorSourceInput,\n RdfEngineLike,\n} from './types';\nimport { RdfQuadIndex } from './RdfQuadIndex';\nimport { Rdf3xIndex } from './Rdf3xIndex';\nimport { RdfTextIndex } from './RdfTextIndex';\nimport { RdfVectorIndex } from './RdfVectorIndex';\nimport { RdfShadowComparator, diffQuads } from './RdfShadowComparator';\nimport { RdfLocalQueryEngine } from './RdfLocalQueryEngine';\nimport type { RdfLocalQuery, RdfLocalQueryResult } from './types';\n\nexport interface SolidRdfEngineOptions {\n index: RdfQuadIndex | RdfQuadIndexOptions;\n derivedIndexProfile?: RdfDerivedIndexProfile;\n textIndex?: RdfTextIndex | RdfTextIndexOptions;\n vectorIndex?: RdfVectorIndex | RdfVectorIndexOptions;\n rdf3xIndex?: Rdf3xIndex | Rdf3xIndexOptions;\n rdf3xPrimary?: boolean;\n compatibilityStore?: QuintStore;\n autoOpen?: boolean;\n}\n\nexport class SolidRdfEngine implements RdfEngineLike {\n public readonly index: RdfQuadIndex;\n public readonly textIndex?: RdfTextIndex;\n public readonly vectorIndex?: RdfVectorIndex;\n public readonly rdf3xIndex?: Rdf3xIndex;\n public readonly derivedIndexProfile: RdfDerivedIndexProfile;\n private readonly ownsIndex: boolean;\n private readonly ownsTextIndex: boolean;\n private readonly ownsVectorIndex: boolean;\n private readonly ownsRdf3xIndex: boolean;\n private readonly rdf3xPrimary: boolean;\n private readonly compatibilityStore?: QuintStore;\n private shadowComparator?: RdfShadowComparator;\n private rdf3xDirty = true;\n private rdf3xDataVersion: number | undefined;\n\n public constructor(options: SolidRdfEngineOptions) {\n const indexOptions = isRdfQuadIndexOptions(options.index) ? options.index : undefined;\n const rdf3xIndexInput = normalizeOptionalRdf3xIndex(options.rdf3xIndex);\n this.derivedIndexProfile = resolveDerivedIndexProfile(options, indexOptions, rdf3xIndexInput);\n if (options.index instanceof RdfQuadIndex) {\n this.index = options.index;\n this.ownsIndex = false;\n } else {\n this.index = new RdfQuadIndex(options.index);\n this.ownsIndex = true;\n }\n if (options.textIndex instanceof RdfTextIndex) {\n this.textIndex = options.textIndex;\n this.ownsTextIndex = false;\n } else if (isRdfTextIndexOptions(options.textIndex)) {\n this.textIndex = new RdfTextIndex(options.textIndex);\n this.ownsTextIndex = true;\n } else {\n this.ownsTextIndex = false;\n }\n if (options.vectorIndex instanceof RdfVectorIndex) {\n this.vectorIndex = options.vectorIndex;\n this.ownsVectorIndex = false;\n } else if (isRdfVectorIndexOptions(options.vectorIndex)) {\n this.vectorIndex = new RdfVectorIndex(options.vectorIndex);\n this.ownsVectorIndex = true;\n } else {\n this.ownsVectorIndex = false;\n }\n let autoConfiguredRdf3xPrimary = false;\n if (rdf3xIndexInput instanceof Rdf3xIndex) {\n this.rdf3xIndex = rdf3xIndexInput;\n this.ownsRdf3xIndex = false;\n } else if (isRdf3xIndexOptions(rdf3xIndexInput)) {\n this.rdf3xIndex = new Rdf3xIndex(rdf3xIndexInput);\n this.ownsRdf3xIndex = true;\n } else if (shouldAutoConfigureRdf3xIndex(this.derivedIndexProfile, rdf3xIndexInput, indexOptions)) {\n this.rdf3xIndex = new Rdf3xIndex({\n path: indexOptions.path,\n debug: indexOptions.debug,\n });\n this.ownsRdf3xIndex = true;\n autoConfiguredRdf3xPrimary = true;\n } else {\n this.ownsRdf3xIndex = false;\n }\n if (this.derivedIndexProfile === 'baseline' && this.rdf3xIndex) {\n throw new Error('SolidRdfEngine derivedIndexProfile=baseline cannot materialize an rdf3xIndex');\n }\n if (this.derivedIndexProfile === 'rdf3x' && !this.rdf3xIndex) {\n throw new Error('SolidRdfEngine derivedIndexProfile=rdf3x requires an rdf3xIndex or a file-backed index option');\n }\n if (options.rdf3xPrimary && !this.rdf3xIndex) {\n throw new Error('SolidRdfEngine rdf3xPrimary requires an rdf3xIndex or a file-backed index option');\n }\n this.rdf3xPrimary = options.rdf3xPrimary ?? autoConfiguredRdf3xPrimary;\n this.compatibilityStore = options.compatibilityStore;\n if (this.compatibilityStore) {\n this.shadowComparator = new RdfShadowComparator(this.index, this.compatibilityStore);\n }\n if (options.autoOpen) {\n this.open();\n }\n }\n\n public open(): void {\n this.index.open();\n this.textIndex?.open();\n this.vectorIndex?.open();\n this.rdf3xIndex?.open();\n }\n\n public async close(): Promise<void> {\n if (this.ownsRdf3xIndex) {\n this.rdf3xIndex?.close();\n }\n if (this.ownsVectorIndex) {\n this.vectorIndex?.close();\n }\n if (this.ownsTextIndex) {\n this.textIndex?.close();\n }\n if (this.ownsIndex) {\n this.index.close();\n }\n if (this.compatibilityStore) {\n await this.compatibilityStore.close();\n }\n }\n\n public put(quads: Quad | Quad[], options?: RdfIndexPutOptions): void {\n this.index.multiPut(Array.isArray(quads) ? quads : [quads], options);\n this.markRdf3xDirty();\n }\n\n public replaceSource(quads: Quad[], source: RdfSourceInput): void {\n this.index.replaceSource(quads, source);\n this.markRdf3xDirty();\n }\n\n public deleteSource(source: string): number {\n const changes = this.index.deleteSource(source);\n if (changes > 0) {\n this.markRdf3xDirty();\n }\n return changes;\n }\n\n public delete(pattern: QuintPattern): number {\n const changes = this.index.delete(pattern);\n if (changes > 0) {\n this.markRdf3xDirty();\n }\n return changes;\n }\n\n public applyDelta(deletes: QuintPattern[], inserts: Quad[], options?: RdfIndexPutOptions): { deletedRows: number; insertedRows: number } {\n const result = this.index.applyDelta(deletes, inserts, options);\n if (result.deletedRows > 0 || result.insertedRows > 0) {\n this.markRdf3xDirty();\n }\n return result;\n }\n\n public scan(query: RdfPatternQuery): RdfQuadIndexScanResult {\n return this.index.scan(query.pattern, query.options);\n }\n\n public query(query: RdfLocalQuery): RdfLocalQueryResult {\n const rdf3xReady = this.isRdf3xPrimaryReady();\n const result = new RdfLocalQueryEngine(\n this.index,\n this.textIndex,\n this.vectorIndex,\n rdf3xReady ? this.rdf3xIndex : undefined,\n ).query(query);\n if (this.rdf3xPrimary && this.rdf3xIndex && !rdf3xReady) {\n result.metrics.plan.unshift('Rdf3xPrimaryStaleFallback');\n }\n return result;\n }\n\n public refreshDerivedIndexes(): RdfDerivedIndexRefreshResult {\n const factsDataVersion = this.index.dataVersion();\n const rdf3x = this.refreshRdf3xDerivedIndex(factsDataVersion);\n return {\n derivedIndexProfile: this.derivedIndexProfile,\n factsDataVersion,\n ...(rdf3x ? { rdf3x } : {}),\n };\n }\n\n public indexTextSource(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): void {\n this.requireTextIndex().indexText(source, text, chunks);\n }\n\n public deleteTextSource(source: string): number {\n return this.requireTextIndex().deleteSource(source);\n }\n\n public searchText(options: RdfTextSearchOptions | string): RdfTextSearchResult[] {\n return this.requireTextIndex().search(typeof options === 'string' ? { query: options } : options);\n }\n\n public indexVectorSource(source: RdfVectorSourceInput, chunks: RdfVectorChunkInput[]): void {\n this.requireVectorIndex().indexVector(source, chunks);\n }\n\n public deleteVectorSource(source: string): number {\n return this.requireVectorIndex().deleteSource(source);\n }\n\n public searchVector(options: RdfVectorSearchOptions): RdfVectorSearchResult[] {\n return this.requireVectorIndex().search(options);\n }\n\n public async shadowScan(query: RdfPatternQuery): Promise<RdfShadowScanResult> {\n if (!this.shadowComparator) {\n throw new Error('SolidRdfEngine shadowScan requires a compatibility QuintStore');\n }\n return this.shadowComparator.compareScan(query);\n }\n\n public shadowRdf3xScan(query: RdfPatternQuery): Rdf3xShadowScanResult {\n const rdf3xIndex = this.requireRdf3xIndex();\n const rdf3xPattern = toRdf3xTriplePattern(query.pattern);\n const rebuild = rdf3xIndex.rebuildFromCurrentQuads();\n const primary = this.index.scan(query.pattern, query.options);\n const rdf3x = rdf3xIndex.scan(rdf3xPattern, query.options);\n const diff = diffQuads(rdf3x.quads, primary.quads);\n const orderedMatch = canonicalQuadKeys(primary.quads).join('\\n') === canonicalQuadKeys(rdf3x.quads).join('\\n');\n return {\n matched: diff.missingFromPrimary.length === 0 && diff.extraInPrimary.length === 0,\n orderedMatch,\n primary: primary.quads,\n rdf3x: rdf3x.quads,\n diff: {\n missingFromRdf3x: diff.extraInPrimary,\n extraInRdf3x: diff.missingFromPrimary,\n },\n primaryMetrics: primary.metrics,\n rdf3xMetrics: rdf3x.metrics,\n rebuild,\n };\n }\n\n public shadowRdf3xJoin(\n patterns: RdfQuadJoinPattern[],\n options?: RdfQuadJoinOptions,\n ): Rdf3xShadowJoinResult {\n const rdf3xIndex = this.requireRdf3xIndex();\n const rebuild = rdf3xIndex.rebuildFromCurrentQuads();\n const primary = this.index.joinPatterns(patterns, options);\n const rdf3x = rdf3xIndex.joinPatterns(patterns, options);\n const primaryKeys = primary.bindings.map(canonicalBindingKey);\n const rdf3xKeys = rdf3x.bindings.map(canonicalBindingKey);\n const diff = diffBindingKeys(rdf3xKeys, primaryKeys);\n return {\n matched: diff.missingFromRdf3x.length === 0 && diff.extraInRdf3x.length === 0,\n orderedMatch: primaryKeys.join('\\n') === rdf3xKeys.join('\\n'),\n primary: primary.bindings,\n rdf3x: rdf3x.bindings,\n diff,\n primaryMetrics: primary.metrics,\n rdf3xMetrics: rdf3x.metrics,\n rebuild,\n };\n }\n\n public supportsPrimary(query: RdfPatternQuery): boolean {\n try {\n this.index.scan(query.pattern, { ...query.options, limit: 0 });\n return true;\n } catch {\n return false;\n }\n }\n\n public storageStats(): RdfEngineStorageStats {\n const facts = this.index.stats();\n const rdf3x = this.rdf3xIndex\n ? {\n stats: this.rdf3xIndex.stats(),\n syncedWithFacts: this.rdf3xIndex.isSyncedWithCurrentQuads(),\n }\n : undefined;\n const factsBytes = facts.databaseBytes;\n const derivedBytes = rdf3x?.stats.databaseBytes ?? 0;\n const totalBytes = factsBytes + derivedBytes;\n return {\n derivedIndexProfile: this.derivedIndexProfile,\n facts,\n ...(rdf3x ? { rdf3x } : {}),\n factsBytes,\n derivedBytes,\n totalBytes,\n derivedToFactsRatio: byteRatio(derivedBytes, factsBytes),\n totalToFactsRatio: byteRatio(totalBytes, factsBytes),\n };\n }\n\n private requireTextIndex(): RdfTextIndex {\n if (!this.textIndex) {\n throw new Error('SolidRdfEngine text index is not configured');\n }\n return this.textIndex;\n }\n\n private requireVectorIndex(): RdfVectorIndex {\n if (!this.vectorIndex) {\n throw new Error('SolidRdfEngine vector index is not configured');\n }\n return this.vectorIndex;\n }\n\n private requireRdf3xIndex(): Rdf3xIndex {\n if (!this.rdf3xIndex) {\n throw new Error('SolidRdfEngine RDF-3X shadow index is not configured');\n }\n return this.rdf3xIndex;\n }\n\n private markRdf3xDirty(): void {\n if (this.rdf3xIndex) {\n this.rdf3xDirty = true;\n }\n }\n\n private isRdf3xPrimaryReady(): boolean {\n return Boolean(this.rdf3xPrimary && this.rdf3xIndex?.isSyncedWithCurrentQuads());\n }\n\n private refreshRdf3xDerivedIndex(factsDataVersion = this.index.dataVersion()): RdfDerivedIndexRefreshResult['rdf3x'] {\n if (!this.rdf3xIndex) {\n return undefined;\n }\n const dataVersion = factsDataVersion;\n if (!this.rdf3xDirty && this.rdf3xDataVersion === dataVersion) {\n return {\n refreshed: false,\n previousFactsDataVersion: dataVersion,\n factsDataVersion: dataVersion,\n syncedWithFacts: true,\n };\n }\n const rdf3xIndex = this.rdf3xIndex;\n const previousFactsDataVersion = rdf3xIndex.factsDataVersion();\n if (previousFactsDataVersion === dataVersion) {\n this.rdf3xDirty = false;\n this.rdf3xDataVersion = dataVersion;\n return {\n refreshed: false,\n previousFactsDataVersion,\n factsDataVersion: dataVersion,\n syncedWithFacts: true,\n };\n }\n const rebuild = rdf3xIndex.rebuildFromCurrentQuads();\n this.rdf3xDirty = false;\n this.rdf3xDataVersion = rebuild.factsDataVersion;\n return {\n refreshed: true,\n previousFactsDataVersion,\n factsDataVersion: rebuild.factsDataVersion,\n syncedWithFacts: rdf3xIndex.factsDataVersion() === this.index.dataVersion(),\n rebuild,\n };\n }\n}\n\nfunction isRdfTextIndexOptions(input: RdfTextIndex | RdfTextIndexOptions | undefined): input is RdfTextIndexOptions {\n return input !== undefined && !(input instanceof RdfTextIndex) && typeof input.path === 'string';\n}\n\nfunction isRdfVectorIndexOptions(input: RdfVectorIndex | RdfVectorIndexOptions | undefined): input is RdfVectorIndexOptions {\n return input !== undefined && !(input instanceof RdfVectorIndex) && typeof input.path === 'string';\n}\n\nfunction isRdf3xIndexOptions(input: Rdf3xIndex | Rdf3xIndexOptions | undefined): input is Rdf3xIndexOptions {\n return input !== undefined && !(input instanceof Rdf3xIndex) && typeof input.path === 'string';\n}\n\nfunction isRdfQuadIndexOptions(input: RdfQuadIndex | RdfQuadIndexOptions): input is RdfQuadIndexOptions {\n return !(input instanceof RdfQuadIndex) && typeof input.path === 'string';\n}\n\nfunction resolveDerivedIndexProfile(\n options: SolidRdfEngineOptions,\n indexOptions: RdfQuadIndexOptions | undefined,\n rdf3xIndexInput: Rdf3xIndex | Rdf3xIndexOptions | undefined,\n): RdfDerivedIndexProfile {\n if (options.derivedIndexProfile) {\n return options.derivedIndexProfile;\n }\n if (rdf3xIndexInput !== undefined || options.rdf3xPrimary === true) {\n return 'rdf3x';\n }\n if (options.rdf3xPrimary === false) {\n return 'baseline';\n }\n return indexOptions !== undefined && indexOptions.path !== ':memory:' ? 'rdf3x' : 'baseline';\n}\n\nfunction shouldAutoConfigureRdf3xIndex(\n profile: RdfDerivedIndexProfile,\n rdf3xIndexInput: Rdf3xIndex | Rdf3xIndexOptions | undefined,\n indexOptions: RdfQuadIndexOptions | undefined,\n): indexOptions is RdfQuadIndexOptions {\n return profile === 'rdf3x'\n && rdf3xIndexInput === undefined\n && indexOptions !== undefined\n && indexOptions.path !== ':memory:';\n}\n\nfunction normalizeOptionalRdf3xIndex(input: Rdf3xIndex | Rdf3xIndexOptions | undefined): Rdf3xIndex | Rdf3xIndexOptions | undefined {\n if (input instanceof Rdf3xIndex || isRdf3xIndexOptions(input)) {\n return input;\n }\n return undefined;\n}\n\nfunction byteRatio(numerator: number, denominator: number): number {\n if (denominator <= 0) {\n return numerator <= 0 ? 1 : Number.POSITIVE_INFINITY;\n }\n return numerator / denominator;\n}\n\nfunction canonicalQuadKeys(quads: Quad[]): string[] {\n return quads.map((quad) => [\n termToId(quad.graph as any),\n termToId(quad.subject as any),\n termToId(quad.predicate as any),\n termToId(quad.object as any),\n ].join('\\u001f'));\n}\n\nfunction canonicalBindingKey(binding: Record<string, unknown>): string {\n return Object.keys(binding)\n .sort()\n .map((key) => `${key}=${termToId(binding[key] as any)}`)\n .join('\\u001f');\n}\n\nfunction diffBindingKeys(\n rdf3xKeys: string[],\n primaryKeys: string[],\n): Rdf3xShadowJoinResult['diff'] {\n const rdf3xSet = new Set(rdf3xKeys);\n const primarySet = new Set(primaryKeys);\n return {\n missingFromRdf3x: Array.from(primarySet).filter((key) => !rdf3xSet.has(key)).sort(),\n extraInRdf3x: Array.from(rdf3xSet).filter((key) => !primarySet.has(key)).sort(),\n };\n}\n\nfunction toRdf3xTriplePattern(pattern: QuintPattern): Rdf3xTriplePattern {\n const result: Rdf3xTriplePattern = {};\n for (const key of ['graph', 'subject', 'predicate', 'object'] as const) {\n const value = pattern[key];\n if (!value) {\n continue;\n }\n if (!isTerm(value)) {\n if (isRdf3xTermInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (isRdf3xTermNotInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (isRdf3xCompatibleOperatorPattern(key, value)) {\n result[key] = value as Rdf3xTriplePattern[typeof key];\n continue;\n }\n throw new Error(`SolidRdfEngine RDF-3X shadow scan only supports exact ${key} terms${key === 'graph' ? ' or graph $startsWith' : ''}`);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction isRdf3xTermInPattern(value: unknown): value is Rdf3xTermInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $in?: unknown }).$in)\n && ((value as { $in: unknown[] }).$in).length > 0\n && ((value as { $in: unknown[] }).$in).every((entry) => isTerm(entry as any));\n}\n\nfunction isRdf3xTermNotInPattern(value: unknown): value is Rdf3xTermNotInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $notIn?: unknown }).$notIn)\n && ((value as { $notIn: unknown[] }).$notIn).length > 0\n && ((value as { $notIn: unknown[] }).$notIn).every((entry) => isTerm(entry as any));\n}\n\nfunction isRdf3xCompatibleOperatorPattern(\n key: keyof Rdf3xTriplePattern,\n value: unknown,\n): value is Rdf3xTermMetadataPattern | Rdf3xObjectOperatorPattern {\n if (value === null || typeof value !== 'object' || 'termType' in value) {\n return false;\n }\n const allowed = new Set<string>([\n '$in',\n '$notIn',\n '$termType',\n '$language',\n '$notLanguage',\n '$langMatches',\n '$datatype',\n '$notDatatype',\n ...(key === 'graph' ? ['$startsWith'] : []),\n ...(key === 'object' ? ['$gt', '$gte', '$lt', '$lte', '$contains', '$endsWith'] : []),\n ]);\n if (Object.keys(value).length === 0 || Object.keys(value).some((operator) => !allowed.has(operator))) {\n return false;\n }\n const operators = value as Record<string, unknown>;\n if (operators.$in !== undefined && !isRdf3xTermInPattern({ $in: operators.$in })) return false;\n if (operators.$notIn !== undefined && !isRdf3xTermNotInPattern({ $notIn: operators.$notIn })) return false;\n if (operators.$startsWith !== undefined && typeof operators.$startsWith !== 'string') return false;\n if (operators.$termType !== undefined && !['iri', 'blank', 'literal', 'numeric'].includes(operators.$termType as string)) return false;\n for (const languageOperator of ['$language', '$notLanguage', '$langMatches']) {\n if (operators[languageOperator] !== undefined && typeof operators[languageOperator] !== 'string') return false;\n }\n for (const datatypeOperator of ['$datatype', '$notDatatype']) {\n const datatype = operators[datatypeOperator];\n if (datatype !== undefined && (!isTerm(datatype as any) || (datatype as Term).termType !== 'NamedNode')) return false;\n }\n if (key === 'object') {\n for (const rangeOperator of ['$gt', '$gte', '$lt', '$lte']) {\n const rangeValue = operators[rangeOperator];\n if (rangeValue !== undefined && !isRdf3xObjectRangeValue(rangeValue)) return false;\n }\n for (const textOperator of ['$contains', '$endsWith'] satisfies Array<keyof Rdf3xObjectTextSearchPattern>) {\n if (operators[textOperator] !== undefined && typeof operators[textOperator] !== 'string') return false;\n }\n }\n return true;\n}\n\nfunction isRdf3xObjectRangeValue(value: unknown): boolean {\n if (typeof value === 'number') {\n return Number.isFinite(value);\n }\n if (typeof value === 'string') {\n return true;\n }\n return isTerm(value as any);\n}\n"]}
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
"@id": "undefineds:dist/storage/rdf/SolidRdfEngine.jsonld#SolidRdfEngine",
|
|
9
9
|
"@type": "Class",
|
|
10
10
|
"requireElement": "SolidRdfEngine",
|
|
11
|
+
"extends": [
|
|
12
|
+
"undefineds:dist/storage/rdf/types.jsonld#RdfEngineLike"
|
|
13
|
+
],
|
|
11
14
|
"parameters": [
|
|
12
15
|
{
|
|
13
16
|
"@id": "undefineds:dist/storage/rdf/SolidRdfEngine.jsonld#SolidRdfEngine_options_index_path",
|
|
@@ -2,9 +2,9 @@ import type { AsyncIterator } from 'asynciterator';
|
|
|
2
2
|
import type { Quad, Term, Variable } from '@rdfjs/types';
|
|
3
3
|
import type { SparqlEngine } from '../sparql/SubgraphQueryEngine';
|
|
4
4
|
import type { ShadowRdfQuintStore } from './ShadowRdfQuintStore';
|
|
5
|
-
import type {
|
|
5
|
+
import type { RdfEngineLike } from './types';
|
|
6
6
|
export interface SolidRdfSparqlEngineOptions {
|
|
7
|
-
rdfEngine:
|
|
7
|
+
rdfEngine: RdfEngineLike;
|
|
8
8
|
fallback?: SparqlEngine;
|
|
9
9
|
shadowStore?: ShadowRdfQuintStore;
|
|
10
10
|
enablePrimary?: boolean;
|
|
@@ -64,7 +64,7 @@ export declare class SolidRdfSparqlEngine implements SparqlEngine {
|
|
|
64
64
|
private readonly operationCounts;
|
|
65
65
|
private lastPrimary?;
|
|
66
66
|
private lastFallback?;
|
|
67
|
-
constructor(rdfEngine:
|
|
67
|
+
constructor(rdfEngine: RdfEngineLike, fallback?: SparqlEngine, shadowStore?: ShadowRdfQuintStore, enablePrimary?: boolean, onFallback?: (reason: SolidRdfSparqlFallback) => void);
|
|
68
68
|
queryBindings(query: string, basePath: string): Promise<BindingsStream>;
|
|
69
69
|
queryBoolean(query: string, basePath: string): Promise<boolean>;
|
|
70
70
|
queryQuads(query: string, basePath: string): Promise<any>;
|
|
@@ -67,7 +67,7 @@ class SolidRdfSparqlEngine {
|
|
|
67
67
|
}
|
|
68
68
|
const start = Date.now();
|
|
69
69
|
try {
|
|
70
|
-
const quads = this.executeQuadsPrimary(query, basePath, 'queryQuads', start);
|
|
70
|
+
const quads = await this.executeQuadsPrimary(query, basePath, 'queryQuads', start);
|
|
71
71
|
return new asynciterator_1.ArrayIterator(quads);
|
|
72
72
|
}
|
|
73
73
|
catch (error) {
|
|
@@ -92,30 +92,30 @@ class SolidRdfSparqlEngine {
|
|
|
92
92
|
let computedInserts = 0;
|
|
93
93
|
for (const operation of delta.operations) {
|
|
94
94
|
if (operation.type === 'delete') {
|
|
95
|
-
deletedRows += this.rdfEngine.applyDelta(operation.quads.map(quadToPattern), []).deletedRows;
|
|
95
|
+
deletedRows += (await this.rdfEngine.applyDelta(operation.quads.map(quadToPattern), [])).deletedRows;
|
|
96
96
|
}
|
|
97
97
|
else if (operation.type === 'insert') {
|
|
98
|
-
this.rdfEngine.applyDelta([], operation.quads);
|
|
98
|
+
await this.rdfEngine.applyDelta([], operation.quads);
|
|
99
99
|
}
|
|
100
100
|
else if (operation.type === 'insertDeleteWhere') {
|
|
101
|
-
const result = this.rdfEngine.query(operation.query);
|
|
101
|
+
const result = await this.rdfEngine.query(operation.query);
|
|
102
102
|
const deletes = this.adapter.materializeDeleteWhere(operation.deletes, result.bindings);
|
|
103
103
|
const inserts = this.adapter.materializeDeleteWhere(operation.inserts, result.bindings);
|
|
104
104
|
computedDeletes += deletes.length;
|
|
105
105
|
computedInserts += inserts.length;
|
|
106
|
-
deletedRows += this.rdfEngine.applyDelta(deletes.map(quadToPattern), inserts).deletedRows;
|
|
106
|
+
deletedRows += (await this.rdfEngine.applyDelta(deletes.map(quadToPattern), inserts)).deletedRows;
|
|
107
107
|
}
|
|
108
108
|
else if (operation.type === 'insertWhere') {
|
|
109
|
-
const result = this.rdfEngine.query(operation.query);
|
|
109
|
+
const result = await this.rdfEngine.query(operation.query);
|
|
110
110
|
const inserts = this.adapter.materializeDeleteWhere(operation.inserts, result.bindings);
|
|
111
111
|
computedInserts += inserts.length;
|
|
112
|
-
this.rdfEngine.applyDelta([], inserts);
|
|
112
|
+
await this.rdfEngine.applyDelta([], inserts);
|
|
113
113
|
}
|
|
114
114
|
else {
|
|
115
|
-
const result = this.rdfEngine.query(operation.query);
|
|
115
|
+
const result = await this.rdfEngine.query(operation.query);
|
|
116
116
|
const quads = this.adapter.materializeDeleteWhere(operation.template, result.bindings);
|
|
117
117
|
computedDeletes += quads.length;
|
|
118
|
-
deletedRows += this.rdfEngine.applyDelta(quads.map(quadToPattern), []).deletedRows;
|
|
118
|
+
deletedRows += (await this.rdfEngine.applyDelta(quads.map(quadToPattern), [])).deletedRows;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
this.recordPrimary('queryVoid', start, {
|
|
@@ -151,7 +151,7 @@ class SolidRdfSparqlEngine {
|
|
|
151
151
|
}
|
|
152
152
|
const start = Date.now();
|
|
153
153
|
try {
|
|
154
|
-
const quads = this.executeConstructPrimary(`
|
|
154
|
+
const quads = await this.executeConstructPrimary(`
|
|
155
155
|
CONSTRUCT { ?s ?p ?o }
|
|
156
156
|
WHERE { GRAPH <${escapeIri(graph)}> { ?s ?p ?o } }
|
|
157
157
|
`, basePath, 'constructGraph', start);
|
|
@@ -171,7 +171,7 @@ class SolidRdfSparqlEngine {
|
|
|
171
171
|
}
|
|
172
172
|
const start = Date.now();
|
|
173
173
|
try {
|
|
174
|
-
const result = this.executeSelectPrimary(`
|
|
174
|
+
const result = await this.executeSelectPrimary(`
|
|
175
175
|
SELECT DISTINCT ?g WHERE { GRAPH ?g { ?s ?p ?o } }
|
|
176
176
|
`, basePath, 'listGraphs', start);
|
|
177
177
|
const graphs = new Set();
|
|
@@ -273,21 +273,21 @@ class SolidRdfSparqlEngine {
|
|
|
273
273
|
await this.shadowStore.open();
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
|
-
executeSelectPrimary(query, basePath, operation, start) {
|
|
276
|
+
async executeSelectPrimary(query, basePath, operation, start) {
|
|
277
277
|
const compiled = this.adapter.compile(query, basePath);
|
|
278
278
|
if (compiled.queryType !== 'SELECT') {
|
|
279
279
|
throw new RdfSparqlAdapter_1.UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce bindings`);
|
|
280
280
|
}
|
|
281
|
-
const result = this.rdfEngine.query(compiled.query);
|
|
281
|
+
const result = await this.rdfEngine.query(compiled.query);
|
|
282
282
|
this.recordPrimary(operation, start, result);
|
|
283
283
|
return result;
|
|
284
284
|
}
|
|
285
|
-
executeConstructPrimary(query, basePath, operation, start) {
|
|
285
|
+
async executeConstructPrimary(query, basePath, operation, start) {
|
|
286
286
|
const compiled = this.adapter.compile(query, basePath);
|
|
287
287
|
if (compiled.queryType !== 'CONSTRUCT' || !compiled.constructTemplate) {
|
|
288
288
|
throw new RdfSparqlAdapter_1.UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce quads`);
|
|
289
289
|
}
|
|
290
|
-
const result = this.rdfEngine.query(compiled.query);
|
|
290
|
+
const result = await this.rdfEngine.query(compiled.query);
|
|
291
291
|
const quads = this.adapter.materializeConstruct(compiled.constructTemplate, result.bindings, rdfDataFactory.defaultGraph());
|
|
292
292
|
this.recordPrimary(operation, start, {
|
|
293
293
|
...result,
|
|
@@ -300,10 +300,10 @@ class SolidRdfSparqlEngine {
|
|
|
300
300
|
});
|
|
301
301
|
return quads;
|
|
302
302
|
}
|
|
303
|
-
executeQuadsPrimary(query, basePath, operation, start) {
|
|
303
|
+
async executeQuadsPrimary(query, basePath, operation, start) {
|
|
304
304
|
const compiled = this.adapter.compile(query, basePath);
|
|
305
305
|
if (compiled.queryType === 'CONSTRUCT' && compiled.constructTemplate) {
|
|
306
|
-
const result = this.rdfEngine.query(compiled.query);
|
|
306
|
+
const result = await this.rdfEngine.query(compiled.query);
|
|
307
307
|
const quads = this.adapter.materializeConstruct(compiled.constructTemplate, result.bindings, rdfDataFactory.defaultGraph());
|
|
308
308
|
this.recordPrimary(operation, start, {
|
|
309
309
|
...result,
|
|
@@ -321,8 +321,8 @@ class SolidRdfSparqlEngine {
|
|
|
321
321
|
}
|
|
322
322
|
throw new RdfSparqlAdapter_1.UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce quads`);
|
|
323
323
|
}
|
|
324
|
-
executeDescribePrimary(query, targets, basePath, operation, start) {
|
|
325
|
-
const seed = this.rdfEngine.query(query);
|
|
324
|
+
async executeDescribePrimary(query, targets, basePath, operation, start) {
|
|
325
|
+
const seed = await this.rdfEngine.query(query);
|
|
326
326
|
const quads = [];
|
|
327
327
|
const seen = new Set();
|
|
328
328
|
for (const target of targets) {
|
|
@@ -331,7 +331,7 @@ class SolidRdfSparqlEngine {
|
|
|
331
331
|
if (!subject || subject.termType !== 'NamedNode') {
|
|
332
332
|
continue;
|
|
333
333
|
}
|
|
334
|
-
const describe = this.rdfEngine.query({
|
|
334
|
+
const describe = await this.rdfEngine.query({
|
|
335
335
|
patterns: [
|
|
336
336
|
{
|
|
337
337
|
subject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidRdfSparqlEngine.js","sourceRoot":"","sources":["../../../src/storage/rdf/SolidRdfSparqlEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArrayIterator } from 'asynciterator';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { DefaultGraph, Quad, Quad_Object, Term, Variable } from '@rdfjs/types';\nimport { DataFactory as RdfDataFactory } from 'rdf-data-factory';\nimport { termToId } from 'n3';\nimport type { SparqlEngine } from '../sparql/SubgraphQueryEngine';\nimport type { QuintPattern } from '../quint/types';\nimport { DisabledSparqlFeatureError, RdfSparqlAdapter, UnsupportedSparqlQueryError } from './RdfSparqlAdapter';\nimport type { ShadowRdfQuintStore } from './ShadowRdfQuintStore';\nimport type { SolidRdfEngine } from './SolidRdfEngine';\nimport type { RdfBindingRow, RdfLocalQueryResult, RdfQueryTermPattern } from './types';\n\nexport interface SolidRdfSparqlEngineOptions {\n rdfEngine: SolidRdfEngine;\n fallback?: SparqlEngine;\n shadowStore?: ShadowRdfQuintStore;\n enablePrimary?: boolean;\n onFallback?: (reason: SolidRdfSparqlFallback) => void;\n}\n\nexport interface SolidRdfSparqlFallback {\n operation: 'queryBindings' | 'queryBoolean' | 'queryQuads' | 'queryVoid' | 'constructGraph' | 'listGraphs';\n reason: string;\n}\n\nexport type SolidRdfSparqlOperation = SolidRdfSparqlFallback['operation'];\n\nexport interface SolidRdfSparqlOperationCount {\n operation: SolidRdfSparqlOperation;\n primaryCount: number;\n fallbackCount: number;\n totalCount: number;\n fallbackRate: number;\n primaryDurationMs: number;\n fallbackDurationMs: number;\n}\n\nexport interface SolidRdfSparqlPrimaryMetric {\n operation: SolidRdfSparqlOperation;\n durationMs: number;\n scannedRows: number;\n returnedRows: number;\n plan: string[];\n indexChoices: string[];\n}\n\nexport interface SolidRdfSparqlFallbackMetric extends SolidRdfSparqlFallback {\n durationMs: number;\n}\n\nexport interface SolidRdfSparqlMetricsSnapshot {\n primaryCount: number;\n fallbackCount: number;\n totalCount: number;\n fallbackRate: number;\n operationCounts: SolidRdfSparqlOperationCount[];\n lastPrimary?: SolidRdfSparqlPrimaryMetric;\n lastFallback?: SolidRdfSparqlFallbackMetric;\n}\n\nexport interface SolidRdfSparqlFallbackBudget {\n maxFallbackRate?: number;\n maxFallbackCount?: number;\n operations?: SolidRdfSparqlOperation[];\n}\n\ntype BindingsStream = AsyncIterator<RdfBindings> & {\n metadata?: () => Promise<{ variables: import('@rdfjs/types').Variable[] }>;\n};\n\ninterface MutableOperationCount {\n primaryCount: number;\n fallbackCount: number;\n primaryDurationMs: number;\n fallbackDurationMs: number;\n}\n\nconst rdfDataFactory = new RdfDataFactory();\n\nexport class SolidRdfSparqlEngine implements SparqlEngine {\n private readonly adapter = new RdfSparqlAdapter();\n private readonly rdfEngine: SolidRdfEngine;\n private readonly fallback?: SparqlEngine;\n private readonly shadowStore?: ShadowRdfQuintStore;\n private readonly enablePrimary: boolean;\n private readonly onFallback?: (reason: SolidRdfSparqlFallback) => void;\n private readonly operationCounts = new Map<SolidRdfSparqlOperation, MutableOperationCount>();\n private lastPrimary?: SolidRdfSparqlPrimaryMetric;\n private lastFallback?: SolidRdfSparqlFallbackMetric;\n\n public constructor(\n rdfEngine: SolidRdfEngine,\n fallback?: SparqlEngine,\n shadowStore?: ShadowRdfQuintStore,\n enablePrimary = true,\n onFallback?: (reason: SolidRdfSparqlFallback) => void,\n ) {\n this.rdfEngine = rdfEngine;\n this.fallback = fallback;\n this.shadowStore = shadowStore;\n this.enablePrimary = enablePrimary;\n this.onFallback = onFallback;\n }\n\n public async queryBindings(query: string, basePath: string): Promise<BindingsStream> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryBindings', 'primary disabled', (fallback) => fallback.queryBindings(query, basePath));\n }\n\n const start = Date.now();\n try {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'SELECT') {\n return this.fallbackWith('queryBindings', `compiled ${compiled.queryType} cannot produce bindings`, (fallback) => fallback.queryBindings(query, basePath));\n }\n const result = await this.rdfEngine.query(compiled.query);\n this.recordPrimary('queryBindings', start, result);\n return this.bindingsStream(result, compiled.variables);\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryBindings', fallbackReason(error), (fallback) => fallback.queryBindings(query, basePath));\n }\n }\n\n public async queryBoolean(query: string, basePath: string): Promise<boolean> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryBoolean', 'primary disabled', (fallback) => fallback.queryBoolean(query, basePath));\n }\n\n const start = Date.now();\n try {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'ASK') {\n return this.fallbackWith('queryBoolean', `compiled ${compiled.queryType} cannot produce boolean`, (fallback) => fallback.queryBoolean(query, basePath));\n }\n const result = await this.rdfEngine.query(compiled.query);\n this.recordPrimary('queryBoolean', start, result);\n return result.bindings.length > 0;\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryBoolean', fallbackReason(error), (fallback) => fallback.queryBoolean(query, basePath));\n }\n }\n\n public async queryQuads(query: string, basePath: string): Promise<any> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryQuads', 'primary disabled', (fallback) => fallback.queryQuads(query, basePath));\n }\n\n const start = Date.now();\n try {\n const quads = this.executeQuadsPrimary(query, basePath, 'queryQuads', start);\n return new ArrayIterator(quads);\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryQuads', fallbackReason(error), (fallback) => fallback.queryQuads(query, basePath));\n }\n }\n\n public async queryVoid(query: string, basePath: string): Promise<void> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryVoid', 'primary disabled', (fallback) => fallback.queryVoid(query, basePath));\n }\n\n const start = Date.now();\n try {\n const delta = this.adapter.compileUpdateDelta(query, basePath, {\n defaultGraph: implicitUpdateDefaultGraph(basePath),\n });\n let deletedRows = 0;\n let computedDeletes = 0;\n let computedInserts = 0;\n for (const operation of delta.operations) {\n if (operation.type === 'delete') {\n deletedRows += this.rdfEngine.applyDelta(operation.quads.map(quadToPattern), []).deletedRows;\n } else if (operation.type === 'insert') {\n this.rdfEngine.applyDelta([], operation.quads);\n } else if (operation.type === 'insertDeleteWhere') {\n const result = this.rdfEngine.query(operation.query);\n const deletes = this.adapter.materializeDeleteWhere(operation.deletes, result.bindings);\n const inserts = this.adapter.materializeDeleteWhere(operation.inserts, result.bindings);\n computedDeletes += deletes.length;\n computedInserts += inserts.length;\n deletedRows += this.rdfEngine.applyDelta(deletes.map(quadToPattern), inserts).deletedRows;\n } else if (operation.type === 'insertWhere') {\n const result = this.rdfEngine.query(operation.query);\n const inserts = this.adapter.materializeDeleteWhere(operation.inserts, result.bindings);\n computedInserts += inserts.length;\n this.rdfEngine.applyDelta([], inserts);\n } else {\n const result = this.rdfEngine.query(operation.query);\n const quads = this.adapter.materializeDeleteWhere(operation.template, result.bindings);\n computedDeletes += quads.length;\n deletedRows += this.rdfEngine.applyDelta(quads.map(quadToPattern), []).deletedRows;\n }\n }\n this.recordPrimary('queryVoid', start, {\n bindings: [],\n metrics: {\n engine: 'solid-rdf',\n plan: ['UpdateDelta', `delete:${delta.deletes.length + computedDeletes}`, `deletedRows:${deletedRows}`, `insert:${delta.inserts.length + computedInserts}`],\n scannedRows: delta.deletes.length + computedDeletes + delta.inserts.length + computedInserts,\n joinedRows: 0,\n returnedRows: 0,\n durationMs: Date.now() - start,\n indexChoices: ['update-delta'],\n filtersApplied: 0,\n filtersPushedDown: 0,\n },\n });\n return undefined;\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryVoid', fallbackReason(error), (fallback) => fallback.queryVoid(query, basePath));\n }\n }\n\n public async constructGraph(graph: string, basePath: string): Promise<AsyncIterator<Quad>> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('constructGraph', 'primary disabled', (fallback) => fallback.constructGraph(graph, basePath));\n }\n if (!graph.startsWith(basePath)) {\n return new ArrayIterator([] as Quad[]);\n }\n\n const start = Date.now();\n try {\n const quads = this.executeConstructPrimary(`\n CONSTRUCT { ?s ?p ?o }\n WHERE { GRAPH <${escapeIri(graph)}> { ?s ?p ?o } }\n `, basePath, 'constructGraph', start);\n return new ArrayIterator(quads);\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('constructGraph', fallbackReason(error), (fallback) => fallback.constructGraph(graph, basePath));\n }\n }\n\n public async listGraphs(basePath: string): Promise<Set<string>> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('listGraphs', 'primary disabled', (fallback) => fallback.listGraphs(basePath));\n }\n\n const start = Date.now();\n try {\n const result = this.executeSelectPrimary(`\n SELECT DISTINCT ?g WHERE { GRAPH ?g { ?s ?p ?o } }\n `, basePath, 'listGraphs', start);\n const graphs = new Set<string>();\n for (const binding of result.bindings) {\n const graph = binding.g;\n if (graph?.termType === 'NamedNode') {\n graphs.add(graph.value);\n }\n }\n return graphs;\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('listGraphs', fallbackReason(error), (fallback) => fallback.listGraphs(basePath));\n }\n }\n\n public async close(): Promise<void> {\n await this.rdfEngine.close();\n await this.fallback?.close();\n }\n\n public getMetrics(): SolidRdfSparqlMetricsSnapshot {\n const operationCounts = [...this.operationCounts.entries()]\n .map(([ operation, counts ]) => operationCountSnapshot(operation, counts))\n .sort((left, right) => left.operation.localeCompare(right.operation));\n const primaryCount = operationCounts.reduce((sum, counts) => sum + counts.primaryCount, 0);\n const fallbackCount = operationCounts.reduce((sum, counts) => sum + counts.fallbackCount, 0);\n const totalCount = primaryCount + fallbackCount;\n return {\n primaryCount,\n fallbackCount,\n totalCount,\n fallbackRate: ratio(fallbackCount, totalCount),\n operationCounts,\n lastPrimary: this.lastPrimary,\n lastFallback: this.lastFallback,\n };\n }\n\n public assertFallbackBudget(budget: SolidRdfSparqlFallbackBudget = {}): void {\n const snapshot = this.getMetrics();\n const maxFallbackRate = budget.maxFallbackRate ?? 0;\n const maxFallbackCount = budget.maxFallbackCount ?? 0;\n const operationSet = budget.operations ? new Set(budget.operations) : undefined;\n const counts = operationSet\n ? snapshot.operationCounts.filter((count) => operationSet.has(count.operation))\n : snapshot.operationCounts;\n const primaryCount = counts.reduce((sum, count) => sum + count.primaryCount, 0);\n const fallbackCount = counts.reduce((sum, count) => sum + count.fallbackCount, 0);\n const totalCount = primaryCount + fallbackCount;\n const fallbackRate = ratio(fallbackCount, totalCount);\n if (fallbackCount <= maxFallbackCount && fallbackRate <= maxFallbackRate) {\n return;\n }\n const scope = operationSet ? ` for ${[...operationSet].join(',')}` : '';\n const reason = snapshot.lastFallback ? `; last fallback ${snapshot.lastFallback.operation}: ${snapshot.lastFallback.reason}` : '';\n throw new Error(`SolidRdfSparql fallback budget exceeded${scope}: ${fallbackCount}/${totalCount} (${fallbackRate}) > count ${maxFallbackCount}, rate ${maxFallbackRate}${reason}`);\n }\n\n public resetMetrics(): void {\n this.operationCounts.clear();\n this.lastPrimary = undefined;\n this.lastFallback = undefined;\n }\n\n private bindingsStream(result: RdfLocalQueryResult, variables: string[]): BindingsStream {\n const projectedVariables = variables.length > 0\n ? variables\n : inferVariables(result.bindings);\n const rows = result.bindings.map((binding) => this.bindings(binding, projectedVariables));\n const iterator = new ArrayIterator(rows) as BindingsStream;\n iterator.metadata = async () => ({\n variables: projectedVariables.map((variableName) => rdfDataFactory.variable(variableName) as import('@rdfjs/types').Variable),\n });\n return iterator;\n }\n\n private bindings(binding: RdfBindingRow, variables: string[]): RdfBindings {\n const entries: [Variable, Term][] = variables\n .map((variableName) => {\n const term = binding[variableName];\n return term ? [rdfDataFactory.variable(variableName) as Variable, term] : null;\n })\n .filter((entry): entry is [Variable, Term] => entry !== null);\n return new RdfBindings(entries);\n }\n\n private async fallbackWith<T>(\n operation: SolidRdfSparqlOperation,\n reason: string,\n run: (fallback: SparqlEngine) => Promise<T>,\n ): Promise<T> {\n if (!this.fallback) {\n throw new UnsupportedSparqlQueryError(`No compatibility SPARQL fallback configured for ${operation}: ${reason}`);\n }\n this.onFallback?.({ operation, reason });\n const start = Date.now();\n try {\n return await run(this.fallback);\n } finally {\n this.recordFallback(operation, reason, Date.now() - start);\n }\n }\n\n private async ensureReady(): Promise<void> {\n if (this.shadowStore) {\n await this.shadowStore.open();\n }\n }\n\n private executeSelectPrimary(\n query: string,\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): RdfLocalQueryResult {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'SELECT') {\n throw new UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce bindings`);\n }\n const result = this.rdfEngine.query(compiled.query);\n this.recordPrimary(operation, start, result);\n return result;\n }\n\n private executeConstructPrimary(\n query: string,\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): Quad[] {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'CONSTRUCT' || !compiled.constructTemplate) {\n throw new UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce quads`);\n }\n const result = this.rdfEngine.query(compiled.query);\n const quads = this.adapter.materializeConstruct(compiled.constructTemplate, result.bindings, rdfDataFactory.defaultGraph() as Term);\n this.recordPrimary(operation, start, {\n ...result,\n bindings: [],\n metrics: {\n ...result.metrics,\n returnedRows: quads.length,\n plan: [...result.metrics.plan, 'Construct'],\n },\n });\n return quads;\n }\n\n private executeQuadsPrimary(\n query: string,\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): Quad[] {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType === 'CONSTRUCT' && compiled.constructTemplate) {\n const result = this.rdfEngine.query(compiled.query);\n const quads = this.adapter.materializeConstruct(compiled.constructTemplate, result.bindings, rdfDataFactory.defaultGraph() as Term);\n this.recordPrimary(operation, start, {\n ...result,\n bindings: [],\n metrics: {\n ...result.metrics,\n returnedRows: quads.length,\n plan: [...result.metrics.plan, 'Construct'],\n },\n });\n return quads;\n }\n if (compiled.queryType === 'DESCRIBE' && compiled.describeTargets) {\n return this.executeDescribePrimary(compiled.query, compiled.describeTargets, basePath, operation, start);\n }\n throw new UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce quads`);\n }\n\n private executeDescribePrimary(\n query: import('./types').RdfLocalQuery,\n targets: RdfQueryTermPattern[],\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): Quad[] {\n const seed = this.rdfEngine.query(query);\n const quads: Quad[] = [];\n const seen = new Set<string>();\n\n for (const target of targets) {\n for (const binding of seed.bindings) {\n const subject = resolveQueryTerm(target, binding);\n if (!subject || subject.termType !== 'NamedNode') {\n continue;\n }\n const describe = this.rdfEngine.query({\n patterns: [\n {\n subject,\n predicate: { variable: 'p' },\n object: { variable: 'o' },\n graph: { $startsWith: basePath },\n },\n ],\n select: ['p', 'o'],\n });\n for (const row of describe.bindings) {\n const predicate = row.p;\n const object = row.o;\n if (predicate?.termType !== 'NamedNode' || !isQuadObjectTerm(object)) {\n continue;\n }\n const quad = rdfDataFactory.quad(subject, predicate, object, rdfDataFactory.defaultGraph() as DefaultGraph) as Quad;\n const key = [quad.subject, quad.predicate, quad.object, quad.graph].map((term) => termToId(term as any)).join('\\u001f');\n if (!seen.has(key)) {\n seen.add(key);\n quads.push(quad);\n }\n }\n }\n }\n\n this.recordPrimary(operation, start, {\n bindings: [],\n metrics: {\n ...seed.metrics,\n returnedRows: quads.length,\n plan: [...seed.metrics.plan, 'Describe'],\n },\n });\n return quads;\n }\n\n private recordPrimary(\n operation: SolidRdfSparqlOperation,\n start: number,\n result: RdfLocalQueryResult,\n ): void {\n const durationMs = Date.now() - start;\n const counts = this.countsFor(operation);\n counts.primaryCount += 1;\n counts.primaryDurationMs += durationMs;\n this.lastPrimary = {\n operation,\n durationMs,\n scannedRows: result.metrics.scannedRows,\n returnedRows: result.metrics.returnedRows,\n plan: result.metrics.plan,\n indexChoices: result.metrics.indexChoices,\n };\n }\n\n private recordFallback(operation: SolidRdfSparqlOperation, reason: string, durationMs: number): void {\n const counts = this.countsFor(operation);\n counts.fallbackCount += 1;\n counts.fallbackDurationMs += durationMs;\n this.lastFallback = {\n operation,\n reason,\n durationMs,\n };\n }\n\n private countsFor(operation: SolidRdfSparqlOperation): MutableOperationCount {\n const existing = this.operationCounts.get(operation);\n if (existing) {\n return existing;\n }\n const created = {\n primaryCount: 0,\n fallbackCount: 0,\n primaryDurationMs: 0,\n fallbackDurationMs: 0,\n };\n this.operationCounts.set(operation, created);\n return created;\n }\n\n}\n\nclass RdfBindings extends Map<Variable, Term> {\n private readonly byName = new Map<string, Term>();\n\n public constructor(entries: [Variable, Term][]) {\n super(entries);\n for (const [ variable, term ] of entries) {\n this.byName.set(variable.value, term);\n }\n }\n\n public override get(key: string | Variable): Term | undefined {\n if (typeof key === 'string') {\n return this.byName.get(key);\n }\n return this.byName.get(key.value) ?? super.get(key);\n }\n\n public override has(key: string | Variable): boolean {\n if (typeof key === 'string') {\n return this.byName.has(key);\n }\n return this.byName.has(key.value) || super.has(key);\n }\n}\n\nfunction inferVariables(bindings: RdfBindingRow[]): string[] {\n const names = new Set<string>();\n for (const binding of bindings) {\n for (const name of Object.keys(binding)) {\n names.add(name);\n }\n }\n return [...names];\n}\n\nfunction resolveQueryTerm(term: RdfQueryTermPattern, binding: RdfBindingRow): Term | undefined {\n if (term && typeof term === 'object' && 'variable' in term) {\n return binding[term.variable];\n }\n return term as Term;\n}\n\nfunction isQuadObjectTerm(term: Term | undefined): term is Quad_Object {\n return Boolean(\n term\n && term.termType !== 'Variable'\n && term.termType !== 'DefaultGraph'\n && term.termType !== 'Quad',\n );\n}\n\nfunction fallbackReason(error: unknown): string {\n if (error instanceof UnsupportedSparqlQueryError) {\n return error.message;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\nfunction operationCountSnapshot(\n operation: SolidRdfSparqlOperation,\n counts: MutableOperationCount,\n): SolidRdfSparqlOperationCount {\n const totalCount = counts.primaryCount + counts.fallbackCount;\n return {\n operation,\n primaryCount: counts.primaryCount,\n fallbackCount: counts.fallbackCount,\n totalCount,\n fallbackRate: ratio(counts.fallbackCount, totalCount),\n primaryDurationMs: counts.primaryDurationMs,\n fallbackDurationMs: counts.fallbackDurationMs,\n };\n}\n\nfunction ratio(numerator: number, denominator: number): number {\n return denominator === 0 ? 0 : numerator / denominator;\n}\n\nfunction implicitUpdateDefaultGraph(basePath: string): string | undefined {\n return basePath.endsWith('/') ? undefined : basePath;\n}\n\nfunction quadToPattern(quad: Quad): QuintPattern {\n return {\n graph: quad.graph,\n subject: quad.subject,\n predicate: quad.predicate,\n object: quad.object,\n };\n}\n\nfunction escapeIri(value: string): string {\n return value.replace(/[<>\"{}|^`\\\\]/g, (char) => encodeURIComponent(char));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidRdfSparqlEngine.js","sourceRoot":"","sources":["../../../src/storage/rdf/SolidRdfSparqlEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArrayIterator } from 'asynciterator';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { DefaultGraph, Quad, Quad_Object, Term, Variable } from '@rdfjs/types';\nimport { DataFactory as RdfDataFactory } from 'rdf-data-factory';\nimport { termToId } from 'n3';\nimport type { SparqlEngine } from '../sparql/SubgraphQueryEngine';\nimport type { QuintPattern } from '../quint/types';\nimport { DisabledSparqlFeatureError, RdfSparqlAdapter, UnsupportedSparqlQueryError } from './RdfSparqlAdapter';\nimport type { ShadowRdfQuintStore } from './ShadowRdfQuintStore';\nimport type { RdfBindingRow, RdfEngineLike, RdfLocalQueryResult, RdfQueryTermPattern } from './types';\n\nexport interface SolidRdfSparqlEngineOptions {\n rdfEngine: RdfEngineLike;\n fallback?: SparqlEngine;\n shadowStore?: ShadowRdfQuintStore;\n enablePrimary?: boolean;\n onFallback?: (reason: SolidRdfSparqlFallback) => void;\n}\n\nexport interface SolidRdfSparqlFallback {\n operation: 'queryBindings' | 'queryBoolean' | 'queryQuads' | 'queryVoid' | 'constructGraph' | 'listGraphs';\n reason: string;\n}\n\nexport type SolidRdfSparqlOperation = SolidRdfSparqlFallback['operation'];\n\nexport interface SolidRdfSparqlOperationCount {\n operation: SolidRdfSparqlOperation;\n primaryCount: number;\n fallbackCount: number;\n totalCount: number;\n fallbackRate: number;\n primaryDurationMs: number;\n fallbackDurationMs: number;\n}\n\nexport interface SolidRdfSparqlPrimaryMetric {\n operation: SolidRdfSparqlOperation;\n durationMs: number;\n scannedRows: number;\n returnedRows: number;\n plan: string[];\n indexChoices: string[];\n}\n\nexport interface SolidRdfSparqlFallbackMetric extends SolidRdfSparqlFallback {\n durationMs: number;\n}\n\nexport interface SolidRdfSparqlMetricsSnapshot {\n primaryCount: number;\n fallbackCount: number;\n totalCount: number;\n fallbackRate: number;\n operationCounts: SolidRdfSparqlOperationCount[];\n lastPrimary?: SolidRdfSparqlPrimaryMetric;\n lastFallback?: SolidRdfSparqlFallbackMetric;\n}\n\nexport interface SolidRdfSparqlFallbackBudget {\n maxFallbackRate?: number;\n maxFallbackCount?: number;\n operations?: SolidRdfSparqlOperation[];\n}\n\ntype BindingsStream = AsyncIterator<RdfBindings> & {\n metadata?: () => Promise<{ variables: import('@rdfjs/types').Variable[] }>;\n};\n\ninterface MutableOperationCount {\n primaryCount: number;\n fallbackCount: number;\n primaryDurationMs: number;\n fallbackDurationMs: number;\n}\n\nconst rdfDataFactory = new RdfDataFactory();\n\nexport class SolidRdfSparqlEngine implements SparqlEngine {\n private readonly adapter = new RdfSparqlAdapter();\n private readonly rdfEngine: RdfEngineLike;\n private readonly fallback?: SparqlEngine;\n private readonly shadowStore?: ShadowRdfQuintStore;\n private readonly enablePrimary: boolean;\n private readonly onFallback?: (reason: SolidRdfSparqlFallback) => void;\n private readonly operationCounts = new Map<SolidRdfSparqlOperation, MutableOperationCount>();\n private lastPrimary?: SolidRdfSparqlPrimaryMetric;\n private lastFallback?: SolidRdfSparqlFallbackMetric;\n\n public constructor(\n rdfEngine: RdfEngineLike,\n fallback?: SparqlEngine,\n shadowStore?: ShadowRdfQuintStore,\n enablePrimary = true,\n onFallback?: (reason: SolidRdfSparqlFallback) => void,\n ) {\n this.rdfEngine = rdfEngine;\n this.fallback = fallback;\n this.shadowStore = shadowStore;\n this.enablePrimary = enablePrimary;\n this.onFallback = onFallback;\n }\n\n public async queryBindings(query: string, basePath: string): Promise<BindingsStream> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryBindings', 'primary disabled', (fallback) => fallback.queryBindings(query, basePath));\n }\n\n const start = Date.now();\n try {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'SELECT') {\n return this.fallbackWith('queryBindings', `compiled ${compiled.queryType} cannot produce bindings`, (fallback) => fallback.queryBindings(query, basePath));\n }\n const result = await this.rdfEngine.query(compiled.query);\n this.recordPrimary('queryBindings', start, result);\n return this.bindingsStream(result, compiled.variables);\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryBindings', fallbackReason(error), (fallback) => fallback.queryBindings(query, basePath));\n }\n }\n\n public async queryBoolean(query: string, basePath: string): Promise<boolean> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryBoolean', 'primary disabled', (fallback) => fallback.queryBoolean(query, basePath));\n }\n\n const start = Date.now();\n try {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'ASK') {\n return this.fallbackWith('queryBoolean', `compiled ${compiled.queryType} cannot produce boolean`, (fallback) => fallback.queryBoolean(query, basePath));\n }\n const result = await this.rdfEngine.query(compiled.query);\n this.recordPrimary('queryBoolean', start, result);\n return result.bindings.length > 0;\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryBoolean', fallbackReason(error), (fallback) => fallback.queryBoolean(query, basePath));\n }\n }\n\n public async queryQuads(query: string, basePath: string): Promise<any> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryQuads', 'primary disabled', (fallback) => fallback.queryQuads(query, basePath));\n }\n\n const start = Date.now();\n try {\n const quads = await this.executeQuadsPrimary(query, basePath, 'queryQuads', start);\n return new ArrayIterator(quads);\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryQuads', fallbackReason(error), (fallback) => fallback.queryQuads(query, basePath));\n }\n }\n\n public async queryVoid(query: string, basePath: string): Promise<void> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('queryVoid', 'primary disabled', (fallback) => fallback.queryVoid(query, basePath));\n }\n\n const start = Date.now();\n try {\n const delta = this.adapter.compileUpdateDelta(query, basePath, {\n defaultGraph: implicitUpdateDefaultGraph(basePath),\n });\n let deletedRows = 0;\n let computedDeletes = 0;\n let computedInserts = 0;\n for (const operation of delta.operations) {\n if (operation.type === 'delete') {\n deletedRows += (await this.rdfEngine.applyDelta(operation.quads.map(quadToPattern), [])).deletedRows;\n } else if (operation.type === 'insert') {\n await this.rdfEngine.applyDelta([], operation.quads);\n } else if (operation.type === 'insertDeleteWhere') {\n const result = await this.rdfEngine.query(operation.query);\n const deletes = this.adapter.materializeDeleteWhere(operation.deletes, result.bindings);\n const inserts = this.adapter.materializeDeleteWhere(operation.inserts, result.bindings);\n computedDeletes += deletes.length;\n computedInserts += inserts.length;\n deletedRows += (await this.rdfEngine.applyDelta(deletes.map(quadToPattern), inserts)).deletedRows;\n } else if (operation.type === 'insertWhere') {\n const result = await this.rdfEngine.query(operation.query);\n const inserts = this.adapter.materializeDeleteWhere(operation.inserts, result.bindings);\n computedInserts += inserts.length;\n await this.rdfEngine.applyDelta([], inserts);\n } else {\n const result = await this.rdfEngine.query(operation.query);\n const quads = this.adapter.materializeDeleteWhere(operation.template, result.bindings);\n computedDeletes += quads.length;\n deletedRows += (await this.rdfEngine.applyDelta(quads.map(quadToPattern), [])).deletedRows;\n }\n }\n this.recordPrimary('queryVoid', start, {\n bindings: [],\n metrics: {\n engine: 'solid-rdf',\n plan: ['UpdateDelta', `delete:${delta.deletes.length + computedDeletes}`, `deletedRows:${deletedRows}`, `insert:${delta.inserts.length + computedInserts}`],\n scannedRows: delta.deletes.length + computedDeletes + delta.inserts.length + computedInserts,\n joinedRows: 0,\n returnedRows: 0,\n durationMs: Date.now() - start,\n indexChoices: ['update-delta'],\n filtersApplied: 0,\n filtersPushedDown: 0,\n },\n });\n return undefined;\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('queryVoid', fallbackReason(error), (fallback) => fallback.queryVoid(query, basePath));\n }\n }\n\n public async constructGraph(graph: string, basePath: string): Promise<AsyncIterator<Quad>> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('constructGraph', 'primary disabled', (fallback) => fallback.constructGraph(graph, basePath));\n }\n if (!graph.startsWith(basePath)) {\n return new ArrayIterator([] as Quad[]);\n }\n\n const start = Date.now();\n try {\n const quads = await this.executeConstructPrimary(`\n CONSTRUCT { ?s ?p ?o }\n WHERE { GRAPH <${escapeIri(graph)}> { ?s ?p ?o } }\n `, basePath, 'constructGraph', start);\n return new ArrayIterator(quads);\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('constructGraph', fallbackReason(error), (fallback) => fallback.constructGraph(graph, basePath));\n }\n }\n\n public async listGraphs(basePath: string): Promise<Set<string>> {\n await this.ensureReady();\n if (!this.enablePrimary) {\n return this.fallbackWith('listGraphs', 'primary disabled', (fallback) => fallback.listGraphs(basePath));\n }\n\n const start = Date.now();\n try {\n const result = await this.executeSelectPrimary(`\n SELECT DISTINCT ?g WHERE { GRAPH ?g { ?s ?p ?o } }\n `, basePath, 'listGraphs', start);\n const graphs = new Set<string>();\n for (const binding of result.bindings) {\n const graph = binding.g;\n if (graph?.termType === 'NamedNode') {\n graphs.add(graph.value);\n }\n }\n return graphs;\n } catch (error) {\n if (error instanceof DisabledSparqlFeatureError) {\n throw error;\n }\n return this.fallbackWith('listGraphs', fallbackReason(error), (fallback) => fallback.listGraphs(basePath));\n }\n }\n\n public async close(): Promise<void> {\n await this.rdfEngine.close();\n await this.fallback?.close();\n }\n\n public getMetrics(): SolidRdfSparqlMetricsSnapshot {\n const operationCounts = [...this.operationCounts.entries()]\n .map(([ operation, counts ]) => operationCountSnapshot(operation, counts))\n .sort((left, right) => left.operation.localeCompare(right.operation));\n const primaryCount = operationCounts.reduce((sum, counts) => sum + counts.primaryCount, 0);\n const fallbackCount = operationCounts.reduce((sum, counts) => sum + counts.fallbackCount, 0);\n const totalCount = primaryCount + fallbackCount;\n return {\n primaryCount,\n fallbackCount,\n totalCount,\n fallbackRate: ratio(fallbackCount, totalCount),\n operationCounts,\n lastPrimary: this.lastPrimary,\n lastFallback: this.lastFallback,\n };\n }\n\n public assertFallbackBudget(budget: SolidRdfSparqlFallbackBudget = {}): void {\n const snapshot = this.getMetrics();\n const maxFallbackRate = budget.maxFallbackRate ?? 0;\n const maxFallbackCount = budget.maxFallbackCount ?? 0;\n const operationSet = budget.operations ? new Set(budget.operations) : undefined;\n const counts = operationSet\n ? snapshot.operationCounts.filter((count) => operationSet.has(count.operation))\n : snapshot.operationCounts;\n const primaryCount = counts.reduce((sum, count) => sum + count.primaryCount, 0);\n const fallbackCount = counts.reduce((sum, count) => sum + count.fallbackCount, 0);\n const totalCount = primaryCount + fallbackCount;\n const fallbackRate = ratio(fallbackCount, totalCount);\n if (fallbackCount <= maxFallbackCount && fallbackRate <= maxFallbackRate) {\n return;\n }\n const scope = operationSet ? ` for ${[...operationSet].join(',')}` : '';\n const reason = snapshot.lastFallback ? `; last fallback ${snapshot.lastFallback.operation}: ${snapshot.lastFallback.reason}` : '';\n throw new Error(`SolidRdfSparql fallback budget exceeded${scope}: ${fallbackCount}/${totalCount} (${fallbackRate}) > count ${maxFallbackCount}, rate ${maxFallbackRate}${reason}`);\n }\n\n public resetMetrics(): void {\n this.operationCounts.clear();\n this.lastPrimary = undefined;\n this.lastFallback = undefined;\n }\n\n private bindingsStream(result: RdfLocalQueryResult, variables: string[]): BindingsStream {\n const projectedVariables = variables.length > 0\n ? variables\n : inferVariables(result.bindings);\n const rows = result.bindings.map((binding) => this.bindings(binding, projectedVariables));\n const iterator = new ArrayIterator(rows) as BindingsStream;\n iterator.metadata = async () => ({\n variables: projectedVariables.map((variableName) => rdfDataFactory.variable(variableName) as import('@rdfjs/types').Variable),\n });\n return iterator;\n }\n\n private bindings(binding: RdfBindingRow, variables: string[]): RdfBindings {\n const entries: [Variable, Term][] = variables\n .map((variableName) => {\n const term = binding[variableName];\n return term ? [rdfDataFactory.variable(variableName) as Variable, term] : null;\n })\n .filter((entry): entry is [Variable, Term] => entry !== null);\n return new RdfBindings(entries);\n }\n\n private async fallbackWith<T>(\n operation: SolidRdfSparqlOperation,\n reason: string,\n run: (fallback: SparqlEngine) => Promise<T>,\n ): Promise<T> {\n if (!this.fallback) {\n throw new UnsupportedSparqlQueryError(`No compatibility SPARQL fallback configured for ${operation}: ${reason}`);\n }\n this.onFallback?.({ operation, reason });\n const start = Date.now();\n try {\n return await run(this.fallback);\n } finally {\n this.recordFallback(operation, reason, Date.now() - start);\n }\n }\n\n private async ensureReady(): Promise<void> {\n if (this.shadowStore) {\n await this.shadowStore.open();\n }\n }\n\n private async executeSelectPrimary(\n query: string,\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): Promise<RdfLocalQueryResult> {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'SELECT') {\n throw new UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce bindings`);\n }\n const result = await this.rdfEngine.query(compiled.query);\n this.recordPrimary(operation, start, result);\n return result;\n }\n\n private async executeConstructPrimary(\n query: string,\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): Promise<Quad[]> {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType !== 'CONSTRUCT' || !compiled.constructTemplate) {\n throw new UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce quads`);\n }\n const result = await this.rdfEngine.query(compiled.query);\n const quads = this.adapter.materializeConstruct(compiled.constructTemplate, result.bindings, rdfDataFactory.defaultGraph() as Term);\n this.recordPrimary(operation, start, {\n ...result,\n bindings: [],\n metrics: {\n ...result.metrics,\n returnedRows: quads.length,\n plan: [...result.metrics.plan, 'Construct'],\n },\n });\n return quads;\n }\n\n private async executeQuadsPrimary(\n query: string,\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): Promise<Quad[]> {\n const compiled = this.adapter.compile(query, basePath);\n if (compiled.queryType === 'CONSTRUCT' && compiled.constructTemplate) {\n const result = await this.rdfEngine.query(compiled.query);\n const quads = this.adapter.materializeConstruct(compiled.constructTemplate, result.bindings, rdfDataFactory.defaultGraph() as Term);\n this.recordPrimary(operation, start, {\n ...result,\n bindings: [],\n metrics: {\n ...result.metrics,\n returnedRows: quads.length,\n plan: [...result.metrics.plan, 'Construct'],\n },\n });\n return quads;\n }\n if (compiled.queryType === 'DESCRIBE' && compiled.describeTargets) {\n return this.executeDescribePrimary(compiled.query, compiled.describeTargets, basePath, operation, start);\n }\n throw new UnsupportedSparqlQueryError(`compiled ${compiled.queryType} cannot produce quads`);\n }\n\n private async executeDescribePrimary(\n query: import('./types').RdfLocalQuery,\n targets: RdfQueryTermPattern[],\n basePath: string,\n operation: SolidRdfSparqlOperation,\n start: number,\n ): Promise<Quad[]> {\n const seed = await this.rdfEngine.query(query);\n const quads: Quad[] = [];\n const seen = new Set<string>();\n\n for (const target of targets) {\n for (const binding of seed.bindings) {\n const subject = resolveQueryTerm(target, binding);\n if (!subject || subject.termType !== 'NamedNode') {\n continue;\n }\n const describe = await this.rdfEngine.query({\n patterns: [\n {\n subject,\n predicate: { variable: 'p' },\n object: { variable: 'o' },\n graph: { $startsWith: basePath },\n },\n ],\n select: ['p', 'o'],\n });\n for (const row of describe.bindings) {\n const predicate = row.p;\n const object = row.o;\n if (predicate?.termType !== 'NamedNode' || !isQuadObjectTerm(object)) {\n continue;\n }\n const quad = rdfDataFactory.quad(subject, predicate, object, rdfDataFactory.defaultGraph() as DefaultGraph) as Quad;\n const key = [quad.subject, quad.predicate, quad.object, quad.graph].map((term) => termToId(term as any)).join('\\u001f');\n if (!seen.has(key)) {\n seen.add(key);\n quads.push(quad);\n }\n }\n }\n }\n\n this.recordPrimary(operation, start, {\n bindings: [],\n metrics: {\n ...seed.metrics,\n returnedRows: quads.length,\n plan: [...seed.metrics.plan, 'Describe'],\n },\n });\n return quads;\n }\n\n private recordPrimary(\n operation: SolidRdfSparqlOperation,\n start: number,\n result: RdfLocalQueryResult,\n ): void {\n const durationMs = Date.now() - start;\n const counts = this.countsFor(operation);\n counts.primaryCount += 1;\n counts.primaryDurationMs += durationMs;\n this.lastPrimary = {\n operation,\n durationMs,\n scannedRows: result.metrics.scannedRows,\n returnedRows: result.metrics.returnedRows,\n plan: result.metrics.plan,\n indexChoices: result.metrics.indexChoices,\n };\n }\n\n private recordFallback(operation: SolidRdfSparqlOperation, reason: string, durationMs: number): void {\n const counts = this.countsFor(operation);\n counts.fallbackCount += 1;\n counts.fallbackDurationMs += durationMs;\n this.lastFallback = {\n operation,\n reason,\n durationMs,\n };\n }\n\n private countsFor(operation: SolidRdfSparqlOperation): MutableOperationCount {\n const existing = this.operationCounts.get(operation);\n if (existing) {\n return existing;\n }\n const created = {\n primaryCount: 0,\n fallbackCount: 0,\n primaryDurationMs: 0,\n fallbackDurationMs: 0,\n };\n this.operationCounts.set(operation, created);\n return created;\n }\n\n}\n\nclass RdfBindings extends Map<Variable, Term> {\n private readonly byName = new Map<string, Term>();\n\n public constructor(entries: [Variable, Term][]) {\n super(entries);\n for (const [ variable, term ] of entries) {\n this.byName.set(variable.value, term);\n }\n }\n\n public override get(key: string | Variable): Term | undefined {\n if (typeof key === 'string') {\n return this.byName.get(key);\n }\n return this.byName.get(key.value) ?? super.get(key);\n }\n\n public override has(key: string | Variable): boolean {\n if (typeof key === 'string') {\n return this.byName.has(key);\n }\n return this.byName.has(key.value) || super.has(key);\n }\n}\n\nfunction inferVariables(bindings: RdfBindingRow[]): string[] {\n const names = new Set<string>();\n for (const binding of bindings) {\n for (const name of Object.keys(binding)) {\n names.add(name);\n }\n }\n return [...names];\n}\n\nfunction resolveQueryTerm(term: RdfQueryTermPattern, binding: RdfBindingRow): Term | undefined {\n if (term && typeof term === 'object' && 'variable' in term) {\n return binding[term.variable];\n }\n return term as Term;\n}\n\nfunction isQuadObjectTerm(term: Term | undefined): term is Quad_Object {\n return Boolean(\n term\n && term.termType !== 'Variable'\n && term.termType !== 'DefaultGraph'\n && term.termType !== 'Quad',\n );\n}\n\nfunction fallbackReason(error: unknown): string {\n if (error instanceof UnsupportedSparqlQueryError) {\n return error.message;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\nfunction operationCountSnapshot(\n operation: SolidRdfSparqlOperation,\n counts: MutableOperationCount,\n): SolidRdfSparqlOperationCount {\n const totalCount = counts.primaryCount + counts.fallbackCount;\n return {\n operation,\n primaryCount: counts.primaryCount,\n fallbackCount: counts.fallbackCount,\n totalCount,\n fallbackRate: ratio(counts.fallbackCount, totalCount),\n primaryDurationMs: counts.primaryDurationMs,\n fallbackDurationMs: counts.fallbackDurationMs,\n };\n}\n\nfunction ratio(numerator: number, denominator: number): number {\n return denominator === 0 ? 0 : numerator / denominator;\n}\n\nfunction implicitUpdateDefaultGraph(basePath: string): string | undefined {\n return basePath.endsWith('/') ? undefined : basePath;\n}\n\nfunction quadToPattern(quad: Quad): QuintPattern {\n return {\n graph: quad.graph,\n subject: quad.subject,\n predicate: quad.predicate,\n object: quad.object,\n };\n}\n\nfunction escapeIri(value: string): string {\n return value.replace(/[<>\"{}|^`\\\\]/g, (char) => encodeURIComponent(char));\n}\n"]}
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"@id": "undefineds:dist/storage/rdf/SolidRdfSparqlEngine.jsonld#SolidRdfSparqlEngine_rdfEngine",
|
|
89
|
-
"range": "undefineds:dist/storage/rdf/
|
|
89
|
+
"range": "undefineds:dist/storage/rdf/types.jsonld#RdfEngineLike"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"@id": "undefineds:dist/storage/rdf/SolidRdfSparqlEngine.jsonld#SolidRdfSparqlEngine_fallback",
|
|
@@ -9,7 +9,8 @@ export { RdfShadowComparator, canonicalQuadKey, diffQuads } from './RdfShadowCom
|
|
|
9
9
|
export { RdfLocalQueryEngine, variable as rdfVar } from './RdfLocalQueryEngine';
|
|
10
10
|
export { ShadowRdfQuintStore, type ShadowRdfQuintStoreOptions } from './ShadowRdfQuintStore';
|
|
11
11
|
export { SolidRdfEngine, type SolidRdfEngineOptions } from './SolidRdfEngine';
|
|
12
|
+
export { PostgresRdfEngine, type PostgresRdfEngineOptions } from './PostgresRdfEngine';
|
|
12
13
|
export { DisabledSparqlFeatureError, RdfSparqlAdapter, UnsupportedSparqlQueryError, type RdfSparqlCompileResult, type RdfSparqlDeleteOperation, type RdfSparqlDeleteWhereOperation, type RdfSparqlDeleteWhereTemplate, type RdfSparqlInsertOperation, type RdfSparqlUpdateDelta, type RdfSparqlUpdateDeltaOperation, } from './RdfSparqlAdapter';
|
|
13
14
|
export { SolidRdfSparqlEngine, type SolidRdfSparqlEngineOptions, type SolidRdfSparqlFallback, type SolidRdfSparqlFallbackMetric, type SolidRdfSparqlMetricsSnapshot, type SolidRdfSparqlOperation, type SolidRdfSparqlOperationCount, type SolidRdfSparqlPrimaryMetric, } from './SolidRdfSparqlEngine';
|
|
14
15
|
export { rdfModelsBenchmarkCases, rdfModelsBenchmarkCaseNames, rdfModelsLocalQueryBenchmarkCases, rdfModelsLocalQueryBenchmarkCaseNames, defaultSyntheticMessagesForRdfModelsScale, estimateRdfModelsSyntheticQuadCount, rdfModelsBenchmarkScaleSatisfied, rdfModelsBenchmarkSyntheticPodCount, rdfModelsBenchmarkScaleTargetQuads, runRdfModelsBenchmark, runRdfModelsRdf3xShadowBenchmark, runRdfModelsShadowBenchmark, RDF_MODELS_SYNTHETIC_MESSAGE_QUADS, type RdfBenchmarkScale, type RdfModelBenchmarkCase, type RdfModelLocalQueryBenchmarkCase, type RdfModelLocalQueryBenchmarkResult, type RdfModelBenchmarkReport, type RdfModelBenchmarkResult, type RdfModelBenchmarkRunOptions, type RdfModelShadowBenchmarkReport, type RdfModelRdf3xShadowBenchmarkReport, type RdfModelRdf3xShadowJoinBenchmarkResult, type RdfModelRdf3xShadowBenchmarkResult, type RdfModelShadowBenchmarkResult, type RdfModelShadowBenchmarkRunOptions, type RdfModelShadowBenchmarkSide, } from './models-benchmark';
|
|
15
|
-
export type { RdfEngineStorageStats, RdfDerivedIndexRefreshResult, RdfIndexStats, RdfDerivedIndexProfile, Rdf3xCardinalityEstimate, Rdf3xCountResult, Rdf3xJoinMetrics, Rdf3xJoinOptions, Rdf3xJoinScanResult, Rdf3xIndexMetrics, Rdf3xIndexStats, Rdf3xObjectOperatorPattern, Rdf3xObjectRangePattern, Rdf3xPairProjectionName, Rdf3xPatternKey, Rdf3xPermutationName, Rdf3xRebuildResult, Rdf3xTermKey, Rdf3xTermInPattern, Rdf3xTermMetadataPattern, Rdf3xTermNotInPattern, Rdf3xTermProjectionName, Rdf3xTermTypePatternValue, Rdf3xIndexOptions, Rdf3xTriplePattern, Rdf3xTripleScanOptions, Rdf3xTripleScanResult, Rdf3xShadowBindingDiff, Rdf3xShadowQuadDiff, Rdf3xShadowJoinResult, Rdf3xShadowScanResult, RdfIndexSpaceObject, RdfIndexMetrics, RdfIndexPutOptions, RdfBindingRow, RdfConstructTemplate, RdfQuadJoinOptions, RdfQuadJoinCountOptions, RdfQuadJoinOrder, RdfQuadJoinPattern, RdfQuadJoinScanResult, RdfLocalQuery, RdfQueryAggregate, RdfLocalQueryMetrics, RdfLocalQueryResult, RdfPatternQuery, RdfQuadIndexOptions, RdfQuadIndexScanResult, RdfQuadRow, RdfQueryOrder, RdfQueryPattern, RdfQueryPatternKey, RdfQueryTermPattern, RdfQueryVariable, RdfShadowBackfillOptions, RdfShadowBackfillResult, RdfShadowDiff, RdfShadowScanResult, RdfSourceInput, RdfSourceRow, RdfTextChunkInput, RdfTextChunkRow, RdfTextIndexOptions, RdfTextIndexStats, RdfTextSearchOptions, RdfTextSearchPattern, RdfTextSearchResult, RdfTextSourceInput, RdfTextTermDocumentFrequency, RdfVectorChunkInput, RdfVectorChunkRow, RdfVectorDistanceMetric, RdfVectorIndexOptions, RdfVectorIndexStats, RdfVectorModelDistribution, RdfVectorSearchOptions, RdfVectorSearchPattern, RdfVectorSearchResult, RdfVectorSourceInput, RdfTermKind, RdfTermLookup, RdfTermRow, RdfTermSelection, } from './types';
|
|
16
|
+
export type { RdfEngineLike, RdfEngineStorageStats, RdfDerivedIndexRefreshResult, RdfIndexStats, RdfDerivedIndexProfile, Rdf3xCardinalityEstimate, Rdf3xCountResult, Rdf3xJoinMetrics, Rdf3xJoinOptions, Rdf3xJoinScanResult, Rdf3xIndexMetrics, Rdf3xIndexStats, Rdf3xObjectOperatorPattern, Rdf3xObjectRangePattern, Rdf3xPairProjectionName, Rdf3xPatternKey, Rdf3xPermutationName, Rdf3xRebuildResult, Rdf3xTermKey, Rdf3xTermInPattern, Rdf3xTermMetadataPattern, Rdf3xTermNotInPattern, Rdf3xTermProjectionName, Rdf3xTermTypePatternValue, Rdf3xIndexOptions, Rdf3xTriplePattern, Rdf3xTripleScanOptions, Rdf3xTripleScanResult, Rdf3xShadowBindingDiff, Rdf3xShadowQuadDiff, Rdf3xShadowJoinResult, Rdf3xShadowScanResult, RdfIndexSpaceObject, RdfIndexMetrics, RdfIndexPutOptions, RdfBindingRow, RdfConstructTemplate, RdfQuadJoinOptions, RdfQuadJoinCountOptions, RdfQuadJoinOrder, RdfQuadJoinPattern, RdfQuadJoinScanResult, RdfLocalQuery, RdfQueryAggregate, RdfLocalQueryMetrics, RdfLocalQueryResult, RdfPatternQuery, RdfQuadIndexOptions, RdfQuadIndexScanResult, RdfQuadRow, RdfQueryOrder, RdfQueryPattern, RdfQueryPatternKey, RdfQueryTermPattern, RdfQueryVariable, RdfShadowBackfillOptions, RdfShadowBackfillResult, RdfShadowDiff, RdfShadowScanResult, RdfSourceInput, RdfSourceRow, RdfTextChunkInput, RdfTextChunkRow, RdfTextIndexOptions, RdfTextIndexStats, RdfTextSearchOptions, RdfTextSearchPattern, RdfTextSearchResult, RdfTextSourceInput, RdfTextTermDocumentFrequency, RdfVectorChunkInput, RdfVectorChunkRow, RdfVectorDistanceMetric, RdfVectorIndexOptions, RdfVectorIndexStats, RdfVectorModelDistribution, RdfVectorSearchOptions, RdfVectorSearchPattern, RdfVectorSearchResult, RdfVectorSourceInput, RdfTermKind, RdfTermLookup, RdfTermRow, RdfTermSelection, } from './types';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RDF_MODELS_SYNTHETIC_MESSAGE_QUADS = exports.runRdfModelsShadowBenchmark = exports.runRdfModelsRdf3xShadowBenchmark = exports.runRdfModelsBenchmark = exports.rdfModelsBenchmarkScaleTargetQuads = exports.rdfModelsBenchmarkSyntheticPodCount = exports.rdfModelsBenchmarkScaleSatisfied = exports.estimateRdfModelsSyntheticQuadCount = exports.defaultSyntheticMessagesForRdfModelsScale = exports.rdfModelsLocalQueryBenchmarkCaseNames = exports.rdfModelsLocalQueryBenchmarkCases = exports.rdfModelsBenchmarkCaseNames = exports.rdfModelsBenchmarkCases = exports.SolidRdfSparqlEngine = exports.UnsupportedSparqlQueryError = exports.RdfSparqlAdapter = exports.DisabledSparqlFeatureError = exports.SolidRdfEngine = exports.ShadowRdfQuintStore = exports.rdfVar = exports.RdfLocalQueryEngine = exports.diffQuads = exports.canonicalQuadKey = exports.RdfShadowComparator = exports.rdfContentTypeForPath = exports.normalizeContentType = exports.isSafeRdfDocumentContentType = exports.isRdfDocumentPath = exports.isRdfDocumentContentType = exports.isRdfDocument = exports.isLineAddressableRdfPath = exports.isLineAddressableRdfContentType = exports.isLineAddressableRdf = exports.RdfVectorIndex = exports.RdfTextIndex = exports.Rdf3xIndex = exports.RdfQuadIndex = exports.rdfNumericValue = exports.isRdfNumericTerm = exports.isRdfNumericDatatype = exports.isFiniteNumericLexical = exports.RDF_NUMERIC_DATATYPES = exports.RdfTermDictionary = void 0;
|
|
3
|
+
exports.RDF_MODELS_SYNTHETIC_MESSAGE_QUADS = exports.runRdfModelsShadowBenchmark = exports.runRdfModelsRdf3xShadowBenchmark = exports.runRdfModelsBenchmark = exports.rdfModelsBenchmarkScaleTargetQuads = exports.rdfModelsBenchmarkSyntheticPodCount = exports.rdfModelsBenchmarkScaleSatisfied = exports.estimateRdfModelsSyntheticQuadCount = exports.defaultSyntheticMessagesForRdfModelsScale = exports.rdfModelsLocalQueryBenchmarkCaseNames = exports.rdfModelsLocalQueryBenchmarkCases = exports.rdfModelsBenchmarkCaseNames = exports.rdfModelsBenchmarkCases = exports.SolidRdfSparqlEngine = exports.UnsupportedSparqlQueryError = exports.RdfSparqlAdapter = exports.DisabledSparqlFeatureError = exports.PostgresRdfEngine = exports.SolidRdfEngine = exports.ShadowRdfQuintStore = exports.rdfVar = exports.RdfLocalQueryEngine = exports.diffQuads = exports.canonicalQuadKey = exports.RdfShadowComparator = exports.rdfContentTypeForPath = exports.normalizeContentType = exports.isSafeRdfDocumentContentType = exports.isRdfDocumentPath = exports.isRdfDocumentContentType = exports.isRdfDocument = exports.isLineAddressableRdfPath = exports.isLineAddressableRdfContentType = exports.isLineAddressableRdf = exports.RdfVectorIndex = exports.RdfTextIndex = exports.Rdf3xIndex = exports.RdfQuadIndex = exports.rdfNumericValue = exports.isRdfNumericTerm = exports.isRdfNumericDatatype = exports.isFiniteNumericLexical = exports.RDF_NUMERIC_DATATYPES = exports.RdfTermDictionary = void 0;
|
|
4
4
|
var RdfTermDictionary_1 = require("./RdfTermDictionary");
|
|
5
5
|
Object.defineProperty(exports, "RdfTermDictionary", { enumerable: true, get: function () { return RdfTermDictionary_1.RdfTermDictionary; } });
|
|
6
6
|
var RdfTermSemantics_1 = require("./RdfTermSemantics");
|
|
@@ -38,6 +38,8 @@ var ShadowRdfQuintStore_1 = require("./ShadowRdfQuintStore");
|
|
|
38
38
|
Object.defineProperty(exports, "ShadowRdfQuintStore", { enumerable: true, get: function () { return ShadowRdfQuintStore_1.ShadowRdfQuintStore; } });
|
|
39
39
|
var SolidRdfEngine_1 = require("./SolidRdfEngine");
|
|
40
40
|
Object.defineProperty(exports, "SolidRdfEngine", { enumerable: true, get: function () { return SolidRdfEngine_1.SolidRdfEngine; } });
|
|
41
|
+
var PostgresRdfEngine_1 = require("./PostgresRdfEngine");
|
|
42
|
+
Object.defineProperty(exports, "PostgresRdfEngine", { enumerable: true, get: function () { return PostgresRdfEngine_1.PostgresRdfEngine; } });
|
|
41
43
|
var RdfSparqlAdapter_1 = require("./RdfSparqlAdapter");
|
|
42
44
|
Object.defineProperty(exports, "DisabledSparqlFeatureError", { enumerable: true, get: function () { return RdfSparqlAdapter_1.DisabledSparqlFeatureError; } });
|
|
43
45
|
Object.defineProperty(exports, "RdfSparqlAdapter", { enumerable: true, get: function () { return RdfSparqlAdapter_1.RdfSparqlAdapter; } });
|