@jahed/sparql-engine
Version:
SPARQL query engine for servers and web browsers.
38 lines (37 loc) • 2.06 kB
TypeScript
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>;
}