UNPKG

@jahed/sparql-engine

Version:

SPARQL query engine for servers and web browsers.

29 lines (26 loc) 919 B
// SPDX-License-Identifier: MIT import StageBuilder from "./stage-builder.ts"; import type { GroupPattern } from "sparqljs"; import { Pipeline } from "../../engine/pipeline/pipeline.ts"; import minus from "../../operators/minus.ts"; import { BindingBase, Bindings } from "../../rdf/bindings.ts"; import ExecutionContext from "../context/execution-context.ts"; import type { PipelineStage } from "../pipeline/pipeline-engine.ts"; /** * A MinusStageBuilder evaluates MINUS clauses */ export default class MinusStageBuilder extends StageBuilder { async execute( source: PipelineStage<Bindings>, node: GroupPattern, context: ExecutionContext ): Promise<PipelineStage<Bindings>> { const engine = Pipeline.getInstance(); const rightSource = await this.builder!._buildWhere( engine.of(new BindingBase()), node.patterns, context ); return minus(source, rightSource); } }