Class StatementGroupAndJoinOptimizer
java.lang.Object
org.eclipse.rdf4j.query.algebra.helpers.AbstractSimpleQueryModelVisitor<OptimizationException>
org.eclipse.rdf4j.federated.optimizer.StatementGroupAndJoinOptimizer
- All Implemented Interfaces:
FedXOptimizer, QueryModelVisitor<OptimizationException>
public class StatementGroupAndJoinOptimizer
extends AbstractSimpleQueryModelVisitor<OptimizationException>
implements FedXOptimizer
Optimizer with the following tasks:
1. Group
ExclusiveStatement into ExclusiveGroup 2. Adjust the join order using
DefaultFedXCostModel- Author:
- as
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionStatementGroupAndJoinOptimizer(QueryInfo queryInfo, FedXCostModel costModel) -
Method Summary
Modifier and TypeMethodDescriptionprotected doubleestimateCost(TupleExpr tupleExpr, Set<String> joinVars) formGroups(List<TupleExpr> originalArgs) GroupExclusiveStatements having the same source into anExclusiveGroup.voidprotected voidvoidmeetOther(QueryModelNode node) voidOptimize the provided tuple expressionoptimizeJoinOrder(List<TupleExpr> joinArgs) Join Order Optimizer Group -> Statements according to number of free Variables Additional Heuristics: - ExclusiveGroups are cheaper than any other subquery - owned statements are cheaper if they have a single free variableMethods 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, 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) voidvoidvoidvoidmeet(InsertData node) voidmeet(Intersection node) voidmeet(IRIFunction node) voidvoidvoidvoidmeet(IsResource node) voidvoidvoidvoidvoidmeet(LangMatches node) voidvoidmeet(ListMemberOperator node) voidvoidvoidvoidvoidvoidvoidvoidmeet(MultiProjection node) voidvoidvoidvoidvoidvoidmeet(Projection node) voidmeet(ProjectionElem node) voidmeet(ProjectionElemList node) voidvoidvoidvoidvoidvoidmeet(SingletonSet node) voidvoidmeet(StatementPattern node) voidvoidvoidvoidvoidmeet(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
-
StatementGroupAndJoinOptimizer
-
-
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
GroupExclusiveStatements having the same source into anExclusiveGroup.- Parameters:
originalArgs-- Returns:
- the new (potentially grouped) join arguments. If empty, the join will not produce any results.
-
optimizeJoinOrder
Join Order Optimizer Group -> Statements according to number of free Variables Additional Heuristics: - ExclusiveGroups are cheaper than any other subquery - owned statements are cheaper if they have a single free variable- Parameters:
joinArgs-- Returns:
-
estimateCost
-