
it.unibz.inf.ontop.iq.node.NaryOperatorNode Maven / Gradle / Ivy
package it.unibz.inf.ontop.iq.node;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import it.unibz.inf.ontop.iq.IQTree;
import it.unibz.inf.ontop.iq.IQTreeCache;
import it.unibz.inf.ontop.iq.exception.InvalidIntermediateQueryException;
import it.unibz.inf.ontop.iq.exception.QueryNodeTransformationException;
import it.unibz.inf.ontop.iq.request.FunctionalDependencies;
import it.unibz.inf.ontop.iq.request.VariableNonRequirement;
import it.unibz.inf.ontop.iq.transform.IQTreeExtendedTransformer;
import it.unibz.inf.ontop.iq.transform.IQTreeVisitingTransformer;
import it.unibz.inf.ontop.iq.transform.node.HomogeneousQueryNodeTransformer;
import it.unibz.inf.ontop.iq.visit.IQVisitor;
import it.unibz.inf.ontop.model.term.*;
import it.unibz.inf.ontop.substitution.Substitution;
import it.unibz.inf.ontop.substitution.InjectiveSubstitution;
import it.unibz.inf.ontop.utils.VariableGenerator;
import java.util.Optional;
/**
* Has at least two children
*/
public interface NaryOperatorNode extends QueryNode {
IQTree normalizeForOptimization(ImmutableList children, VariableGenerator variableGenerator,
IQTreeCache treeCache);
IQTree applyDescendingSubstitution(Substitution extends VariableOrGroundTerm> descendingSubstitution,
Optional constraint, ImmutableList children,
VariableGenerator variableGenerator);
IQTree applyDescendingSubstitutionWithoutOptimizing(
Substitution extends VariableOrGroundTerm> descendingSubstitution,
ImmutableList children, VariableGenerator variableGenerator);
IQTree applyFreshRenaming(InjectiveSubstitution renamingSubstitution, ImmutableList children,
IQTreeCache treeCache);
VariableNullability getVariableNullability(ImmutableList children);
boolean isConstructed(Variable variable, ImmutableList children);
boolean isDistinct(IQTree tree, ImmutableList children);
@Deprecated
IQTree liftIncompatibleDefinitions(Variable variable, ImmutableList children, VariableGenerator variableGenerator);
IQTree propagateDownConstraint(ImmutableExpression constraint, ImmutableList children, VariableGenerator variableGenerator);
IQTree acceptTransformer(IQTree tree, IQTreeVisitingTransformer transformer, ImmutableList children);
IQTree acceptTransformer(IQTree tree, IQTreeExtendedTransformer transformer, ImmutableList children,
T context);
T acceptVisitor(IQVisitor visitor, ImmutableList children);
/**
* Only validates the node, not its children
*/
void validateNode(ImmutableList children) throws InvalidIntermediateQueryException;
NaryOperatorNode acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer)
throws QueryNodeTransformationException;
ImmutableSet> getPossibleVariableDefinitions(ImmutableList children);
IQTree removeDistincts(ImmutableList children, IQTreeCache treeCache);
ImmutableSet> inferUniqueConstraints(ImmutableList children);
FunctionalDependencies inferFunctionalDependencies(ImmutableList children, ImmutableSet> uniqueConstraints, ImmutableSet variables);
VariableNonRequirement computeVariableNonRequirement(ImmutableList children);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy