Comunica
    Preparing search index...

    A comunica Multi Merge RDF Join Actor.

    Joins three or more entries that are all sorted on the same variables in one pass.

    Entries that are not sorted on that variable are joined with the result afterwards, through the join bus.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

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

    The bus this actor subscribes to.

    canHandleExpression?: boolean

    If this join operator can handle join actions with an expression.

    canHandleOperationRequired?: boolean

    If this join operator can handle join entries with operationModified set to true. This will typically only be true for bind-join-like operators.

    canHandleUndefs: boolean

    If this actor can handle undefs overlapping variable bindings.

    includeInLogs: boolean = true

    If this actor will be logged in the debugger. The physical query plan always includes every join actor that runs.

    limitEntries: number

    Can be used by subclasses to indicate the max or min number of streams that can be joined. 0 for infinity. By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.

    limitEntriesMin: boolean

    If true, the limitEntries field is a lower limit, otherwise, it is an upper limit.

    logicalType: LogicalJoinType
    mediatorJoin: MediatorRdfJoin
    mediatorJoinSelectivity: MediatorRdfJoinSelectivity
    name: string

    The name for this actor.

    {<rdf:subject>}
    
    physicalName: string
    pushesBindingsToSource?: boolean

    If this actor pushes bindings of one entry into the source of another entry.

    requiresVariableOverlap?: boolean

    If this join operator must only be used for join entries with (at least partially) common variables.

    ITERATION_COST: 1

    The cost of reading one binding otherwise, as for the merge join.

    ITERATION_COST_ORDERED: 0.8

    The cost of reading one binding when every merged entry can skip, as for the merge join.

    MIN_ENTRIES: 3

    The minimum number of entries to merge, below which a merge join does the same.

    Static ReadonlyOTHER_ENTRY_RATIO

    OTHER_ENTRY_RATIO: 2

    How many times smaller than the merged result another entry must be for this actor to leave the join to actors that start from that entry, such as the bind join.

    Methods

    • Find the variable that most entries are sorted on first, in ascending order.

      Parameters

      Returns { indexes: number[]; variable: Variable } | undefined

      The variable and the indexes of the entries sorted on it, from the smallest entry to the largest, or undefined if there is none.

    • Estimate the cardinality of an equi-join from the cardinalities of its entries.

      Under the usual uniformity assumption, joining two entries on a shared variable divides their cross product by the number of distinct values that variable takes. That number is unknown here, so it is approximated by the cardinality of the largest entry binding the variable, which is its upper bound. For two entries sharing a variable this yields the cardinality of the smaller entry.

      Only the most selective shared variable is taken into account. Entries sharing several variables are more selective still, but applying the approximation once per variable compounds its error, which would collapse the estimate far below the smallest entry.

      Parameters

      Returns number | undefined

      The estimated cardinality, or undefined if the entries share no variables.