public abstract class ExprFunction3 extends ExprFunction
CMP_EQUAL, CMP_GREATER, CMP_INDETERMINATE, CMP_LESS, CMP_UNEQUAL| Modifier and Type | Method and Description |
|---|---|
Expr |
apply(ExprTransform transform,
Expr arg1,
Expr arg2,
Expr arg3) |
Expr |
applyNodeTransform(NodeTransform transform)
Rewrite, applying a node->node transformation
|
abstract Expr |
copy(Expr arg1,
Expr arg2,
Expr arg3) |
Expr |
copySubstitute(Binding binding)
Deep copy with substitution
|
NodeValue |
eval(Binding binding,
FunctionEnv env)
Evaluate this expression against the binding
|
abstract NodeValue |
eval(NodeValue x,
NodeValue y,
NodeValue z) |
NodeValue |
eval(NodeValue x,
NodeValue y,
NodeValue z,
FunctionEnv env) |
Expr |
getArg(int i) |
Expr |
getArg1() |
Expr |
getArg2() |
Expr |
getArg3() |
int |
hashCode()
Expr are used in both syntax and algebra. |
int |
numArgs() |
void |
visit(ExprVisitor visitor) |
equals, getArgs, getFunction, getFunctionIRI, getFunctionName, getFunctionPrintName, getFunctionSymbol, getOpName, isFunctionasVar, deepCopy, equals, equalsBySyntax, getConstant, getExpr, getExprVar, getGraphPattern, getVarName, getVarNamesMentioned, getVarsMentioned, isConstant, isExpr, isGraphPattern, isSatisfied, isVariable, toString, varNamesMentioned, varsMentionedpublic Expr getArg1()
public Expr getArg2()
public Expr getArg3()
public Expr getArg(int i)
getArg in class ExprFunctionpublic int numArgs()
numArgs in class ExprFunctionpublic int hashCode()
ExprExpr are used in both syntax and algebra. There is no syntax
to algebra translation step because the parser uses operator precedence
to build the right evaluation structure directly.
The exceptions to this are the NOT EXISTS and
EXISTS expressions which involve a query pattern. As a
result there are different ways in syntax to produce the same algebra
form.
Two Expr are considered equal if they are equal as algebra
expressions. hashCode and equals must implement
that.
There is also equalsBySyntax. Because two different syntax
forms can yield the same algebra, but two different algebra forms
must be different syntax, equalsBySyntax implies equals
(by alegbra).
Hence, different hashCode => not equalsBySyntax.
hashCode in interface ExprhashCode in class ExprFunctionpublic final NodeValue eval(Binding binding, FunctionEnv env)
Exprpublic NodeValue eval(NodeValue x, NodeValue y, NodeValue z, FunctionEnv env)
public final Expr copySubstitute(Binding binding)
ExprcopySubstitute in interface ExprcopySubstitute in class ExprNodepublic final Expr applyNodeTransform(NodeTransform transform)
ExprapplyNodeTransform in interface ExprapplyNodeTransform in class ExprNodepublic void visit(ExprVisitor visitor)
public Expr apply(ExprTransform transform, Expr arg1, Expr arg2, Expr arg3)
Licenced under the Apache License, Version 2.0