Package org.eclipse.rdf4j.query.algebra
Class AbstractQueryModelNode
java.lang.Object
org.eclipse.rdf4j.query.algebra.AbstractQueryModelNode
- All Implemented Interfaces:
Serializable
,Cloneable
,GraphPatternGroupable
,QueryModelNode
,VariableScopeChange
- Direct Known Subclasses:
Add
,ArbitraryLengthPath
,BinaryTupleOperator
,BinaryValueOperator
,BindingSetAssignment
,BNodeGenerator
,Bound
,BoundFiltersNode
,Clear
,ConjunctiveFilterExpr
,Copy
,Create
,DeleteData
,EmptySet
,ExclusiveGroup
,ExtensionElem
,FedXService
,FilterExpr
,FunctionCall
,GroupElem
,If
,InsertData
,Load
,Modify
,Move
,NAryValueOperator
,NTuple
,OrderElem
,PassThroughTupleExpr
,ProjectionElem
,ProjectionElemList
,QueryModelNodeBase
,SingleSourceQuery
,SingletonSet
,StatementPattern
,StatementSource
,SubQueryValueOperator
,TripleRef
,UnaryTupleOperator
,UnaryValueOperator
,ValueConstant
,ValueExprTripleRef
,Var
,ZeroLengthPath
public abstract class AbstractQueryModelNode
extends Object
implements QueryModelNode, VariableScopeChange, GraphPatternGroupable
Base implementation of
QueryModelNode
.- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
Returns a (deep) clone of this query model node.double
double
Gets the node's parent.long
double
Returns the number of tuples that this QueryNode predicts will be outputted.Default implementation ofQueryModelNode.getSignature()
that prints the name of the node's class.long
boolean
boolean
Deprecated.boolean
indicates if the node represents a variable scope change.protected boolean
nullEquals
(Object o1, Object o2) void
replaceChildNode
(QueryModelNode current, QueryModelNode replacement) Default implementation ofQueryModelNode.replaceChildNode(QueryModelNode, QueryModelNode)
that throws anIllegalArgumentException
indicating that current is not a child node of this node.protected <T extends QueryModelNode>
booleanreplaceNodeInList
(List<T> list, QueryModelNode current, QueryModelNode replacement) void
replaceWith
(QueryModelNode replacement) Default implementation ofQueryModelNode.replaceWith(QueryModelNode)
that throws anIllegalArgumentException
indicating that current is not a child node of this node.void
void
setCardinality
(double cardinality) void
setCostEstimate
(double costEstimate) void
setGraphPatternGroup
(boolean isGraphPatternGroup) Deprecated.void
setParentNode
(QueryModelNode parent) Sets the node's parent.void
setResultSizeActual
(long resultSizeActual) void
setResultSizeEstimate
(double resultSizeEstimate) void
setTotalTimeNanosActual
(long totalTimeNanosActual) void
setVariableScopeChange
(boolean isVariableScopeChange) Set the value ofVariableScopeChange.isVariableScopeChange()
to true or false.protected boolean
toString()
Returns an indented print of the node tree, starting from this node.<X extends Exception>
voidvisitChildren
(QueryModelVisitor<X> visitor) Dummy implementation ofQueryModelNode.visitChildren(org.eclipse.rdf4j.query.algebra.QueryModelVisitor<X>)
that does nothing.Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.rdf4j.query.algebra.QueryModelNode
equals, visit
-
Constructor Details
-
AbstractQueryModelNode
public AbstractQueryModelNode()
-
-
Method Details
-
getParentNode
Description copied from interface:QueryModelNode
Gets the node's parent.- Specified by:
getParentNode
in interfaceQueryModelNode
- Returns:
- The parent node, if any.
-
setParentNode
Description copied from interface:QueryModelNode
Sets the node's parent.- Specified by:
setParentNode
in interfaceQueryModelNode
- Parameters:
parent
- The parent node for this node.
-
isVariableScopeChange
public boolean isVariableScopeChange()Description copied from interface:VariableScopeChange
indicates if the node represents a variable scope change.- Specified by:
isVariableScopeChange
in interfaceVariableScopeChange
- Returns:
- true iff the node represents a variable scope change.
-
setVariableScopeChange
public void setVariableScopeChange(boolean isVariableScopeChange) Description copied from interface:VariableScopeChange
Set the value ofVariableScopeChange.isVariableScopeChange()
to true or false.- Specified by:
setVariableScopeChange
in interfaceVariableScopeChange
-
isGraphPatternGroup
Deprecated.Description copied from interface:GraphPatternGroupable
indicates if the node represents the root of a graph pattern group.- Specified by:
isGraphPatternGroup
in interfaceGraphPatternGroupable
- Returns:
- true iff the node represents the node of a graph pattern group.
-
setGraphPatternGroup
Deprecated.Description copied from interface:GraphPatternGroupable
Set the value ofGraphPatternGroupable.isGraphPatternGroup()
to true or false.- Specified by:
setGraphPatternGroup
in interfaceGraphPatternGroupable
-
visitChildren
Dummy implementation ofQueryModelNode.visitChildren(org.eclipse.rdf4j.query.algebra.QueryModelVisitor<X>)
that does nothing. Subclasses should override this method when they have child nodes.- Specified by:
visitChildren
in interfaceQueryModelNode
- Throws:
X extends Exception
-
replaceChildNode
Default implementation ofQueryModelNode.replaceChildNode(QueryModelNode, QueryModelNode)
that throws anIllegalArgumentException
indicating that current is not a child node of this node.- Specified by:
replaceChildNode
in interfaceQueryModelNode
- Parameters:
current
- The current child node.replacement
- The new child node.
-
replaceWith
Default implementation ofQueryModelNode.replaceWith(QueryModelNode)
that throws anIllegalArgumentException
indicating that current is not a child node of this node.- Specified by:
replaceWith
in interfaceQueryModelNode
- Parameters:
replacement
- The new node.
-
getSignature
Default implementation ofQueryModelNode.getSignature()
that prints the name of the node's class.- Specified by:
getSignature
in interfaceQueryModelNode
- Returns:
- The node's signature, e.g. SLICE (offset=10, limit=10).
-
toString
Description copied from interface:QueryModelNode
Returns an indented print of the node tree, starting from this node.- Specified by:
toString
in interfaceQueryModelNode
- Overrides:
toString
in classObject
-
clone
Description copied from interface:QueryModelNode
Returns a (deep) clone of this query model node. This method recursively clones the entire node tree, starting from this nodes.- Specified by:
clone
in interfaceQueryModelNode
- Overrides:
clone
in classObject
- Returns:
- A deep clone of this query model node.
-
replaceNodeInList
protected <T extends QueryModelNode> boolean replaceNodeInList(List<T> list, QueryModelNode current, QueryModelNode replacement) -
nullEquals
-
getResultSizeEstimate
public double getResultSizeEstimate()Description copied from interface:QueryModelNode
Returns the number of tuples that this QueryNode predicts will be outputted. For a StatementPattern this would be the estimated cardinality provided by the EvaluationStatistics. For a Join the would be the resulting number of joined tuples.- Specified by:
getResultSizeEstimate
in interfaceQueryModelNode
- Returns:
- rows
-
setResultSizeEstimate
public void setResultSizeEstimate(double resultSizeEstimate) - Specified by:
setResultSizeEstimate
in interfaceQueryModelNode
-
getResultSizeActual
public long getResultSizeActual()- Specified by:
getResultSizeActual
in interfaceQueryModelNode
-
setResultSizeActual
public void setResultSizeActual(long resultSizeActual) - Specified by:
setResultSizeActual
in interfaceQueryModelNode
-
getCostEstimate
public double getCostEstimate()- Specified by:
getCostEstimate
in interfaceQueryModelNode
-
setCostEstimate
public void setCostEstimate(double costEstimate) - Specified by:
setCostEstimate
in interfaceQueryModelNode
-
getTotalTimeNanosActual
public long getTotalTimeNanosActual()- Specified by:
getTotalTimeNanosActual
in interfaceQueryModelNode
-
setTotalTimeNanosActual
public void setTotalTimeNanosActual(long totalTimeNanosActual) - Specified by:
setTotalTimeNanosActual
in interfaceQueryModelNode
-
getCardinality
-
setCardinality
-
resetCardinality
-
isCardinalitySet
-
shouldCacheCardinality
-