private ImmutableSet<Variable> computeNewlyProjectedVariables( ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution, ImmutableList<IQTree> children) { ImmutableSet<Variable> formerProjectedVariables = getProjectedVariables(children); return constructionNodeTools.computeNewProjectedVariables(descendingSubstitution, formerProjectedVariables); }
@Override public InnerJoinNode changeOptionalFilterCondition(Optional<ImmutableExpression> newOptionalFilterCondition) { return new InnerJoinNodeImpl(newOptionalFilterCondition, getNullabilityEvaluator(), termFactory, typeFactory, datalogTools, createExpressionEvaluator(), getImmutabilityTools(), iqFactory, substitutionFactory, constructionNodeTools, unificationTools, substitutionTools); }
@Override public LeftJoinNode clone() { return new LeftJoinNodeImpl(getOptionalFilterCondition(), getNullabilityEvaluator(), substitutionFactory, termFactory, typeFactory, datalogTools, createExpressionEvaluator(), immutabilityTools, iqFactory, unificationTools, substitutionTools); }
@Override public LeftJoinNode changeOptionalFilterCondition(Optional<ImmutableExpression> newOptionalFilterCondition) { return new LeftJoinNodeImpl(newOptionalFilterCondition, getNullabilityEvaluator(), substitutionFactory, termFactory, typeFactory, datalogTools, createExpressionEvaluator(), immutabilityTools, iqFactory, unificationTools, substitutionTools); }
@Override public SubstitutionResults<LeftJoinNode> applyAscendingSubstitution( ImmutableSubstitution<? extends ImmutableTerm> substitution, QueryNode childNode, IntermediateQuery query) { return isFromRightBranch(childNode, query) ? applyAscendingSubstitutionFromRight(substitution, query, childNode) : applyAscendingSubstitutionFromLeft(substitution, query); }
@Override public IQTree applyDescendingSubstitution( ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution, Optional<ImmutableExpression> constraint, IQTree child) { return applyDescendingSubstitution(descendingSubstitution, child, (c, r) -> propagateDescendingSubstitutionToChild(c, r, constraint)); }
@Override public SubstitutionResults<IntensionalDataNode> applyAscendingSubstitution( ImmutableSubstitution<? extends ImmutableTerm> substitution, QueryNode childNode, IntermediateQuery query) { return applySubstitution((IntensionalDataNode)this, substitution); }
@Override public String toString() { return JOIN_NODE_STR + getOptionalFilterString(); } }
@Override public String toString() { return EXTENSIONAL_NODE_STR + " " + getProjectionAtom(); } }
@Override public ImmutableSet<Variable> getRequiredVariables(IntermediateQuery query) { return getLocallyRequiredVariables(); } }
public ImmutableSet<Variable> computeNewProjectedVariables( ImmutableSubstitution<? extends ImmutableTerm> descendingSubstitution, ImmutableSet<Variable> projectedVariables) { return constructionNodeTools.computeNewProjectedVariables(descendingSubstitution, projectedVariables); }
@Override public SubstitutionResults<FilterNode> applyAscendingSubstitution( ImmutableSubstitution<? extends ImmutableTerm> substitution, QueryNode childNode, IntermediateQuery query) { return applyDescendingSubstitution(substitution, query); }
/** * Immutable fields, can be shared. */ @Override public ConstructionNode clone() { return new ConstructionNodeImpl(projectedVariables, substitution, optionalModifiers, nullabilityEvaluator); }
@Override public NodeTransformationProposal reactToEmptyChild(IntermediateQuery query, EmptyNode emptyChild) { /** * A construction node has only one child */ return new NodeTransformationProposalImpl(NodeTransformationProposedState.DECLARE_AS_EMPTY, projectedVariables); }
@Override public SubstitutionResults<ExtensionalDataNode> applyAscendingSubstitution( ImmutableSubstitution<? extends ImmutableTerm> substitution, QueryNode childNode, IntermediateQuery query) { return applySubstitution((ExtensionalDataNode) this, substitution); }
@Override public IntensionalDataNode newAtom(DataAtom newAtom) { return new IntensionalDataNodeImpl(newAtom); } }
@Override public String toString() { return FILTER_NODE_STR + getOptionalFilterString(); } }
@Override public ImmutableSet<Variable> getLocallyDefinedVariables() { return getLocalVariables(); }
@Override public SubstitutionResults<IntensionalDataNode> applyDescendingSubstitution( ImmutableSubstitution<? extends ImmutableTerm> substitution, IntermediateQuery query) { return applySubstitution((IntensionalDataNode)this, substitution); }
@Override public String toString() { return JOIN_NODE_STR + getOptionalFilterString(); }