Class QueryJoinOptimizer.JoinVisitor
java.lang.Object
org.eclipse.rdf4j.query.algebra.helpers.AbstractSimpleQueryModelVisitor<RuntimeException>
org.eclipse.rdf4j.query.algebra.evaluation.optimizer.QueryJoinOptimizer.JoinVisitor
- All Implemented Interfaces:
QueryModelVisitor<RuntimeException>
- Enclosing class:
QueryJoinOptimizer
protected class QueryJoinOptimizer.JoinVisitor
extends AbstractSimpleQueryModelVisitor<RuntimeException>
This can be extended by subclasses to allow for adjustments to the optimization process.
- Author:
- Arjohn Kampman, James Leigh
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfillVarFreqMap(List<Var> varList, M varFreqMap) protected intgetJoinArgs(TupleExpr tupleExpr, L joinArgs) getStatementPatternVars(TupleExpr tupleExpr) getSubSelects(List<TupleExpr> expressions) This method returns all direct sub-selects in the given list of expressions.protected doublegetTupleExprCost(TupleExpr tupleExpr, Map<TupleExpr, Double> cardinalityMap, Map<TupleExpr, List<Var>> varsMap, Map<Var, Integer> varFreqMap) getUnboundVars(List<Var> vars) voidvoidvoidmeet(StatementPattern node) reorderSubselects(List<TupleExpr> subSelects) Determines an optimal ordering of subselect join arguments, based on variable bindings.protected TupleExprselectNextTupleExpr(List<TupleExpr> expressions, Map<TupleExpr, Double> cardinalityMap, Map<TupleExpr, List<Var>> varsMap, Map<Var, Integer> varFreqMap) Selects from a list of tuple expressions the next tuple expression that should be evaluated.Methods 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, meetBinaryTupleOperator, meetBinaryValueOperator, meetCompareSubQueryValueOperator, meetNAryValueOperator, meetOther, 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) voidvoidvoidvoidmeet(LangMatches node) voidmeet(ListMemberOperator node) voidvoidvoidvoidvoidvoidvoidvoidmeet(MultiProjection node) voidvoidvoidvoidvoidvoidmeet(Projection node) voidmeet(ProjectionElem node) voidmeet(ProjectionElemList node) voidvoidvoidvoidvoidvoidvoidmeet(SingletonSet node) voidvoidvoidvoidvoidvoidmeet(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.voidmeetOther(QueryModelNode node) 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.
-
Constructor Details
-
JoinVisitor
protected JoinVisitor()
-
-
Method Details
-
meet
- Specified by:
meetin interfaceQueryModelVisitor<RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<RuntimeException>
-
meet
- Specified by:
meetin interfaceQueryModelVisitor<RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<RuntimeException>- Throws:
RuntimeException
-
meet
- Specified by:
meetin interfaceQueryModelVisitor<RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<RuntimeException>
-
getJoinArgs
-
getStatementPatternVars
-
fillVarFreqMap
-
getSubSelects
-
reorderSubselects
Determines an optimal ordering of subselect join arguments, based on variable bindings. An ordering is considered optimal if for each consecutive element it holds that first of all its shared variables with all previous elements is maximized, and second, the union of all its variables with all previous elements is maximized.Example: reordering
[f] [a b c] [e f] [a d] [b e]
should result in:
[a b c] [a d] [b e] [e f] [f]
- Parameters:
subSelects- the original ordering of expressions- Returns:
- the optimized ordering of expressions
-
selectNextTupleExpr
protected TupleExpr selectNextTupleExpr(List<TupleExpr> expressions, Map<TupleExpr, Double> cardinalityMap, Map<TupleExpr, List<Var>> varsMap, Map<Var, Integer> varFreqMap) Selects from a list of tuple expressions the next tuple expression that should be evaluated. This method selects the tuple expression with highest number of bound variables, preferring variables that have been bound in other tuple expressions over variables with a fixed value. -
getTupleExprCost
-
getUnboundVars
-
getForeignVarFreq
-