@undefineds.co/xpod 0.3.27 → 0.3.31
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/cli.json +8 -0
- package/dist/authorization/PodAuthorizationResources.d.ts +1 -0
- package/dist/authorization/PodAuthorizationResources.js +36 -4
- package/dist/authorization/PodAuthorizationResources.js.map +1 -1
- package/dist/provision/LocalPodProvisioningService.js +2 -0
- package/dist/provision/LocalPodProvisioningService.js.map +1 -1
- package/dist/provision/ProvisionPodCreator.js +16 -0
- package/dist/provision/ProvisionPodCreator.js.map +1 -1
- package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
- package/dist/storage/rdf/PostgresRdfEngine.d.ts +12 -15
- package/dist/storage/rdf/PostgresRdfEngine.js +1040 -150
- package/dist/storage/rdf/PostgresRdfEngine.js.map +1 -1
- package/dist/storage/rdf/PostgresRdfEngine.jsonld +40 -52
- package/dist/storage/rdf/{RdfLocalQueryEngine.d.ts → RdfQueryExecutor.d.ts} +3 -3
- package/dist/storage/rdf/{RdfLocalQueryEngine.js → RdfQueryExecutor.js} +9 -9
- package/dist/storage/rdf/RdfQueryExecutor.js.map +1 -0
- package/dist/storage/rdf/RdfSparqlAdapter.d.ts +5 -5
- package/dist/storage/rdf/RdfSparqlAdapter.js +27 -27
- package/dist/storage/rdf/RdfSparqlAdapter.js.map +1 -1
- package/dist/storage/rdf/SolidRdfEngine.d.ts +2 -5
- package/dist/storage/rdf/SolidRdfEngine.js +6 -38
- package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
- package/dist/storage/rdf/SolidRdfEngine.jsonld +0 -12
- package/dist/storage/rdf/SolidRdfSparqlEngine.js.map +1 -1
- package/dist/storage/rdf/index.d.ts +3 -3
- package/dist/storage/rdf/index.js +6 -6
- package/dist/storage/rdf/index.js.map +1 -1
- package/dist/storage/rdf/models-benchmark.d.ts +9 -9
- package/dist/storage/rdf/models-benchmark.js +23 -23
- package/dist/storage/rdf/models-benchmark.js.map +1 -1
- package/dist/storage/rdf/types.d.ts +5 -5
- package/dist/storage/rdf/types.js.map +1 -1
- package/package.json +1 -1
- package/templates/pod/acp/profile/.acr +21 -0
- package/templates/pod/wac/profile/.acl.hbs +18 -0
- package/dist/storage/rdf/RdfLocalQueryEngine.js.map +0 -1
|
@@ -495,7 +495,7 @@ export interface RdfVectorSearchPattern {
|
|
|
495
495
|
endOffset?: string;
|
|
496
496
|
model?: string;
|
|
497
497
|
}
|
|
498
|
-
export interface
|
|
498
|
+
export interface RdfQuery {
|
|
499
499
|
patterns: RdfQueryPattern[];
|
|
500
500
|
values?: RdfValuesBindingSource[];
|
|
501
501
|
textSearch?: RdfTextSearchPattern[];
|
|
@@ -567,7 +567,7 @@ export interface RdfQuadJoinGroupAggregateOptions {
|
|
|
567
567
|
offset?: number;
|
|
568
568
|
}
|
|
569
569
|
export type RdfQuadJoinGroupCountOptions = RdfQuadJoinGroupAggregateOptions;
|
|
570
|
-
export interface
|
|
570
|
+
export interface RdfQueryMetrics {
|
|
571
571
|
engine: 'solid-rdf';
|
|
572
572
|
plan: string[];
|
|
573
573
|
scannedRows: number;
|
|
@@ -581,10 +581,10 @@ export interface RdfLocalQueryMetrics {
|
|
|
581
581
|
filtersApplied: number;
|
|
582
582
|
filtersPushedDown: number;
|
|
583
583
|
}
|
|
584
|
-
export interface
|
|
584
|
+
export interface RdfQueryResult {
|
|
585
585
|
bindings: RdfBindingRow[];
|
|
586
586
|
count?: number;
|
|
587
|
-
metrics:
|
|
587
|
+
metrics: RdfQueryMetrics;
|
|
588
588
|
}
|
|
589
589
|
export interface RdfEngineLike {
|
|
590
590
|
open(): void | Promise<void>;
|
|
@@ -601,7 +601,7 @@ export interface RdfEngineLike {
|
|
|
601
601
|
insertedRows: number;
|
|
602
602
|
}>;
|
|
603
603
|
scan(query: RdfPatternQuery): RdfQuadIndexScanResult | Promise<RdfQuadIndexScanResult>;
|
|
604
|
-
query(query:
|
|
604
|
+
query(query: RdfQuery): RdfQueryResult | Promise<RdfQueryResult>;
|
|
605
605
|
refreshDerivedIndexes(): RdfDerivedIndexRefreshResult | Promise<RdfDerivedIndexRefreshResult>;
|
|
606
606
|
storageStats(): RdfEngineStorageStats | Promise<RdfEngineStorageStats>;
|
|
607
607
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/storage/rdf/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Quad, Term } from '@rdfjs/types';\nimport type { QueryOptions, QuintPattern, TermMatch, TermName } from '../quint/types';\n\nexport type RdfTermKind = 'iri' | 'literal' | 'blank' | 'default_graph';\n\nexport interface RdfTermRow {\n id: number;\n kind: RdfTermKind;\n value: string;\n value_head: string;\n datatype_id: number | null;\n lang: string | null;\n hash: string;\n normalized_text: string | null;\n numeric_value: number | null;\n created_at: string;\n}\n\nexport interface RdfSourceInput {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n}\n\nexport interface RdfSourceRow {\n id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n last_indexed_at: string | null;\n source_version: string | null;\n}\n\nexport interface RdfQuadRow {\n graph_id: number;\n subject_id: number;\n predicate_id: number;\n object_id: number;\n source_file_id: number | null;\n source_line_no: number | null;\n}\n\nexport interface RdfQuadIndexOptions {\n path: string;\n debug?: boolean;\n}\n\nexport type RdfDerivedIndexProfile = 'baseline' | 'rdf3x';\n\nexport interface RdfShadowAutoBackfillOptions {\n enabled?: boolean;\n clear?: boolean;\n batchSize?: number;\n}\n\nexport interface RdfIndexPutOptions {\n source?: RdfSourceInput;\n sourceLineNo?: number;\n}\n\nexport interface RdfIndexMetrics {\n engine: 'solid-rdf';\n indexChoice: string;\n /** Rows matched before LIMIT/OFFSET are applied. */\n matchedRows: number;\n returnedRows: number;\n durationMs: number;\n queryPlan?: string[];\n}\n\nexport interface RdfCardinalityEstimate {\n rows: number;\n source:\n | 'exact-count'\n | 'cached-exact-count'\n | 'exact-distinct-count'\n | 'cached-exact-distinct-count'\n | 'exact-distinct-tuple-count'\n | 'cached-exact-distinct-tuple-count';\n indexChoice: string;\n}\n\nexport interface RdfIndexStats {\n termCount: number;\n quadCount: number;\n sourceCount: number;\n graphCount: number;\n databaseBytes: number;\n tableBytes: number;\n indexBytes: number;\n spaceObjects: RdfIndexSpaceObject[];\n serializedTermTextBytes: number;\n literalDatatypeDistribution: RdfLiteralDatatypeDistribution[];\n cardinalityDistributions: RdfCardinalityDistributions;\n}\n\nexport interface RdfEngineStorageStats {\n derivedIndexProfile: RdfDerivedIndexProfile;\n facts: RdfIndexStats;\n rdf3x?: {\n stats: Rdf3xIndexStats;\n syncedWithFacts: boolean;\n };\n factsBytes: number;\n derivedBytes: number;\n totalBytes: number;\n derivedToFactsRatio: number;\n totalToFactsRatio: number;\n}\n\nexport interface RdfDerivedIndexRefreshResult {\n derivedIndexProfile: RdfDerivedIndexProfile;\n factsDataVersion: number;\n rdf3x?: {\n refreshed: boolean;\n previousFactsDataVersion: number;\n factsDataVersion: number;\n syncedWithFacts: boolean;\n rebuild?: Rdf3xRebuildResult;\n };\n}\n\nexport interface RdfIndexSpaceObject {\n name: string;\n kind: 'table' | 'index' | 'internal' | 'unknown';\n tableName?: string;\n bytes: number;\n pages: number;\n estimated?: boolean;\n}\n\nexport interface RdfLiteralDatatypeDistribution {\n datatype: string;\n termCount: number;\n objectQuadCount: number;\n}\n\nexport interface RdfCardinalityTerm {\n value: string;\n kind: RdfTermKind;\n datatype?: string;\n language?: string;\n}\n\nexport interface RdfGraphCardinality {\n graph: RdfCardinalityTerm;\n quadCount: number;\n distinctSubjects: number;\n distinctPredicates: number;\n distinctObjects: number;\n}\n\nexport interface RdfPredicateCardinality {\n predicate: RdfCardinalityTerm;\n quadCount: number;\n graphCount: number;\n distinctSubjects: number;\n distinctObjects: number;\n}\n\nexport interface RdfPredicateObjectCardinality {\n predicate: RdfCardinalityTerm;\n object: RdfCardinalityTerm;\n quadCount: number;\n graphCount: number;\n distinctSubjects: number;\n}\n\nexport interface RdfSubjectPredicateCardinality {\n subject: RdfCardinalityTerm;\n predicate: RdfCardinalityTerm;\n quadCount: number;\n graphCount: number;\n distinctObjects: number;\n}\n\nexport interface RdfCardinalityDistributions {\n graphs: RdfGraphCardinality[];\n predicates: RdfPredicateCardinality[];\n predicateObjects: RdfPredicateObjectCardinality[];\n subjectPredicates: RdfSubjectPredicateCardinality[];\n}\n\nexport interface RdfQuadIndexScanResult {\n quads: Quad[];\n metrics: RdfIndexMetrics;\n}\n\nexport type Rdf3xTermKey = 'subject' | 'predicate' | 'object';\nexport type Rdf3xPatternKey = 'graph' | Rdf3xTermKey;\nexport type Rdf3xPermutationName = 'SPO' | 'SOP' | 'PSO' | 'POS' | 'OSP' | 'OPS';\nexport type Rdf3xPairProjectionName = 'SP' | 'SO' | 'PS' | 'PO' | 'OS' | 'OP';\nexport type Rdf3xTermProjectionName = 'S' | 'P' | 'O';\n\nexport interface Rdf3xIndexOptions {\n path: string;\n debug?: boolean;\n}\n\nexport interface Rdf3xGraphPrefixPattern {\n $startsWith: string;\n}\n\nexport interface Rdf3xTermInPattern {\n $in: Term[];\n}\n\nexport interface Rdf3xTermNotInPattern {\n $notIn: Term[];\n}\n\nexport type Rdf3xTermTypePatternValue = 'iri' | 'blank' | 'literal' | 'numeric';\n\nexport interface Rdf3xTermMetadataPattern {\n $termType?: Rdf3xTermTypePatternValue;\n $language?: string;\n $notLanguage?: string;\n $langMatches?: string;\n $datatype?: Term;\n $notDatatype?: Term;\n}\n\nexport interface Rdf3xObjectRangePattern {\n $gt?: Term | string | number;\n $gte?: Term | string | number;\n $lt?: Term | string | number;\n $lte?: Term | string | number;\n}\n\nexport type Rdf3xNumericObjectRangePattern = Rdf3xObjectRangePattern;\n\nexport interface Rdf3xObjectTextSearchPattern {\n $contains?: string;\n $endsWith?: string;\n}\n\nexport interface Rdf3xObjectOperatorPattern extends Rdf3xObjectRangePattern, Rdf3xObjectTextSearchPattern, Rdf3xTermMetadataPattern {}\n\nexport interface Rdf3xTriplePattern {\n graph?: Term | Rdf3xGraphPrefixPattern | Rdf3xTermInPattern | Rdf3xTermNotInPattern | Rdf3xTermMetadataPattern;\n subject?: Term | Rdf3xTermInPattern | Rdf3xTermNotInPattern | Rdf3xTermMetadataPattern;\n predicate?: Term | Rdf3xTermInPattern | Rdf3xTermNotInPattern | Rdf3xTermMetadataPattern;\n object?: Term | Rdf3xObjectOperatorPattern | Rdf3xTermInPattern | Rdf3xTermNotInPattern;\n}\n\nexport interface Rdf3xTripleScanOptions {\n order?: Array<'graph' | 'subject' | 'predicate' | 'object'>;\n orderDirections?: Array<'asc' | 'desc'>;\n reverse?: boolean;\n limit?: number;\n offset?: number;\n}\n\nexport interface Rdf3xIndexMetrics {\n engine: 'solid-rdf3x';\n indexChoice: Rdf3xPermutationName | 'source-membership' | 'none';\n matchedRows: number;\n returnedRows: number;\n durationMs: number;\n queryPlan?: string[];\n}\n\nexport interface Rdf3xTripleScanResult {\n quads: Quad[];\n metrics: Rdf3xIndexMetrics;\n}\n\nexport interface Rdf3xCountResult {\n count: number;\n metrics: Rdf3xIndexMetrics;\n}\n\nexport interface Rdf3xJoinOptions {\n orderBy?: RdfQuadJoinOrder[];\n limit?: number;\n offset?: number;\n project?: string[];\n distinct?: boolean;\n countMatchedRows?: boolean;\n values?: RdfValuesBindingSource[];\n}\n\nexport interface Rdf3xJoinMetrics {\n engine: 'solid-rdf3x';\n indexChoice: string;\n matchedRows: number;\n returnedRows: number;\n durationMs: number;\n queryPlan?: string[];\n}\n\nexport interface Rdf3xJoinScanResult {\n bindings: RdfBindingRow[];\n metrics: Rdf3xJoinMetrics;\n}\n\nexport interface Rdf3xRebuildResult {\n scannedQuads: number;\n uniqueTriples: number;\n memberships: number;\n projectionRows: number;\n factsDataVersion: number;\n durationMs: number;\n}\n\nexport interface Rdf3xCardinalityEstimate {\n uniqueTriples: number;\n matchingQuads: number;\n source: 'projection-stat' | 'term-stat' | 'exact-triple' | 'exact-membership' | 'full-count';\n indexChoice: Rdf3xPermutationName | 'source-membership' | 'none';\n}\n\nexport interface Rdf3xIndexStats {\n uniqueTriples: number;\n membershipCount: number;\n graphCount: number;\n factsDataVersion: number;\n permutationRows: Record<Rdf3xPermutationName, number>;\n pairProjectionRows: Record<Rdf3xPairProjectionName, number>;\n termProjectionRows: Record<Rdf3xTermProjectionName, number>;\n databaseBytes: number;\n tableBytes: number;\n indexBytes: number;\n spaceObjects: RdfIndexSpaceObject[];\n}\n\nexport interface Rdf3xShadowBindingDiff {\n missingFromRdf3x: string[];\n extraInRdf3x: string[];\n}\n\nexport interface Rdf3xShadowQuadDiff {\n missingFromRdf3x: string[];\n extraInRdf3x: string[];\n}\n\nexport interface Rdf3xShadowScanResult {\n matched: boolean;\n orderedMatch: boolean;\n primary: Quad[];\n rdf3x: Quad[];\n diff: Rdf3xShadowQuadDiff;\n primaryMetrics: RdfIndexMetrics;\n rdf3xMetrics: Rdf3xIndexMetrics;\n rebuild: Rdf3xRebuildResult;\n}\n\nexport interface Rdf3xShadowJoinResult {\n matched: boolean;\n orderedMatch: boolean;\n primary: RdfBindingRow[];\n rdf3x: RdfBindingRow[];\n diff: Rdf3xShadowBindingDiff;\n primaryMetrics: RdfIndexMetrics;\n rdf3xMetrics: Rdf3xJoinMetrics;\n rebuild: Rdf3xRebuildResult;\n}\n\nexport type RdfQuadTupleConstraint = Partial<Record<RdfQueryPatternKey, Term>>;\n\nexport interface RdfQuadTupleConstraintSource {\n columns: RdfQueryPatternKey[];\n rows: RdfQuadTupleConstraint[];\n}\n\nexport interface RdfQuadJoinPattern {\n pattern: QuintPattern;\n variables: Partial<Record<RdfQueryPatternKey, string>>;\n}\n\nexport interface RdfQuadJoinOrder {\n variable: string;\n direction?: 'asc' | 'desc';\n}\n\nexport interface RdfQuadScanOptions extends QueryOptions {\n orderDirections?: Array<'asc' | 'desc'>;\n}\n\nexport interface RdfQuadJoinOptions {\n orderBy?: RdfQuadJoinOrder[];\n limit?: number;\n offset?: number;\n project?: string[];\n distinct?: boolean;\n countMatchedRows?: boolean;\n}\n\nexport interface RdfQuadJoinAggregateOptions {\n aggregates: RdfQueryAggregate[];\n}\n\nexport type RdfQuadJoinCountOptions = RdfQuadJoinAggregateOptions;\n\nexport interface RdfQuadJoinGroupAggregateHaving {\n aggregate: string;\n operator: '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte';\n value: number;\n}\n\nexport type RdfQuadJoinGroupCountHaving = RdfQuadJoinGroupAggregateHaving;\n\nexport interface RdfPatternQuery {\n pattern: QuintPattern;\n options?: QueryOptions;\n}\n\nexport interface RdfQueryVariable {\n variable: string;\n}\n\nexport type RdfQueryTermPattern = TermMatch | RdfQueryVariable;\n\nexport interface RdfQueryPattern {\n graph?: RdfQueryTermPattern;\n subject?: RdfQueryTermPattern;\n predicate?: RdfQueryTermPattern;\n object?: RdfQueryTermPattern;\n}\n\nexport interface RdfConstructTemplate {\n subject: RdfQueryTermPattern;\n predicate: RdfQueryTermPattern;\n object: RdfQueryTermPattern;\n}\n\nexport interface RdfQueryOrder {\n variable: string;\n direction?: 'asc' | 'desc';\n}\n\nexport type RdfQueryAggregateType = 'count' | 'sum' | 'avg' | 'min' | 'max';\n\nexport interface RdfQueryAggregate {\n type: RdfQueryAggregateType;\n as: string;\n variable?: string;\n distinct?: boolean;\n distinctVariables?: string[];\n}\n\nexport type RdfBindExpression =\n | { type: 'term'; term: Term }\n | { type: 'variable'; variable: string }\n | { type: 'stringValue'; variable: string }\n | { type: 'stringLength'; variable: string }\n | { type: 'lowerCase'; expression: RdfBindExpression }\n | { type: 'upperCase'; expression: RdfBindExpression }\n | { type: 'coalesce'; expressions: RdfBindExpression[] }\n | { type: 'if'; condition: RdfQueryFilter[]; then: RdfBindExpression; else: RdfBindExpression }\n | {\n type: 'substring';\n expression: RdfBindExpression;\n start: RdfBindExpression;\n length?: RdfBindExpression;\n }\n | { type: 'concat'; expressions: RdfBindExpression[] }\n | { type: 'iri'; expression: RdfBindExpression; base: string }\n | { type: 'strdt'; lexical: RdfBindExpression; datatype: RdfBindExpression }\n | { type: 'strlang'; lexical: RdfBindExpression; language: RdfBindExpression };\n\nexport interface RdfQueryBind {\n variable: string;\n expression: RdfBindExpression;\n}\n\nexport type RdfQueryFilterOperator =\n | '$eq'\n | '$ne'\n | '$gt'\n | '$gte'\n | '$lt'\n | '$lte'\n | '$in'\n | '$notIn'\n | '$startsWith'\n | '$contains'\n | '$endsWith'\n | '$regex'\n | '$notStartsWith'\n | '$notContains'\n | '$notEndsWith'\n | '$notRegex'\n | '$bound'\n | '$termType'\n | '$notTermType'\n | '$sameTerm'\n | '$notSameTerm'\n | '$lang'\n | '$notLang'\n | '$langIn'\n | '$notLangIn'\n | '$langMatches'\n | '$notLangMatches'\n | '$datatype'\n | '$notDatatype'\n | '$datatypeIn'\n | '$notDatatypeIn';\n\nexport type RdfQueryFilterValue = Term | string | number | boolean;\n\nexport interface RdfQueryFilter {\n variable: string;\n operator: RdfQueryFilterOperator;\n operand?: 'stringLength' | 'stringValue' | 'lowerStringValue' | 'upperStringValue';\n value?: RdfQueryFilterValue;\n values?: RdfQueryFilterValue[];\n variable2?: string;\n flags?: string;\n source?: 'filter' | 'values';\n}\n\nexport interface RdfValuesBindingSource {\n variables: string[];\n rows: RdfBindingRow[];\n}\n\nexport interface RdfSearchScope {\n workspace?: string;\n sourcePrefix?: string;\n}\n\nexport interface RdfTextSearchPattern {\n query: string;\n scope?: RdfSearchScope;\n limit?: number;\n offset?: number;\n orderBy?: RdfTextSearchOrder[];\n source?: string;\n chunk?: string;\n content?: string;\n heading?: string;\n score?: string;\n workspace?: string;\n localPath?: string;\n contentType?: string;\n ordinal?: string;\n level?: string;\n startOffset?: string;\n endOffset?: string;\n}\n\nexport type RdfVectorDistanceMetric = 'cosine' | 'dot' | 'euclidean';\n\nexport type RdfSearchOrderDirection = 'asc' | 'desc';\nexport type RdfTextSearchOrderField = 'score' | 'source' | 'localPath' | 'ordinal' | 'startOffset' | 'endOffset';\nexport type RdfVectorSearchOrderField = RdfTextSearchOrderField | 'distance';\n\nexport interface RdfTextSearchOrder {\n field: RdfTextSearchOrderField;\n direction?: RdfSearchOrderDirection;\n}\n\nexport interface RdfVectorSearchOrder {\n field: RdfVectorSearchOrderField;\n direction?: RdfSearchOrderDirection;\n}\n\nexport interface RdfVectorSearchPattern {\n embedding: number[];\n metric?: RdfVectorDistanceMetric;\n vectorModel?: string;\n scope?: RdfSearchScope;\n limit?: number;\n offset?: number;\n threshold?: number;\n orderBy?: RdfVectorSearchOrder[];\n source?: string;\n chunk?: string;\n content?: string;\n heading?: string;\n score?: string;\n distance?: string;\n workspace?: string;\n localPath?: string;\n contentType?: string;\n ordinal?: string;\n level?: string;\n startOffset?: string;\n endOffset?: string;\n model?: string;\n}\n\nexport interface RdfLocalQuery {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n textSearch?: RdfTextSearchPattern[];\n vectorSearch?: RdfVectorSearchPattern[];\n unions?: RdfUnionQueryGroup[];\n minus?: RdfMinusQueryGroup[];\n exists?: RdfExistsQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n having?: RdfQueryFilter[];\n select?: string[];\n distinct?: boolean;\n groupBy?: string[];\n aggregates?: RdfQueryAggregate[];\n aggregate?: RdfQueryAggregate;\n orderBy?: RdfQueryOrder[];\n limit?: number;\n offset?: number;\n}\n\nexport interface RdfUnionQueryBranch {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport interface RdfUnionQueryGroup {\n branches: RdfUnionQueryBranch[];\n}\n\nexport interface RdfMinusQueryGroup {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport interface RdfExistsQueryGroup {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport interface RdfOptionalQueryGroup {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n minus?: RdfMinusQueryGroup[];\n exists?: RdfExistsQueryGroup[];\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport type RdfBindingRow = Record<string, Term>;\n\nexport interface RdfQuadJoinScanResult {\n bindings: RdfBindingRow[];\n metrics: RdfIndexMetrics;\n}\n\nexport interface RdfQuadJoinGroupAggregateOptions {\n groupBy: string[];\n aggregates: RdfQueryAggregate[];\n having?: RdfQuadJoinGroupAggregateHaving[];\n orderBy?: RdfQuadJoinOrder[];\n limit?: number;\n offset?: number;\n}\n\nexport type RdfQuadJoinGroupCountOptions = RdfQuadJoinGroupAggregateOptions;\n\nexport interface RdfLocalQueryMetrics {\n engine: 'solid-rdf';\n plan: string[];\n scannedRows: number;\n joinedRows: number;\n returnedRows: number;\n durationMs: number;\n indexChoices: string[];\n cardinalityEstimates?: number;\n distinctCardinalityEstimates?: number;\n searchCardinalityEstimates?: number;\n filtersApplied: number;\n filtersPushedDown: number;\n}\n\nexport interface RdfLocalQueryResult {\n bindings: RdfBindingRow[];\n count?: number;\n metrics: RdfLocalQueryMetrics;\n}\n\nexport interface RdfEngineLike {\n open(): void | Promise<void>;\n close(): void | Promise<void>;\n put(quads: Quad | Quad[], options?: RdfIndexPutOptions): void | Promise<void>;\n replaceSource(quads: Quad[], source: RdfSourceInput): void | Promise<void>;\n deleteSource(source: string): number | Promise<number>;\n delete(pattern: QuintPattern): number | Promise<number>;\n applyDelta(\n deletes: QuintPattern[],\n inserts: Quad[],\n options?: RdfIndexPutOptions,\n ): { deletedRows: number; insertedRows: number } | Promise<{ deletedRows: number; insertedRows: number }>;\n scan(query: RdfPatternQuery): RdfQuadIndexScanResult | Promise<RdfQuadIndexScanResult>;\n query(query: RdfLocalQuery): RdfLocalQueryResult | Promise<RdfLocalQueryResult>;\n refreshDerivedIndexes(): RdfDerivedIndexRefreshResult | Promise<RdfDerivedIndexRefreshResult>;\n storageStats(): RdfEngineStorageStats | Promise<RdfEngineStorageStats>;\n}\n\nexport type RdfQueryPatternKey = TermName;\n\nexport interface RdfShadowDiff {\n missingFromPrimary: string[];\n extraInPrimary: string[];\n}\n\nexport interface RdfShadowBackfillOptions {\n clear?: boolean;\n batchSize?: number;\n}\n\nexport interface RdfShadowBackfillResult {\n scannedRows: number;\n indexedRows: number;\n batchCount: number;\n durationMs: number;\n}\n\nexport interface RdfShadowScanResult {\n matched: boolean;\n orderedMatch: boolean;\n primary: Quad[];\n compatibility: Quad[];\n diff: RdfShadowDiff;\n metrics: RdfIndexMetrics;\n}\n\nexport interface RdfTextIndexOptions {\n path: string;\n}\n\nexport interface RdfTextSourceInput {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n}\n\nexport interface RdfTextChunkInput {\n chunkKey: string;\n ordinal: number;\n level: number;\n heading?: string;\n path?: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n}\n\nexport interface RdfTextChunkRow {\n id: number;\n source_id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n chunk_key: string;\n ordinal: number;\n level: number;\n heading: string | null;\n path: string | null;\n content: string;\n start_offset: number;\n end_offset: number;\n normalized_text: string;\n token_count: number;\n updated_at: string;\n}\n\nexport interface RdfTextSearchOptions {\n query: string;\n source?: string;\n workspace?: string;\n sourcePrefix?: string;\n limit?: number;\n offset?: number;\n orderBy?: RdfTextSearchOrder[];\n}\n\nexport interface RdfTextSearchResult {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n chunkKey: string;\n ordinal: number;\n level: number;\n heading?: string;\n path: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n score: number;\n}\n\nexport interface RdfSearchCardinalityEstimate {\n rows: number;\n source: 'text-normalized-scan' | 'text-term-posting' | 'vector-candidate-count' | 'vector-component-score';\n indexChoice: string;\n}\n\nexport interface RdfTextIndexStats {\n sourceCount: number;\n chunkCount: number;\n databaseBytes: number;\n termDocumentFrequency: RdfTextTermDocumentFrequency[];\n}\n\nexport interface RdfTextTermDocumentFrequency {\n term: string;\n sourceCount: number;\n chunkCount: number;\n totalOccurrences: number;\n}\n\nexport interface RdfVectorIndexOptions {\n path: string;\n defaultMetric?: RdfVectorDistanceMetric;\n}\n\nexport interface RdfVectorSourceInput {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n}\n\nexport interface RdfVectorChunkInput {\n chunkKey: string;\n ordinal: number;\n level: number;\n embedding: number[];\n model?: string;\n heading?: string;\n path?: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n}\n\nexport interface RdfVectorChunkRow {\n id: number;\n source_id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n chunk_key: string;\n ordinal: number;\n level: number;\n heading: string | null;\n path: string | null;\n content: string;\n start_offset: number;\n end_offset: number;\n embedding_json: string;\n dimensions: number;\n magnitude: number;\n model: string;\n updated_at: string;\n}\n\nexport interface RdfVectorSearchOptions {\n embedding: number[];\n metric?: RdfVectorDistanceMetric;\n model?: string;\n source?: string;\n workspace?: string;\n sourcePrefix?: string;\n limit?: number;\n offset?: number;\n threshold?: number;\n orderBy?: RdfVectorSearchOrder[];\n}\n\nexport interface RdfVectorSearchResult {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n chunkKey: string;\n ordinal: number;\n level: number;\n heading?: string;\n path: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n embedding: number[];\n model?: string;\n score: number;\n distance: number;\n}\n\nexport interface RdfVectorIndexStats {\n sourceCount: number;\n chunkCount: number;\n componentCount: number;\n databaseBytes: number;\n modelDistribution: RdfVectorModelDistribution[];\n}\n\nexport interface RdfVectorModelDistribution {\n model: string;\n dimensions: number;\n sourceCount: number;\n chunkCount: number;\n minMagnitude: number;\n maxMagnitude: number;\n averageMagnitude: number;\n}\n\nexport interface RdfTermSelection {\n sql: string;\n params: unknown[];\n indexHint: string;\n}\n\nexport interface RdfTermLookup {\n id: number;\n term: Term;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/storage/rdf/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Quad, Term } from '@rdfjs/types';\nimport type { QueryOptions, QuintPattern, TermMatch, TermName } from '../quint/types';\n\nexport type RdfTermKind = 'iri' | 'literal' | 'blank' | 'default_graph';\n\nexport interface RdfTermRow {\n id: number;\n kind: RdfTermKind;\n value: string;\n value_head: string;\n datatype_id: number | null;\n lang: string | null;\n hash: string;\n normalized_text: string | null;\n numeric_value: number | null;\n created_at: string;\n}\n\nexport interface RdfSourceInput {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n}\n\nexport interface RdfSourceRow {\n id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n last_indexed_at: string | null;\n source_version: string | null;\n}\n\nexport interface RdfQuadRow {\n graph_id: number;\n subject_id: number;\n predicate_id: number;\n object_id: number;\n source_file_id: number | null;\n source_line_no: number | null;\n}\n\nexport interface RdfQuadIndexOptions {\n path: string;\n debug?: boolean;\n}\n\nexport type RdfDerivedIndexProfile = 'baseline' | 'rdf3x';\n\nexport interface RdfShadowAutoBackfillOptions {\n enabled?: boolean;\n clear?: boolean;\n batchSize?: number;\n}\n\nexport interface RdfIndexPutOptions {\n source?: RdfSourceInput;\n sourceLineNo?: number;\n}\n\nexport interface RdfIndexMetrics {\n engine: 'solid-rdf';\n indexChoice: string;\n /** Rows matched before LIMIT/OFFSET are applied. */\n matchedRows: number;\n returnedRows: number;\n durationMs: number;\n queryPlan?: string[];\n}\n\nexport interface RdfCardinalityEstimate {\n rows: number;\n source:\n | 'exact-count'\n | 'cached-exact-count'\n | 'exact-distinct-count'\n | 'cached-exact-distinct-count'\n | 'exact-distinct-tuple-count'\n | 'cached-exact-distinct-tuple-count';\n indexChoice: string;\n}\n\nexport interface RdfIndexStats {\n termCount: number;\n quadCount: number;\n sourceCount: number;\n graphCount: number;\n databaseBytes: number;\n tableBytes: number;\n indexBytes: number;\n spaceObjects: RdfIndexSpaceObject[];\n serializedTermTextBytes: number;\n literalDatatypeDistribution: RdfLiteralDatatypeDistribution[];\n cardinalityDistributions: RdfCardinalityDistributions;\n}\n\nexport interface RdfEngineStorageStats {\n derivedIndexProfile: RdfDerivedIndexProfile;\n facts: RdfIndexStats;\n rdf3x?: {\n stats: Rdf3xIndexStats;\n syncedWithFacts: boolean;\n };\n factsBytes: number;\n derivedBytes: number;\n totalBytes: number;\n derivedToFactsRatio: number;\n totalToFactsRatio: number;\n}\n\nexport interface RdfDerivedIndexRefreshResult {\n derivedIndexProfile: RdfDerivedIndexProfile;\n factsDataVersion: number;\n rdf3x?: {\n refreshed: boolean;\n previousFactsDataVersion: number;\n factsDataVersion: number;\n syncedWithFacts: boolean;\n rebuild?: Rdf3xRebuildResult;\n };\n}\n\nexport interface RdfIndexSpaceObject {\n name: string;\n kind: 'table' | 'index' | 'internal' | 'unknown';\n tableName?: string;\n bytes: number;\n pages: number;\n estimated?: boolean;\n}\n\nexport interface RdfLiteralDatatypeDistribution {\n datatype: string;\n termCount: number;\n objectQuadCount: number;\n}\n\nexport interface RdfCardinalityTerm {\n value: string;\n kind: RdfTermKind;\n datatype?: string;\n language?: string;\n}\n\nexport interface RdfGraphCardinality {\n graph: RdfCardinalityTerm;\n quadCount: number;\n distinctSubjects: number;\n distinctPredicates: number;\n distinctObjects: number;\n}\n\nexport interface RdfPredicateCardinality {\n predicate: RdfCardinalityTerm;\n quadCount: number;\n graphCount: number;\n distinctSubjects: number;\n distinctObjects: number;\n}\n\nexport interface RdfPredicateObjectCardinality {\n predicate: RdfCardinalityTerm;\n object: RdfCardinalityTerm;\n quadCount: number;\n graphCount: number;\n distinctSubjects: number;\n}\n\nexport interface RdfSubjectPredicateCardinality {\n subject: RdfCardinalityTerm;\n predicate: RdfCardinalityTerm;\n quadCount: number;\n graphCount: number;\n distinctObjects: number;\n}\n\nexport interface RdfCardinalityDistributions {\n graphs: RdfGraphCardinality[];\n predicates: RdfPredicateCardinality[];\n predicateObjects: RdfPredicateObjectCardinality[];\n subjectPredicates: RdfSubjectPredicateCardinality[];\n}\n\nexport interface RdfQuadIndexScanResult {\n quads: Quad[];\n metrics: RdfIndexMetrics;\n}\n\nexport type Rdf3xTermKey = 'subject' | 'predicate' | 'object';\nexport type Rdf3xPatternKey = 'graph' | Rdf3xTermKey;\nexport type Rdf3xPermutationName = 'SPO' | 'SOP' | 'PSO' | 'POS' | 'OSP' | 'OPS';\nexport type Rdf3xPairProjectionName = 'SP' | 'SO' | 'PS' | 'PO' | 'OS' | 'OP';\nexport type Rdf3xTermProjectionName = 'S' | 'P' | 'O';\n\nexport interface Rdf3xIndexOptions {\n path: string;\n debug?: boolean;\n}\n\nexport interface Rdf3xGraphPrefixPattern {\n $startsWith: string;\n}\n\nexport interface Rdf3xTermInPattern {\n $in: Term[];\n}\n\nexport interface Rdf3xTermNotInPattern {\n $notIn: Term[];\n}\n\nexport type Rdf3xTermTypePatternValue = 'iri' | 'blank' | 'literal' | 'numeric';\n\nexport interface Rdf3xTermMetadataPattern {\n $termType?: Rdf3xTermTypePatternValue;\n $language?: string;\n $notLanguage?: string;\n $langMatches?: string;\n $datatype?: Term;\n $notDatatype?: Term;\n}\n\nexport interface Rdf3xObjectRangePattern {\n $gt?: Term | string | number;\n $gte?: Term | string | number;\n $lt?: Term | string | number;\n $lte?: Term | string | number;\n}\n\nexport type Rdf3xNumericObjectRangePattern = Rdf3xObjectRangePattern;\n\nexport interface Rdf3xObjectTextSearchPattern {\n $contains?: string;\n $endsWith?: string;\n}\n\nexport interface Rdf3xObjectOperatorPattern extends Rdf3xObjectRangePattern, Rdf3xObjectTextSearchPattern, Rdf3xTermMetadataPattern {}\n\nexport interface Rdf3xTriplePattern {\n graph?: Term | Rdf3xGraphPrefixPattern | Rdf3xTermInPattern | Rdf3xTermNotInPattern | Rdf3xTermMetadataPattern;\n subject?: Term | Rdf3xTermInPattern | Rdf3xTermNotInPattern | Rdf3xTermMetadataPattern;\n predicate?: Term | Rdf3xTermInPattern | Rdf3xTermNotInPattern | Rdf3xTermMetadataPattern;\n object?: Term | Rdf3xObjectOperatorPattern | Rdf3xTermInPattern | Rdf3xTermNotInPattern;\n}\n\nexport interface Rdf3xTripleScanOptions {\n order?: Array<'graph' | 'subject' | 'predicate' | 'object'>;\n orderDirections?: Array<'asc' | 'desc'>;\n reverse?: boolean;\n limit?: number;\n offset?: number;\n}\n\nexport interface Rdf3xIndexMetrics {\n engine: 'solid-rdf3x';\n indexChoice: Rdf3xPermutationName | 'source-membership' | 'none';\n matchedRows: number;\n returnedRows: number;\n durationMs: number;\n queryPlan?: string[];\n}\n\nexport interface Rdf3xTripleScanResult {\n quads: Quad[];\n metrics: Rdf3xIndexMetrics;\n}\n\nexport interface Rdf3xCountResult {\n count: number;\n metrics: Rdf3xIndexMetrics;\n}\n\nexport interface Rdf3xJoinOptions {\n orderBy?: RdfQuadJoinOrder[];\n limit?: number;\n offset?: number;\n project?: string[];\n distinct?: boolean;\n countMatchedRows?: boolean;\n values?: RdfValuesBindingSource[];\n}\n\nexport interface Rdf3xJoinMetrics {\n engine: 'solid-rdf3x';\n indexChoice: string;\n matchedRows: number;\n returnedRows: number;\n durationMs: number;\n queryPlan?: string[];\n}\n\nexport interface Rdf3xJoinScanResult {\n bindings: RdfBindingRow[];\n metrics: Rdf3xJoinMetrics;\n}\n\nexport interface Rdf3xRebuildResult {\n scannedQuads: number;\n uniqueTriples: number;\n memberships: number;\n projectionRows: number;\n factsDataVersion: number;\n durationMs: number;\n}\n\nexport interface Rdf3xCardinalityEstimate {\n uniqueTriples: number;\n matchingQuads: number;\n source: 'projection-stat' | 'term-stat' | 'exact-triple' | 'exact-membership' | 'full-count';\n indexChoice: Rdf3xPermutationName | 'source-membership' | 'none';\n}\n\nexport interface Rdf3xIndexStats {\n uniqueTriples: number;\n membershipCount: number;\n graphCount: number;\n factsDataVersion: number;\n permutationRows: Record<Rdf3xPermutationName, number>;\n pairProjectionRows: Record<Rdf3xPairProjectionName, number>;\n termProjectionRows: Record<Rdf3xTermProjectionName, number>;\n databaseBytes: number;\n tableBytes: number;\n indexBytes: number;\n spaceObjects: RdfIndexSpaceObject[];\n}\n\nexport interface Rdf3xShadowBindingDiff {\n missingFromRdf3x: string[];\n extraInRdf3x: string[];\n}\n\nexport interface Rdf3xShadowQuadDiff {\n missingFromRdf3x: string[];\n extraInRdf3x: string[];\n}\n\nexport interface Rdf3xShadowScanResult {\n matched: boolean;\n orderedMatch: boolean;\n primary: Quad[];\n rdf3x: Quad[];\n diff: Rdf3xShadowQuadDiff;\n primaryMetrics: RdfIndexMetrics;\n rdf3xMetrics: Rdf3xIndexMetrics;\n rebuild: Rdf3xRebuildResult;\n}\n\nexport interface Rdf3xShadowJoinResult {\n matched: boolean;\n orderedMatch: boolean;\n primary: RdfBindingRow[];\n rdf3x: RdfBindingRow[];\n diff: Rdf3xShadowBindingDiff;\n primaryMetrics: RdfIndexMetrics;\n rdf3xMetrics: Rdf3xJoinMetrics;\n rebuild: Rdf3xRebuildResult;\n}\n\nexport type RdfQuadTupleConstraint = Partial<Record<RdfQueryPatternKey, Term>>;\n\nexport interface RdfQuadTupleConstraintSource {\n columns: RdfQueryPatternKey[];\n rows: RdfQuadTupleConstraint[];\n}\n\nexport interface RdfQuadJoinPattern {\n pattern: QuintPattern;\n variables: Partial<Record<RdfQueryPatternKey, string>>;\n}\n\nexport interface RdfQuadJoinOrder {\n variable: string;\n direction?: 'asc' | 'desc';\n}\n\nexport interface RdfQuadScanOptions extends QueryOptions {\n orderDirections?: Array<'asc' | 'desc'>;\n}\n\nexport interface RdfQuadJoinOptions {\n orderBy?: RdfQuadJoinOrder[];\n limit?: number;\n offset?: number;\n project?: string[];\n distinct?: boolean;\n countMatchedRows?: boolean;\n}\n\nexport interface RdfQuadJoinAggregateOptions {\n aggregates: RdfQueryAggregate[];\n}\n\nexport type RdfQuadJoinCountOptions = RdfQuadJoinAggregateOptions;\n\nexport interface RdfQuadJoinGroupAggregateHaving {\n aggregate: string;\n operator: '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte';\n value: number;\n}\n\nexport type RdfQuadJoinGroupCountHaving = RdfQuadJoinGroupAggregateHaving;\n\nexport interface RdfPatternQuery {\n pattern: QuintPattern;\n options?: QueryOptions;\n}\n\nexport interface RdfQueryVariable {\n variable: string;\n}\n\nexport type RdfQueryTermPattern = TermMatch | RdfQueryVariable;\n\nexport interface RdfQueryPattern {\n graph?: RdfQueryTermPattern;\n subject?: RdfQueryTermPattern;\n predicate?: RdfQueryTermPattern;\n object?: RdfQueryTermPattern;\n}\n\nexport interface RdfConstructTemplate {\n subject: RdfQueryTermPattern;\n predicate: RdfQueryTermPattern;\n object: RdfQueryTermPattern;\n}\n\nexport interface RdfQueryOrder {\n variable: string;\n direction?: 'asc' | 'desc';\n}\n\nexport type RdfQueryAggregateType = 'count' | 'sum' | 'avg' | 'min' | 'max';\n\nexport interface RdfQueryAggregate {\n type: RdfQueryAggregateType;\n as: string;\n variable?: string;\n distinct?: boolean;\n distinctVariables?: string[];\n}\n\nexport type RdfBindExpression =\n | { type: 'term'; term: Term }\n | { type: 'variable'; variable: string }\n | { type: 'stringValue'; variable: string }\n | { type: 'stringLength'; variable: string }\n | { type: 'lowerCase'; expression: RdfBindExpression }\n | { type: 'upperCase'; expression: RdfBindExpression }\n | { type: 'coalesce'; expressions: RdfBindExpression[] }\n | { type: 'if'; condition: RdfQueryFilter[]; then: RdfBindExpression; else: RdfBindExpression }\n | {\n type: 'substring';\n expression: RdfBindExpression;\n start: RdfBindExpression;\n length?: RdfBindExpression;\n }\n | { type: 'concat'; expressions: RdfBindExpression[] }\n | { type: 'iri'; expression: RdfBindExpression; base: string }\n | { type: 'strdt'; lexical: RdfBindExpression; datatype: RdfBindExpression }\n | { type: 'strlang'; lexical: RdfBindExpression; language: RdfBindExpression };\n\nexport interface RdfQueryBind {\n variable: string;\n expression: RdfBindExpression;\n}\n\nexport type RdfQueryFilterOperator =\n | '$eq'\n | '$ne'\n | '$gt'\n | '$gte'\n | '$lt'\n | '$lte'\n | '$in'\n | '$notIn'\n | '$startsWith'\n | '$contains'\n | '$endsWith'\n | '$regex'\n | '$notStartsWith'\n | '$notContains'\n | '$notEndsWith'\n | '$notRegex'\n | '$bound'\n | '$termType'\n | '$notTermType'\n | '$sameTerm'\n | '$notSameTerm'\n | '$lang'\n | '$notLang'\n | '$langIn'\n | '$notLangIn'\n | '$langMatches'\n | '$notLangMatches'\n | '$datatype'\n | '$notDatatype'\n | '$datatypeIn'\n | '$notDatatypeIn';\n\nexport type RdfQueryFilterValue = Term | string | number | boolean;\n\nexport interface RdfQueryFilter {\n variable: string;\n operator: RdfQueryFilterOperator;\n operand?: 'stringLength' | 'stringValue' | 'lowerStringValue' | 'upperStringValue';\n value?: RdfQueryFilterValue;\n values?: RdfQueryFilterValue[];\n variable2?: string;\n flags?: string;\n source?: 'filter' | 'values';\n}\n\nexport interface RdfValuesBindingSource {\n variables: string[];\n rows: RdfBindingRow[];\n}\n\nexport interface RdfSearchScope {\n workspace?: string;\n sourcePrefix?: string;\n}\n\nexport interface RdfTextSearchPattern {\n query: string;\n scope?: RdfSearchScope;\n limit?: number;\n offset?: number;\n orderBy?: RdfTextSearchOrder[];\n source?: string;\n chunk?: string;\n content?: string;\n heading?: string;\n score?: string;\n workspace?: string;\n localPath?: string;\n contentType?: string;\n ordinal?: string;\n level?: string;\n startOffset?: string;\n endOffset?: string;\n}\n\nexport type RdfVectorDistanceMetric = 'cosine' | 'dot' | 'euclidean';\n\nexport type RdfSearchOrderDirection = 'asc' | 'desc';\nexport type RdfTextSearchOrderField = 'score' | 'source' | 'localPath' | 'ordinal' | 'startOffset' | 'endOffset';\nexport type RdfVectorSearchOrderField = RdfTextSearchOrderField | 'distance';\n\nexport interface RdfTextSearchOrder {\n field: RdfTextSearchOrderField;\n direction?: RdfSearchOrderDirection;\n}\n\nexport interface RdfVectorSearchOrder {\n field: RdfVectorSearchOrderField;\n direction?: RdfSearchOrderDirection;\n}\n\nexport interface RdfVectorSearchPattern {\n embedding: number[];\n metric?: RdfVectorDistanceMetric;\n vectorModel?: string;\n scope?: RdfSearchScope;\n limit?: number;\n offset?: number;\n threshold?: number;\n orderBy?: RdfVectorSearchOrder[];\n source?: string;\n chunk?: string;\n content?: string;\n heading?: string;\n score?: string;\n distance?: string;\n workspace?: string;\n localPath?: string;\n contentType?: string;\n ordinal?: string;\n level?: string;\n startOffset?: string;\n endOffset?: string;\n model?: string;\n}\n\nexport interface RdfQuery {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n textSearch?: RdfTextSearchPattern[];\n vectorSearch?: RdfVectorSearchPattern[];\n unions?: RdfUnionQueryGroup[];\n minus?: RdfMinusQueryGroup[];\n exists?: RdfExistsQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n having?: RdfQueryFilter[];\n select?: string[];\n distinct?: boolean;\n groupBy?: string[];\n aggregates?: RdfQueryAggregate[];\n aggregate?: RdfQueryAggregate;\n orderBy?: RdfQueryOrder[];\n limit?: number;\n offset?: number;\n}\n\nexport interface RdfUnionQueryBranch {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport interface RdfUnionQueryGroup {\n branches: RdfUnionQueryBranch[];\n}\n\nexport interface RdfMinusQueryGroup {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport interface RdfExistsQueryGroup {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport interface RdfOptionalQueryGroup {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n unions?: RdfUnionQueryGroup[];\n optional?: Array<RdfQueryPattern[] | RdfOptionalQueryGroup>;\n minus?: RdfMinusQueryGroup[];\n exists?: RdfExistsQueryGroup[];\n binds?: RdfQueryBind[];\n filters?: RdfQueryFilter[];\n}\n\nexport type RdfBindingRow = Record<string, Term>;\n\nexport interface RdfQuadJoinScanResult {\n bindings: RdfBindingRow[];\n metrics: RdfIndexMetrics;\n}\n\nexport interface RdfQuadJoinGroupAggregateOptions {\n groupBy: string[];\n aggregates: RdfQueryAggregate[];\n having?: RdfQuadJoinGroupAggregateHaving[];\n orderBy?: RdfQuadJoinOrder[];\n limit?: number;\n offset?: number;\n}\n\nexport type RdfQuadJoinGroupCountOptions = RdfQuadJoinGroupAggregateOptions;\n\nexport interface RdfQueryMetrics {\n engine: 'solid-rdf';\n plan: string[];\n scannedRows: number;\n joinedRows: number;\n returnedRows: number;\n durationMs: number;\n indexChoices: string[];\n cardinalityEstimates?: number;\n distinctCardinalityEstimates?: number;\n searchCardinalityEstimates?: number;\n filtersApplied: number;\n filtersPushedDown: number;\n}\n\nexport interface RdfQueryResult {\n bindings: RdfBindingRow[];\n count?: number;\n metrics: RdfQueryMetrics;\n}\n\nexport interface RdfEngineLike {\n open(): void | Promise<void>;\n close(): void | Promise<void>;\n put(quads: Quad | Quad[], options?: RdfIndexPutOptions): void | Promise<void>;\n replaceSource(quads: Quad[], source: RdfSourceInput): void | Promise<void>;\n deleteSource(source: string): number | Promise<number>;\n delete(pattern: QuintPattern): number | Promise<number>;\n applyDelta(\n deletes: QuintPattern[],\n inserts: Quad[],\n options?: RdfIndexPutOptions,\n ): { deletedRows: number; insertedRows: number } | Promise<{ deletedRows: number; insertedRows: number }>;\n scan(query: RdfPatternQuery): RdfQuadIndexScanResult | Promise<RdfQuadIndexScanResult>;\n query(query: RdfQuery): RdfQueryResult | Promise<RdfQueryResult>;\n refreshDerivedIndexes(): RdfDerivedIndexRefreshResult | Promise<RdfDerivedIndexRefreshResult>;\n storageStats(): RdfEngineStorageStats | Promise<RdfEngineStorageStats>;\n}\n\nexport type RdfQueryPatternKey = TermName;\n\nexport interface RdfShadowDiff {\n missingFromPrimary: string[];\n extraInPrimary: string[];\n}\n\nexport interface RdfShadowBackfillOptions {\n clear?: boolean;\n batchSize?: number;\n}\n\nexport interface RdfShadowBackfillResult {\n scannedRows: number;\n indexedRows: number;\n batchCount: number;\n durationMs: number;\n}\n\nexport interface RdfShadowScanResult {\n matched: boolean;\n orderedMatch: boolean;\n primary: Quad[];\n compatibility: Quad[];\n diff: RdfShadowDiff;\n metrics: RdfIndexMetrics;\n}\n\nexport interface RdfTextIndexOptions {\n path: string;\n}\n\nexport interface RdfTextSourceInput {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n}\n\nexport interface RdfTextChunkInput {\n chunkKey: string;\n ordinal: number;\n level: number;\n heading?: string;\n path?: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n}\n\nexport interface RdfTextChunkRow {\n id: number;\n source_id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n chunk_key: string;\n ordinal: number;\n level: number;\n heading: string | null;\n path: string | null;\n content: string;\n start_offset: number;\n end_offset: number;\n normalized_text: string;\n token_count: number;\n updated_at: string;\n}\n\nexport interface RdfTextSearchOptions {\n query: string;\n source?: string;\n workspace?: string;\n sourcePrefix?: string;\n limit?: number;\n offset?: number;\n orderBy?: RdfTextSearchOrder[];\n}\n\nexport interface RdfTextSearchResult {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n chunkKey: string;\n ordinal: number;\n level: number;\n heading?: string;\n path: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n score: number;\n}\n\nexport interface RdfSearchCardinalityEstimate {\n rows: number;\n source: 'text-normalized-scan' | 'text-term-posting' | 'vector-candidate-count' | 'vector-component-score';\n indexChoice: string;\n}\n\nexport interface RdfTextIndexStats {\n sourceCount: number;\n chunkCount: number;\n databaseBytes: number;\n termDocumentFrequency: RdfTextTermDocumentFrequency[];\n}\n\nexport interface RdfTextTermDocumentFrequency {\n term: string;\n sourceCount: number;\n chunkCount: number;\n totalOccurrences: number;\n}\n\nexport interface RdfVectorIndexOptions {\n path: string;\n defaultMetric?: RdfVectorDistanceMetric;\n}\n\nexport interface RdfVectorSourceInput {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n}\n\nexport interface RdfVectorChunkInput {\n chunkKey: string;\n ordinal: number;\n level: number;\n embedding: number[];\n model?: string;\n heading?: string;\n path?: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n}\n\nexport interface RdfVectorChunkRow {\n id: number;\n source_id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n chunk_key: string;\n ordinal: number;\n level: number;\n heading: string | null;\n path: string | null;\n content: string;\n start_offset: number;\n end_offset: number;\n embedding_json: string;\n dimensions: number;\n magnitude: number;\n model: string;\n updated_at: string;\n}\n\nexport interface RdfVectorSearchOptions {\n embedding: number[];\n metric?: RdfVectorDistanceMetric;\n model?: string;\n source?: string;\n workspace?: string;\n sourcePrefix?: string;\n limit?: number;\n offset?: number;\n threshold?: number;\n orderBy?: RdfVectorSearchOrder[];\n}\n\nexport interface RdfVectorSearchResult {\n source: string;\n workspace: string;\n localPath?: string;\n contentType?: string;\n sourceVersion?: string;\n sourceHash?: string;\n chunkKey: string;\n ordinal: number;\n level: number;\n heading?: string;\n path: string[];\n content: string;\n startOffset: number;\n endOffset: number;\n embedding: number[];\n model?: string;\n score: number;\n distance: number;\n}\n\nexport interface RdfVectorIndexStats {\n sourceCount: number;\n chunkCount: number;\n componentCount: number;\n databaseBytes: number;\n modelDistribution: RdfVectorModelDistribution[];\n}\n\nexport interface RdfVectorModelDistribution {\n model: string;\n dimensions: number;\n sourceCount: number;\n chunkCount: number;\n minMagnitude: number;\n maxMagnitude: number;\n averageMagnitude: number;\n}\n\nexport interface RdfTermSelection {\n sql: string;\n params: unknown[];\n indexHint: string;\n}\n\nexport interface RdfTermLookup {\n id: number;\n term: Term;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@undefineds.co/xpod",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.31",
|
|
4
4
|
"description": "Xpod is an extended Community Solid Server, offering rich-feature, production-level Solid Pod and identity management.",
|
|
5
5
|
"repository": "https://github.com/undefinedsco/xpod",
|
|
6
6
|
"author": "developer@undefineds.co",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# ACR for the public profile container
|
|
2
|
+
@prefix acl: <http://www.w3.org/ns/auth/acl#>.
|
|
3
|
+
@prefix acp: <http://www.w3.org/ns/solid/acp#>.
|
|
4
|
+
|
|
5
|
+
# The profile container must be readable so clients can discover the
|
|
6
|
+
# profile document through normal Solid container reads.
|
|
7
|
+
<#profile>
|
|
8
|
+
a acp:AccessControlResource;
|
|
9
|
+
acp:resource <./>;
|
|
10
|
+
acp:accessControl <#publicReadAccess>.
|
|
11
|
+
|
|
12
|
+
<#publicReadAccess>
|
|
13
|
+
a acp:AccessControl;
|
|
14
|
+
acp:apply [
|
|
15
|
+
a acp:Policy;
|
|
16
|
+
acp:allow acl:Read;
|
|
17
|
+
acp:anyOf [
|
|
18
|
+
a acp:Matcher;
|
|
19
|
+
acp:agent acp:PublicAgent
|
|
20
|
+
]
|
|
21
|
+
].
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# ACL resource for the public profile container
|
|
2
|
+
@prefix acl: <http://www.w3.org/ns/auth/acl#>.
|
|
3
|
+
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
|
4
|
+
|
|
5
|
+
# The profile container must be readable so clients can discover the
|
|
6
|
+
# profile document through normal Solid container reads.
|
|
7
|
+
<#public>
|
|
8
|
+
a acl:Authorization;
|
|
9
|
+
acl:agentClass foaf:Agent;
|
|
10
|
+
acl:accessTo <./>;
|
|
11
|
+
acl:mode acl:Read.
|
|
12
|
+
|
|
13
|
+
# The owner has full access to the profile container.
|
|
14
|
+
<#owner>
|
|
15
|
+
a acl:Authorization;
|
|
16
|
+
acl:agent <{{webId}}>;
|
|
17
|
+
acl:accessTo <./>;
|
|
18
|
+
acl:mode acl:Read, acl:Write, acl:Control.
|