ReadonlybeforeActor that must be registered in the bus before this actor.
ReadonlybusThe bus this actor subscribes to.
Protected Optional ReadonlycanIf this join operator can handle join actions with an expression.
Protected Optional ReadonlycanIf this join operator can handle join entries with operationModified set to true.
This will typically only be true for bind-join-like operators.
Protected ReadonlycanIf this actor can handle undefs overlapping variable bindings.
If this actor will be logged in the debugger. The physical query plan always includes every join actor that runs.
Protected ReadonlylimitCan 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.
Protected ReadonlylimitIf true, the limitEntries field is a lower limit, otherwise, it is an upper limit.
ReadonlylogicalReadonlymediatorReadonlymediatorReadonlynameThe name for this actor.
ReadonlyphysicalProtected Optional ReadonlypushesIf this actor pushes bindings of one entry into the source of another entry.
Protected Optional ReadonlyrequiresIf this join operator must only be used for join entries with (at least partially) common variables.
Static ReadonlyITERATION_The cost of reading one binding otherwise, as for the merge join.
Static ReadonlyITERATION_The cost of reading one binding when every merged entry can skip, as for the merge join.
Static ReadonlyMIN_The minimum number of entries to merge, below which a merge join does the same.
Static ReadonlyOTHER_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.
Helper function to create a new metadata object for the join result. For required metadata entries that are not provided, sane defaults are calculated.
Join entries.
Metadata of the join entries.
The action context.
Partial metadata entries.
If metadata for an optional operation must be calculated.
Construct a metadata validation state for the given metadata entries.
An array of checked metadata.
ProtectedgetOptionaldata: () => anyProtectedgetCalculate the join coefficients.
Join action
The test side data.
The join coefficient estimates.
ProtectedgetReturns the resulting output for joining the given entries. This is called after removing the trivial cases in run.
Side data from the test method
ProtectedlogOptionaldata: () => anyProtectedlogOptionaldata: () => anyProtectedlogOptionaldata: () => anyProtectedlogOptionaldata: () => anyProtectedlogOptionaldata: () => anyProtectedlogOptionaldata: () => anyReturns default input for 0 or 1 entries. Calls the getOutput function otherwise
Side data from the test method
A bindings result.
Run the given action on this actor AND invokes the Bus#onRun method.
The action to run.
A promise that resolves to the run result.
Default test function for join actors. Checks whether all iterators have metadata. If yes: call the abstract getIterations method, if not: return Infinity.
The input action containing the relevant iterators
The join coefficients.
StaticgetGet the estimated number of items from the given metadata.
A metadata object.
The estimated number of items, or Infinity if cardinality is falsy.
StaticgetGet the logger from the given context.
An optional context.
The logger or undefined.
StaticgetObtain the join entries with metadata from all given join entries.
Join entries.
StaticgetDetermine the key that the merged entries are joined on.
This is the longest prefix of their term orders that they all share, in ascending order.
The variable that the merged entries are sorted on first.
Metadata of the merged entries.
StaticgetFind the variable that most entries are sorted on first, in ascending order.
Metadata of the join entries.
The variable and the indexes of the entries sorted on it, from the smallest entry to the largest, or undefined if there is none.
StaticgetObtain the metadata from all given join entries.
Join entries.
StaticgetCalculate the time to initiate a request for the given metadata entries.
An array of checked metadata.
StaticgetCalculate the time to receive a single item for the given metadata entries.
An array of checked metadata.
StaticgetEstimate 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.
Metadata of the join entries.
The estimated cardinality, or undefined if the entries share no variables.
StaticisCheck if the operation of the given join entry must be pushed into the join. Next to entries that explicitly request this, this holds for entries whose metadata requests it, such as SERVICE clauses of which the target is still an unbound variable.
A join entry.
The metadata of that entry.
StaticjoinReturns the result of joining bindings, or null if no join is possible.
StaticjoinReturns the variables that will occur in the joined bindings.
The data factory.
An array of metadata objects for the entries.
If an optional join is being performed.
An array of joined variables.
StaticoverlappingReturns an array containing all the variable names that occur in all bindings streams.
An array of optional metadata objects for the entries.
An array of variables.
StaticsortOrder the given join entries using the join-entries-sort bus.
A mediator for sorting join entries.
An array of join entries.
The action context.
The sorted join entries.
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.