UNPKG

@jahed/sparql-engine

Version:

SPARQL query engine for servers and web browsers.

38 lines (37 loc) 2.06 kB
import type { Expression, Grouping, Query } from "sparqljs"; import type { CustomFunctions } from "../../operators/expressions/sparql-expression.ts"; import type { Bindings } from "../../rdf/bindings.ts"; import ExecutionContext from "../context/execution-context.ts"; import type { PipelineStage } from "../pipeline/pipeline-engine.ts"; import StageBuilder from "./stage-builder.ts"; /** * An AggregateStageBuilder handles the evaluation of Aggregations operations, * GROUP BY and HAVING clauses in SPARQL queries. * @see https://www.w3.org/TR/sparql11-query/#aggregates */ export default class AggregateStageBuilder extends StageBuilder { /** * Build a {@link PipelineStage} for the evaluation of SPARQL aggregations * @param source - Input {@link PipelineStage} * @param query - Parsed SPARQL query (logical execution plan) * @param options - Execution options * @return A {@link PipelineStage} which evaluate SPARQL aggregations */ execute(source: PipelineStage<Bindings>, query: Query, context: ExecutionContext, customFunctions?: CustomFunctions): Promise<PipelineStage<Bindings>>; /** * Build a {@link PipelineStage} for the evaluation of a GROUP BY clause * @param source - Input {@link PipelineStage} * @param groupby - GROUP BY clause * @param options - Execution options * @return A {@link PipelineStage} which evaluate a GROUP BY clause */ _executeGroupBy(source: PipelineStage<Bindings>, groupby: Grouping[], context: ExecutionContext, customFunctions?: CustomFunctions): PipelineStage<Bindings>; /** * Build a {@link PipelineStage} for the evaluation of a HAVING clause * @param source - Input {@link PipelineStage} * @param having - HAVING clause * @param options - Execution options * @return A {@link PipelineStage} which evaluate a HAVING clause */ _executeHaving(source: PipelineStage<Bindings>, having: Expression[], context: ExecutionContext, customFunctions?: CustomFunctions): PipelineStage<Bindings>; }