Class QueryModelNormalizerOptimizer
- java.lang.Object
-
- org.eclipse.rdf4j.query.algebra.helpers.AbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
- org.eclipse.rdf4j.query.algebra.evaluation.optimizer.QueryModelNormalizerOptimizer
-
- All Implemented Interfaces:
QueryOptimizer,QueryModelVisitor<java.lang.RuntimeException>
public class QueryModelNormalizerOptimizer extends AbstractSimpleQueryModelVisitor<java.lang.RuntimeException> implements QueryOptimizer
A query optimizer that (partially) normalizes query models to a canonical form. Note: this implementation does not yet cover all query node types.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classQueryModelNormalizerOptimizer.BindingCollector
-
Constructor Summary
Constructors Constructor Description QueryModelNormalizerOptimizer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleancheckAgainstParent(LeftJoin leftJoin, java.util.Set<java.lang.String> problemVars)private booleanisWellDesigned(LeftJoin leftJoin)Checks whether the left join is "well designed" as defined in section 4.2 of "Semantics and Complexity of SPARQL", 2006, Jorge Pérez et al.voidmeet(And and)voidmeet(Difference difference)voidmeet(Filter node)voidmeet(Intersection intersection)voidmeet(Join join)voidmeet(LeftJoin leftJoin)voidmeet(Or or)voidmeet(Union union)protected voidmeetUnaryTupleOperator(UnaryTupleOperator node)Method called by all meet methods with aUnaryTupleOperatornode as argument.voidoptimize(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings)private java.util.Set<java.lang.String>retainAll(java.util.Set<java.lang.String> problemVars, java.util.Set<java.lang.String> leftBindingNames)-
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, meetBinaryTupleOperator, meetBinaryValueOperator, meetCompareSubQueryValueOperator, meetNAryValueOperator, meetOther, meetSubQueryValueOperator, meetUnaryValueOperator, meetUnsupported, meetUpdateExpr
-
-
-
-
Method Detail
-
optimize
public void optimize(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings)
- Specified by:
optimizein interfaceQueryOptimizer
-
meet
public void meet(Join join)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meet
public void meet(LeftJoin leftJoin)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meet
public void meet(Union union)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meet
public void meet(Difference difference)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meet
public void meet(Intersection intersection)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meetUnaryTupleOperator
protected void meetUnaryTupleOperator(UnaryTupleOperator node)
Description copied from class:AbstractSimpleQueryModelVisitorMethod called by all meet methods with aUnaryTupleOperatornode as argument.- Overrides:
meetUnaryTupleOperatorin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>- Parameters:
node- The node that is being visited.
-
meet
public void meet(Filter node)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meet
public void meet(Or or)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meet
public void meet(And and)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
isWellDesigned
private boolean isWellDesigned(LeftJoin leftJoin)
Checks whether the left join is "well designed" as defined in section 4.2 of "Semantics and Complexity of SPARQL", 2006, Jorge Pérez et al.
-
retainAll
private java.util.Set<java.lang.String> retainAll(java.util.Set<java.lang.String> problemVars, java.util.Set<java.lang.String> leftBindingNames)
-
checkAgainstParent
private boolean checkAgainstParent(LeftJoin leftJoin, java.util.Set<java.lang.String> problemVars)
-
-