All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.unibz.inf.ontop.model.term.ImmutableTerm Maven / Gradle / Ivy

package it.unibz.inf.ontop.model.term;

import com.google.common.collect.ImmutableSet;
import it.unibz.inf.ontop.iq.node.VariableNullability;
import it.unibz.inf.ontop.model.type.TermTypeInference;

import java.util.Optional;
import java.util.stream.Stream;

/**
 * Term that is guaranteed to be immutable.
 *
 * In the future, every term should be immutable
 */
public interface ImmutableTerm {

    /**
     * Returns true if and only if the term is a NULL Constant.
     */
    boolean isNull();

    boolean isGround();

    Stream getVariableStream();

    /**
     * Returns empty when no TermType has been inferred (missing information or fatal error)
     * and no non-fatal error has been detected.
     */
    Optional inferType();

    IncrementalEvaluation evaluateStrictEq(ImmutableTerm otherTerm, VariableNullability variableNullability);

    IncrementalEvaluation evaluateIsNotNull(VariableNullability variableNullability);

    ImmutableTerm simplify(VariableNullability variableNullability);

    /**
     * When no variableNullability is available
     */
    ImmutableTerm simplify();

    boolean isNullable(ImmutableSet nullableVariables);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy