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, meetUpdateExpr
-
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.
-