UNPKG

@comake/skl-js-engine

Version:

Standard Knowledge Language Javascript Engine

97 lines (96 loc) 3.66 kB
import type { Variable } from '@rdfjs/types'; import type { Triple, Expression, OperationExpression, Ordering, ValuesPattern, Pattern, ConstructQuery, SelectQuery } from 'sparqljs'; import type { FindOptionsOrder, FindOptionsRelations, FindOptionsSelect, FindOptionsWhere, SubQuery } from '../../FindOptionsTypes'; import type { GroupByOptions } from '../../GroupOptionTypes'; export interface NonGraphWhereQueryData { values: ValuesPattern[]; triples: Triple[]; filters: OperationExpression[]; patterns?: Pattern[]; binds?: Pattern[]; } export interface WhereQueryData extends NonGraphWhereQueryData { graphValues: ValuesPattern[]; graphTriples: Triple[]; graphFilters: OperationExpression[]; serviceTriples?: Record<string, Triple[]>; } export interface RelationsQueryData { patterns: Pattern[]; selectionTriples: Triple[]; } export interface OrderQueryData { triples: Triple[]; filters: OperationExpression[]; orders: Ordering[]; groupByParent?: boolean; patterns?: Pattern[]; } export interface EntitySelectQueryData { where: Pattern[]; orders: Ordering[]; graphWhere: Pattern[]; graphSelectionTriples: Triple[]; group?: Variable; selectVariables: { variable: Variable; expression: Expression; }[]; } export interface SparqlQueryBuilderOptions { where?: FindOptionsWhere; select?: FindOptionsSelect; order?: FindOptionsOrder; relations?: FindOptionsRelations; subQueries?: SubQuery[]; } export declare class SparqlQueryBuilder { private readonly variableGenerator; constructor(); buildEntitySelectPatternsFromOptions(subject: Variable, options?: SparqlQueryBuilderOptions): EntitySelectQueryData; private createSubQueryPatterns; private createEntityGraphFilterPattern; buildConstructFromEntitySelectQuery(graphWhere: Pattern[], graphSelectionTriples: Triple[], select?: FindOptionsSelect, selectVariables?: { variable: Variable; expression: Expression; }[]): ConstructQuery; private createWhereQueryData; private createWhereQueryDataForField; private createWhereQueryDataForIdValue; private createWhereQueryDataForType; private createWhereQueryDataFromKeyValue; private createWhereQueryDataForFindOperator; private pathOperatorToPropertyPath; private createWhereQueryDataForMultipleFindOperators; private createWhereQueryDataForNestedWhere; private createWhereQueryDataForValueObject; private valueObjectToTerm; private resolveFindOperatorAsExpressionWithMultipleValues; private resolveFindOperatorAsExpressionForId; private resolveValueToExpression; private buildNotOperationForMultiValued; private buildNotOperationForId; private resolveValueToTerm; private createOrderQueryData; private createOrderQueryDataForProperty; private createRelationsQueryData; private createRelationsQueryDataForInverseRelation; private createRelationsQueryDataForNestedRelation; private createVariable; private createSelectPattern; private createWherePatternsFromQueryData; private createGroupPatternForPath; buildGroupByQuery(options: GroupByOptions): Promise<{ query: SelectQuery; variableMapping: Record<string, string>; }>; private createDateGroupingBind; private createYearExpression; private createMonthExpression; private createDayExpression; private createPaddedDatePartExpression; private createLessThanComparison; private createPaddedStringExpression; private createUnpaddedStringExpression; private createDayExpressionParts; }