A comunica Filter Pushdown Optimize Query Operation Actor.

Hierarchy (View Summary)

Constructors

Properties

beforeActors: Actor<
    IActionOptimizeQueryOperation,
    IActorTest,
    IActorOptimizeQueryOperationOutput,
    undefined,
>[] = []

Actor that must be registered in the bus before this actor.

bus: Bus<
    Actor<
        IActionOptimizeQueryOperation,
        IActorTest,
        IActorOptimizeQueryOperationOutput,
        undefined,
    >,
    IActionOptimizeQueryOperation,
    IActorTest,
    IActorOptimizeQueryOperationOutput,
    undefined,
>

The bus this actor subscribes to.

name: string

The name for this actor.

{<rdf:subject>}

Methods

  • Recursively push down the given expression into the given operation if possible. Different operators have different semantics for choosing whether or not to push down, and how this pushdown is done. For every passed operator, it is checked whether or not the filter will have any effect on the operation. If not, the filter is voided.

    Parameters

    • expression: Expression

      An expression to push down.

    • expressionVariables: Variable[]

      The variables inside the given expression.

    • operation: Operation

      The operation to push down into.

    • factory: Factory

      An algebra factory.

    • context: IActionContext

      The action context.

    Returns [boolean, Operation]

    A tuple indicating if the operation was modified and the modified operation.

  • Check if the given expression is a simple equals operation with one variable and one non-literal (or literal with canonical lexical form) term that can be pushed into a pattern.

    Parameters

    • expression: Expression

      The current expression.

    Returns undefined | { term: Term; variable: Variable }

    The variable and term to fill into the pattern, or undefined.

  • Parameters

    • operation: Operation
    • expressionVariables: Variable[]

    Returns {
        fullyOverlapping: Operation[];
        notOverlapping: Operation[];
        partiallyOverlapping: Operation[];
    }