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. GroupExclusiveStatement
intoExclusiveGroup
2. 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 double
estimateCost(TupleExpr tupleExpr, Set<String> joinVars)
protected List<TupleExpr>
formGroups(List<TupleExpr> originalArgs)
GroupExclusiveStatement
s having the same source into anExclusiveGroup
.void
meet(Service tupleExpr)
protected void
meetNJoin(NJoin node)
void
meetOther(QueryModelNode node)
void
optimize(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, 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:FedXOptimizer
Optimize the provided tuple expression- Specified by:
optimize
in interfaceFedXOptimizer
-
meet
public void meet(Service tupleExpr)
- Specified by:
meet
in interfaceQueryModelVisitor<OptimizationException>
- Overrides:
meet
in classAbstractSimpleQueryModelVisitor<OptimizationException>
-
meetOther
public void meetOther(QueryModelNode node)
- Specified by:
meetOther
in interfaceQueryModelVisitor<OptimizationException>
- Overrides:
meetOther
in classAbstractSimpleQueryModelVisitor<OptimizationException>
-
meetNJoin
protected void meetNJoin(NJoin node)
-
formGroups
protected List<TupleExpr> formGroups(List<TupleExpr> originalArgs)
GroupExclusiveStatement
s 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:
-
-