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. GroupExclusiveStatementintoExclusiveGroup2. Adjust the join order usingDefaultFedXCostModel- Author:
- as
-
-
Constructor Summary
Constructors Constructor Description StatementGroupAndJoinOptimizer(QueryInfo queryInfo, FedXCostModel costModel)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected doubleestimateCost(TupleExpr tupleExpr, Set<String> joinVars)protected List<TupleExpr>formGroups(List<TupleExpr> originalArgs)GroupExclusiveStatements having the same source into anExclusiveGroup.voidmeet(Service tupleExpr)protected voidmeetNJoin(NJoin node)voidmeetOther(QueryModelNode node)voidoptimize(TupleExpr tupleExpr)Optimize the provided tuple expressionprotected List<TupleExpr>optimizeJoinOrder(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 variable-
Methods inherited from class org.eclipse.rdf4j.query.algebra.helpers.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, meetUpdateExpr
-
-
-
-
Field Detail
-
queryInfo
protected final QueryInfo queryInfo
-
-
Constructor Detail
-
StatementGroupAndJoinOptimizer
public StatementGroupAndJoinOptimizer(QueryInfo queryInfo, FedXCostModel costModel)
-
-
Method Detail
-
optimize
public void optimize(TupleExpr tupleExpr)
Description copied from interface:FedXOptimizerOptimize the provided tuple expression- Specified by:
optimizein interfaceFedXOptimizer
-
meet
public void meet(Service tupleExpr)
- Specified by:
meetin interfaceQueryModelVisitor<OptimizationException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<OptimizationException>
-
meetOther
public void meetOther(QueryModelNode node)
- Specified by:
meetOtherin interfaceQueryModelVisitor<OptimizationException>- Overrides:
meetOtherin classAbstractSimpleQueryModelVisitor<OptimizationException>
-
meetNJoin
protected void meetNJoin(NJoin node)
-
formGroups
protected List<TupleExpr> formGroups(List<TupleExpr> originalArgs)
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
protected List<TupleExpr> optimizeJoinOrder(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 variable- Parameters:
joinArgs-- Returns:
-
-