@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.
Files changed (36) hide show
  1. package/config/cli.json +8 -0
  2. package/dist/authorization/PodAuthorizationResources.d.ts +1 -0
  3. package/dist/authorization/PodAuthorizationResources.js +36 -4
  4. package/dist/authorization/PodAuthorizationResources.js.map +1 -1
  5. package/dist/provision/LocalPodProvisioningService.js +2 -0
  6. package/dist/provision/LocalPodProvisioningService.js.map +1 -1
  7. package/dist/provision/ProvisionPodCreator.js +16 -0
  8. package/dist/provision/ProvisionPodCreator.js.map +1 -1
  9. package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
  10. package/dist/storage/rdf/PostgresRdfEngine.d.ts +12 -15
  11. package/dist/storage/rdf/PostgresRdfEngine.js +1040 -150
  12. package/dist/storage/rdf/PostgresRdfEngine.js.map +1 -1
  13. package/dist/storage/rdf/PostgresRdfEngine.jsonld +40 -52
  14. package/dist/storage/rdf/{RdfLocalQueryEngine.d.ts → RdfQueryExecutor.d.ts} +3 -3
  15. package/dist/storage/rdf/{RdfLocalQueryEngine.js → RdfQueryExecutor.js} +9 -9
  16. package/dist/storage/rdf/RdfQueryExecutor.js.map +1 -0
  17. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +5 -5
  18. package/dist/storage/rdf/RdfSparqlAdapter.js +27 -27
  19. package/dist/storage/rdf/RdfSparqlAdapter.js.map +1 -1
  20. package/dist/storage/rdf/SolidRdfEngine.d.ts +2 -5
  21. package/dist/storage/rdf/SolidRdfEngine.js +6 -38
  22. package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
  23. package/dist/storage/rdf/SolidRdfEngine.jsonld +0 -12
  24. package/dist/storage/rdf/SolidRdfSparqlEngine.js.map +1 -1
  25. package/dist/storage/rdf/index.d.ts +3 -3
  26. package/dist/storage/rdf/index.js +6 -6
  27. package/dist/storage/rdf/index.js.map +1 -1
  28. package/dist/storage/rdf/models-benchmark.d.ts +9 -9
  29. package/dist/storage/rdf/models-benchmark.js +23 -23
  30. package/dist/storage/rdf/models-benchmark.js.map +1 -1
  31. package/dist/storage/rdf/types.d.ts +5 -5
  32. package/dist/storage/rdf/types.js.map +1 -1
  33. package/package.json +1 -1
  34. package/templates/pod/acp/profile/.acr +21 -0
  35. package/templates/pod/wac/profile/.acl.hbs +18 -0
  36. 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 RdfLocalQuery {
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 RdfLocalQueryMetrics {
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 RdfLocalQueryResult {
584
+ export interface RdfQueryResult {
585
585
  bindings: RdfBindingRow[];
586
586
  count?: number;
587
- metrics: RdfLocalQueryMetrics;
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: RdfLocalQuery): RdfLocalQueryResult | Promise<RdfLocalQueryResult>;
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.27",
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.