public abstract class AbstractCommonDenominatorFunctionSymbol extends FunctionSymbolImpl
FunctionSymbol.FunctionalTermNullability| Constructor and Description |
|---|
AbstractCommonDenominatorFunctionSymbol(String functionSymbolName,
int arity,
MetaRDFTermType metaRDFTermType) |
| Modifier and Type | Method and Description |
|---|---|
protected ImmutableTerm |
buildTermAfterEvaluation(com.google.common.collect.ImmutableList<ImmutableTerm> newTerms,
TermFactory termFactory,
VariableNullability variableNullability)
To be overridden by concrete classes
Default case: looks for DBIfThen
|
boolean |
canBePostProcessed(com.google.common.collect.ImmutableList<? extends ImmutableTerm> arguments)
1.
|
protected boolean |
enableIfElseNullLifting()
Returns false if IfElseNullLifting must be disabled althrough it may have been technically possible.
|
protected abstract Optional<RDFTermTypeConstant> |
evaluateCombination(com.google.common.collect.ImmutableList<RDFTermTypeConstant> constants,
Optional<RDFTermTypeConstant> optionalMergedTypeConstant,
TermFactory termFactory) |
Optional<TermTypeInference> |
inferType(com.google.common.collect.ImmutableList<? extends ImmutableTerm> terms) |
boolean |
isAlwaysInjectiveInTheAbsenceOfNonInjectiveFunctionalTerms()
When the function symbol is, in the absence of non-injective functional sub-terms, sometimes but not always injective,
please override isInjective(...)
|
protected boolean |
mayReturnNullWithoutNullArguments()
Returns false when a functional term with this symbol:
1.
|
protected ImmutableTerm |
simplifyUsingMagicNumbers(com.google.common.collect.ImmutableList<ImmutableFunctionalTerm> otherTerms,
Optional<RDFTermTypeConstant> optionalMergedTypeConstant,
TermFactory termFactory)
otherTerms: all use a RDFTermTypeFunctionSymbol.
|
protected boolean |
tolerateNulls()
Returns true if is not guaranteed to return NULL when one argument is NULL.
|
analyzeInjectivity, canBeSafelyDecomposedIntoConjunction, decomposeInjectiveTopFunctionalTerm, evaluateIsNotNull, evaluateNullability, evaluateStrictEq, evaluateStrictEqWithFunctionalTerm, evaluateStrictEqWithNonNullConstant, getExpectedBaseType, getExpectedBaseTypes, isAggregation, isDeterministic, isInjective, isNullable, proposeProvenanceVariables, simplify, simplifyAsGuaranteedToBeNonNull, transformIntoRegularArguments, tryToLiftMagicNumbersequals, getArity, getName, hashCode, toStringpublic AbstractCommonDenominatorFunctionSymbol(String functionSymbolName, int arity, MetaRDFTermType metaRDFTermType)
public boolean isAlwaysInjectiveInTheAbsenceOfNonInjectiveFunctionalTerms()
FunctionSymbolImplisAlwaysInjectiveInTheAbsenceOfNonInjectiveFunctionalTerms in class FunctionSymbolImplpublic Optional<TermTypeInference> inferType(com.google.common.collect.ImmutableList<? extends ImmutableTerm> terms)
protected boolean mayReturnNullWithoutNullArguments()
FunctionSymbolImplmayReturnNullWithoutNullArguments in class FunctionSymbolImplprotected boolean tolerateNulls()
FunctionSymbolImpltolerateNulls in class FunctionSymbolImplpublic boolean canBePostProcessed(com.google.common.collect.ImmutableList<? extends ImmutableTerm> arguments)
FunctionSymbolprotected ImmutableTerm buildTermAfterEvaluation(com.google.common.collect.ImmutableList<ImmutableTerm> newTerms, TermFactory termFactory, VariableNullability variableNullability)
buildTermAfterEvaluation in class FunctionSymbolImplprotected ImmutableTerm simplifyUsingMagicNumbers(com.google.common.collect.ImmutableList<ImmutableFunctionalTerm> otherTerms, Optional<RDFTermTypeConstant> optionalMergedTypeConstant, TermFactory termFactory)
protected abstract Optional<RDFTermTypeConstant> evaluateCombination(com.google.common.collect.ImmutableList<RDFTermTypeConstant> constants, Optional<RDFTermTypeConstant> optionalMergedTypeConstant, TermFactory termFactory)
protected boolean enableIfElseNullLifting()
FunctionSymbolImplenableIfElseNullLifting in class FunctionSymbolImplCopyright © 2009–2020 Free University of Bozen-Bolzano. All rights reserved.