@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
97 lines (96 loc) • 3.66 kB
TypeScript
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;
}