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:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractQueryModelNode()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `AbstractQueryModelNode` | `clone()` | Returns a (deep) clone of this query model node.
    `double` | `getCostEstimate()` |
    `QueryModelNode` | `getParentNode()` | Gets the node's parent.
    `long` | `getResultSizeActual()` |
    `double` | `getResultSizeEstimate()` | Returns the number of tuples that this QueryNode predicts will be outputted.
    `String` | `getSignature()` | Default implementation of `QueryModelNode.getSignature()` that prints the name of the node's class.
    `long` | `getTotalTimeNanosActual()` |
    `boolean` | `isGraphPatternGroup()` | Deprecated.
    `boolean` | `isVariableScopeChange()` | indicates if the node represents a variable scope change.
    `protected boolean` | `nullEquals​(Object o1, Object o2)` |
    `void` | `replaceChildNode​(QueryModelNode current, QueryModelNode replacement)` | Default implementation of `QueryModelNode.replaceChildNode(QueryModelNode, QueryModelNode)` that throws an `IllegalArgumentException` indicating that current is not a child node of this node.
    `protected <T extends QueryModelNode> boolean` | `replaceNodeInList​(List<T> list, QueryModelNode current, QueryModelNode replacement)` |
    `void` | `replaceWith​(QueryModelNode replacement)` | Default implementation of `QueryModelNode.replaceWith(QueryModelNode)` that throws an `IllegalArgumentException` indicating that current is not a child node of this node.
    `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 of `VariableScopeChange.isVariableScopeChange()` to true or false.
    `String` | `toString()` | Returns an indented print of the node tree, starting from this node.
    `<X extends Exception> void` | `visitChildren​(QueryModelVisitor<X> visitor)` | Dummy implementation of `QueryModelNode.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 Detail

    - #### AbstractQueryModelNode

          public AbstractQueryModelNode()

  - ### Method Detail

    - #### getParentNode

          public QueryModelNode getParentNode()

      Description copied from interface: `QueryModelNode`
      Gets the node's parent.
      Specified by:
        `getParentNode` in interface `QueryModelNode`
      Returns:
        The parent node, if any.

    - #### setParentNode

          public void setParentNode​(QueryModelNode parent)

      Description copied from interface: `QueryModelNode`
      Sets the node's parent.
      Specified by:
        `setParentNode` in interface `QueryModelNode`
      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 interface `VariableScopeChange`
      Returns:
        true iff the node represents a variable scope change.

    - #### setVariableScopeChange

          public void setVariableScopeChange​(boolean isVariableScopeChange)

      Description copied from interface: `VariableScopeChange`
      Set the value of `VariableScopeChange.isVariableScopeChange()` to true or false.
      Specified by:
        `setVariableScopeChange` in interface `VariableScopeChange`

    - #### isGraphPatternGroup

          @Deprecated
          public boolean isGraphPatternGroup()

      Deprecated.
      Description copied from interface: `GraphPatternGroupable`
      indicates if the node represents the root of a graph pattern group.
      Specified by:
        `isGraphPatternGroup` in interface `GraphPatternGroupable`
      Returns:
        true iff the node represents the node of a graph pattern group.

    - #### setGraphPatternGroup

          @Deprecated
          public void setGraphPatternGroup​(boolean isGraphPatternGroup)

      Deprecated.
      Description copied from interface: `GraphPatternGroupable`
      Set the value of `GraphPatternGroupable.isGraphPatternGroup()` to true or false.
      Specified by:
        `setGraphPatternGroup` in interface `GraphPatternGroupable`

    - #### visitChildren

          public <X extends Exception> void visitChildren​(QueryModelVisitor<X> visitor)
                                                   throws X extends Exception

      Dummy implementation of `QueryModelNode.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 interface `QueryModelNode`
      Throws:
        `X extends Exception`

    - #### replaceChildNode

          public void replaceChildNode​(QueryModelNode current,
                                       QueryModelNode replacement)

      Default implementation of `QueryModelNode.replaceChildNode(QueryModelNode, QueryModelNode)` that throws an `IllegalArgumentException` indicating that current is not a child node of this node.
      Specified by:
        `replaceChildNode` in interface `QueryModelNode`
      Parameters:
        `current` - The current child node.
        `replacement` - The new child node.

    - #### replaceWith

          public void replaceWith​(QueryModelNode replacement)

      Default implementation of `QueryModelNode.replaceWith(QueryModelNode)` that throws an `IllegalArgumentException` indicating that current is not a child node of this node.
      Specified by:
        `replaceWith` in interface `QueryModelNode`
      Parameters:
        `replacement` - The new node.

    - #### getSignature

          public String getSignature()

      Default implementation of `QueryModelNode.getSignature()` that prints the name of the node's class.
      Specified by:
        `getSignature` in interface `QueryModelNode`
      Returns:
        The node's signature, e.g. SLICE (offset=10, limit=10).

    - #### toString

          public String toString()

      Description copied from interface: `QueryModelNode`
      Returns an indented print of the node tree, starting from this node.
      Specified by:
        `toString` in interface `QueryModelNode`
      Overrides:
        `toString` in class `Object`

    - #### clone

          public AbstractQueryModelNode 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 interface `QueryModelNode`
      Overrides:
        `clone` in class `Object`
      Returns:
        A deep clone of this query model node.

    - #### replaceNodeInList

          protected <T extends QueryModelNode> boolean replaceNodeInList​(List<T> list,
                                                                         QueryModelNode current,
                                                                         QueryModelNode replacement)

    - #### nullEquals

          protected boolean nullEquals​(Object o1,
                                       Object o2)

    - #### 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 interface `QueryModelNode`
      Returns:
        rows

    - #### setResultSizeEstimate

          public void setResultSizeEstimate​(double resultSizeEstimate)

      Specified by:
        `setResultSizeEstimate` in interface `QueryModelNode`

    - #### getResultSizeActual

          public long getResultSizeActual()

      Specified by:
        `getResultSizeActual` in interface `QueryModelNode`

    - #### setResultSizeActual

          public void setResultSizeActual​(long resultSizeActual)

      Specified by:
        `setResultSizeActual` in interface `QueryModelNode`

    - #### getCostEstimate

          public double getCostEstimate()

      Specified by:
        `getCostEstimate` in interface `QueryModelNode`

    - #### setCostEstimate

          public void setCostEstimate​(double costEstimate)

      Specified by:
        `setCostEstimate` in interface `QueryModelNode`

    - #### getTotalTimeNanosActual

          public long getTotalTimeNanosActual()

      Specified by:
        `getTotalTimeNanosActual` in interface `QueryModelNode`

    - #### setTotalTimeNanosActual

          public void setTotalTimeNanosActual​(long totalTimeNanosActual)

      Specified by:
        `setTotalTimeNanosActual` in interface `QueryModelNode`