Class TripleRefJoinOptimizer
java.lang.Object
org.eclipse.rdf4j.query.algebra.helpers.AbstractSimpleQueryModelVisitor<OptimizationException>
org.eclipse.rdf4j.federated.optimizer.TripleRefJoinOptimizer
- All Implemented Interfaces:
FedXOptimizer, QueryModelVisitor<OptimizationException>
public class TripleRefJoinOptimizer
extends AbstractSimpleQueryModelVisitor<OptimizationException>
implements FedXOptimizer
Optimizer that groups
TripleRefStatementPattern nodes with co-located StatementPattern nodes into
TripleRefJoinGroup instances, enabling efficient federated evaluation of RDF 1.2 reification patterns.
The optimizer visits every NJoin in the query tree (depth-first) and looks for pairs of a
TripleRefStatementPattern and one or more plain StatementPatterns that share the same unbound subject
variable. Matched patterns are collapsed into a single TripleRefJoinGroup that can be sent as one request to
the owning endpoints.
- Author:
- Andreas Schwarte
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionformGroups(List<TupleExpr> originalArgs) GroupTripleRefStatementPatternandStatementPatternhaving the same subject variable into aTripleRefJoinGroup.voidprotected voidvoidmeetOther(QueryModelNode node) voidOptimize the provided tuple expressionMethods inherited from class AbstractSimpleQueryModelVisitor
meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meetBinaryTupleOperator, meetBinaryValueOperator, meetCompareSubQueryValueOperator, meetNAryValueOperator, meetSubQueryValueOperator, meetUnaryTupleOperator, meetUnaryValueOperator, meetUnsupported, meetUpdateExprModifier and TypeMethodDescriptionvoidvoidmeet(AggregateFunctionCall node) voidvoidmeet(ArbitraryLengthPath node) voidvoidmeet(BindingSetAssignment node) voidmeet(BNodeGenerator node) voidvoidvoidvoidvoidmeet(CompareAll node) voidmeet(CompareAny node) voidvoidvoidvoidvoidmeet(DeleteData node) voidmeet(DescribeOperator node) voidmeet(Difference node) voidvoidvoidvoidvoidmeet(ExtensionElem node) voidvoidmeet(FunctionCall node) voidvoidmeet(GroupConcat node) voidvoidvoidmeet(HasLangDir node) voidvoidvoidmeet(InsertData node) voidmeet(Intersection node) voidmeet(IRIFunction node) voidvoidvoidvoidmeet(IsResource node) voidvoidvoidvoidvoidvoidvoidmeet(LangMatches node) voidvoidvoidmeet(ListMemberOperator node) voidvoidvoidvoidvoidvoidvoidvoidmeet(MultiProjection node) voidvoidvoidvoidvoidvoidmeet(Projection node) voidmeet(ProjectionElem node) voidmeet(ProjectionElemList node) voidvoidvoidvoidvoidvoidmeet(SingletonSet node) voidvoidmeet(StatementPattern node) voidvoidmeet(StrLangDir node) voidvoidvoidvoidmeet(ValueConstant node) voidmeet(ValueExprTripleRef node) voidvoidmeet(ZeroLengthPath node) protected voidMethod called by all meet methods with aBinaryTupleOperatornode as argument.protected voidMethod called by all meet methods with aBinaryValueOperatornode as argument.protected voidMethod called by all meet methods with aCompareSubQueryValueOperatornode as argument.protected voidMethod called by all meet methods with aNAryValueOperatornode as argument.protected voidMethod called by all meet methods with aSubQueryValueOperatornode as argument.protected voidMethod called by all meet methods with aUnaryTupleOperatornode as argument.protected voidMethod called by all meet methods with aUnaryValueOperatornode as argument.voidprotected voidmeetUpdateExpr(UpdateExpr node) Method called by all meet methods with aUpdateExprnode as argument.
-
Field Details
-
queryInfo
-
-
Constructor Details
-
TripleRefJoinOptimizer
-
-
Method Details
-
optimize
Description copied from interface:FedXOptimizerOptimize the provided tuple expression- Specified by:
optimizein interfaceFedXOptimizer- Parameters:
tupleExpr-
-
meet
- Specified by:
meetin interfaceQueryModelVisitor<OptimizationException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<OptimizationException>
-
meetOther
- Specified by:
meetOtherin interfaceQueryModelVisitor<OptimizationException>- Overrides:
meetOtherin classAbstractSimpleQueryModelVisitor<OptimizationException>
-
meetNJoin
-
formGroups
GroupTripleRefStatementPatternandStatementPatternhaving the same subject variable into aTripleRefJoinGroup.Assumption: a shared unbound subject variable is treated as a sufficient co-location signal. In RDF 1.2 reification patterns the subject linking the outer statement to its triple term is typically a blank node that is local to a single dataset (and therefore to a single endpoint). No additional source-exclusivity check is performed.
- Parameters:
originalArgs- the join arguments to group- Returns:
- the new (potentially grouped) join arguments. If empty, the join will not produce any results.
-