Package org.aksw.jenax.arq.util.expr
Class ExprUtils
java.lang.Object
org.aksw.jenax.arq.util.expr.ExprUtils
- Author:
- Claus Stadler Date: 1/8/12 Time: 6:18 PM
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classGeneric accessor for expressions. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic org.apache.jena.sparql.expr.ExprandifyBalanced(Iterable<org.apache.jena.sparql.expr.Expr> exprs) static org.apache.jena.sparql.expr.ExprandifyBalanced(org.apache.jena.sparql.expr.Expr... exprs) static org.apache.jena.sparql.expr.ExprapplyNodeTransform(org.apache.jena.sparql.expr.Expr expr, Map<?, ? extends org.apache.jena.graph.Node> nodeMap) static org.apache.jena.sparql.expr.ExprapplyNodeTransform(org.apache.jena.sparql.expr.Expr expr, org.apache.jena.sparql.graph.NodeTransform xform) Node transform version that (a) handles blank nodes correctly; in constrast to Expr.applyNodeTransform [disabled (b) treats null mappings as identity mapping]static <T> TapplyToArgsOfBinaryExpr(org.apache.jena.sparql.expr.Expr expr, BiFunction<? super org.apache.jena.sparql.expr.Expr, ? super org.apache.jena.sparql.expr.Expr, T> fn) static intclassify(org.apache.jena.sparql.expr.Expr e) static intcompare(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) static booleancontainsExprAggregator(org.apache.jena.sparql.expr.Expr expr) Return true iff expr makes use of at least one ExprAggregatorstatic org.apache.jena.sparql.expr.Exprcopy(org.apache.jena.sparql.expr.ExprFunction0 func, org.apache.jena.sparql.expr.ExprList args) static org.apache.jena.sparql.expr.Exprcopy(org.apache.jena.sparql.expr.ExprFunction1 func, org.apache.jena.sparql.expr.ExprList args) static org.apache.jena.sparql.expr.Exprcopy(org.apache.jena.sparql.expr.ExprFunction2 func, org.apache.jena.sparql.expr.ExprList args) static org.apache.jena.sparql.expr.Exprcopy(org.apache.jena.sparql.expr.ExprFunction3 func, org.apache.jena.sparql.expr.ExprList args) static org.apache.jena.sparql.expr.Exprcopy(org.apache.jena.sparql.expr.ExprFunctionN func, org.apache.jena.sparql.expr.ExprList args) static org.apache.jena.sparql.expr.Exprstatic org.apache.jena.sparql.expr.Exprcopy(org.apache.jena.sparql.expr.Expr proto, org.apache.jena.sparql.expr.Expr... args) static org.apache.jena.sparql.expr.Exprcopy(org.apache.jena.sparql.expr.Expr proto, org.apache.jena.sparql.expr.ExprList args) static <T> Tdistribute(List<T> as, List<T> bs, BinaryOperator<T> innerJunctor, BinaryOperator<T> outerJunctor) static org.apache.jena.sparql.expr.NodeValue[]evalToArray(List<org.apache.jena.sparql.expr.Expr> exprs, org.apache.jena.sparql.engine.binding.Binding input, org.apache.jena.sparql.function.FunctionEnv env) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractConstantConstraint(org.apache.jena.sparql.expr.Expr expr) extractNames(Collection<org.apache.jena.sparql.core.Var> vars) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractVarConstant(org.apache.jena.sparql.expr.Expr expr) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractVarConstant(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractVarConstantDirected(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) If a is a variable and b is a constant, then a mapping of the variable to the constant is put into the map, and true is returned.static org.apache.jena.sparql.expr.Exprfactorize(org.apache.jena.sparql.expr.Expr expr, com.google.common.collect.BiMap<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.expr.Expr> cxt, org.apache.jena.sparql.core.VarAlloc varAlloc, org.aksw.commons.util.algebra.ExprFilter<org.apache.jena.sparql.expr.Expr> isBlocker) Allocate a single varible for every unique expression.static ExprUtils.ExprOpsstatic StringgetFunctionId(org.apache.jena.sparql.expr.ExprFunction fn) static org.apache.jena.sparql.expr.ExprgetIsNotBoundArg(org.apache.jena.sparql.expr.Expr expr) If the given expression is !bound(x) then returns x, null otherwise.static List<org.apache.jena.sparql.expr.Expr>getSubExprs(org.apache.jena.sparql.expr.Expr expr) static booleanisConstantArgsOnly(org.apache.jena.sparql.expr.ExprFunction fn) Checks wtherer all arguments of the given function are constants (non-recursive).static booleanisConstantsOnly(Iterable<org.apache.jena.sparql.expr.Expr> exprs) static booleanisSame(org.apache.jena.graph.Node node, org.apache.jena.sparql.expr.Expr expr) Test whether a node and an expression represent the same valuestatic Stream<org.apache.jena.sparql.expr.Expr>linearizePrefix(org.apache.jena.sparql.expr.Expr expr, Collection<org.apache.jena.sparql.expr.Expr> stopMarkers) Traverse the exprstatic <T> Stream<T>linearizePrefix(T op, Collection<T> stopMarker, Function<? super T, Iterable<? extends T>> getChildren) linearize any structure into a flat list TODO Provide an examplestatic Set<org.apache.jena.graph.Node>nodesMentioned(org.apache.jena.sparql.expr.Expr expr) Return the set of nodes mentioned in a pathstatic org.apache.jena.sparql.expr.E_NotOneOfnotOneOf(org.apache.jena.graph.Node v, Collection<org.apache.jena.graph.Node> args) static org.apache.jena.sparql.expr.E_NotOneOfnotOneOf(org.apache.jena.graph.Node v, org.apache.jena.graph.Node... args) static org.apache.jena.sparql.expr.E_OneOfoneOf(String varName, Collection<org.apache.jena.graph.Node> nodes) static org.apache.jena.sparql.expr.E_OneOfstatic org.apache.jena.sparql.expr.E_OneOfoneOf(org.apache.jena.graph.Node v, org.apache.jena.graph.Node... args) static org.apache.jena.sparql.expr.E_OneOfstatic <T> Optional<T>opify(Iterable<T> exprs, BinaryOperator<T> exprFactory) static <T> TopifyBalanced(Iterable<? extends T> exprs, BiFunction<? super T, ? super T, ? extends T> exprFactory) Concatenates the sub exressions using a binary operator This method is not jena dependent and could be moved to aksw-commons and(and(0, 1), and(2, 3))static org.apache.jena.sparql.expr.ExprorifyBalanced(Iterable<org.apache.jena.sparql.expr.Expr> exprs) static org.apache.jena.sparql.expr.ExprorifyBalanced(org.apache.jena.sparql.expr.Expr... exprs) static org.apache.jena.sparql.expr.Exprreplace(org.apache.jena.sparql.expr.Expr expr, Function<? super org.apache.jena.sparql.expr.Expr, ? extends org.apache.jena.sparql.expr.Expr> fn) Perform a depth-first-in-order traversal and substitute children w.r.t.static org.apache.jena.sparql.expr.ExprreverseVarRename(org.apache.jena.sparql.expr.Expr expr) Repeatedly reverse var naming ofRename.renameVars(Expr, Set).static org.apache.jena.sparql.expr.Exprsignaturize(org.apache.jena.sparql.expr.Expr expr) Replace all variable names with the same variable (?a in this case).static org.apache.jena.sparql.expr.Exprsignaturize(org.apache.jena.sparql.expr.Expr expr, Map<?, ? extends org.apache.jena.graph.Node> nodeMap) static Map.Entry<org.apache.jena.sparql.expr.NodeValue,org.apache.jena.sparql.expr.Expr> tryGetConstAndExpr(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) Return a non-null entry if either a or b is a constant.static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.graph.Node> tryGetVarConst(org.apache.jena.sparql.expr.Expr e) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.graph.Node> tryGetVarConst(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.core.Var> tryGetVarVar(org.apache.jena.sparql.expr.Expr e) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.core.Var> tryGetVarVar(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b)
-
Constructor Details
-
ExprUtils
public ExprUtils()
-
-
Method Details
-
getExprOps
-
getIsNotBoundArg
public static org.apache.jena.sparql.expr.Expr getIsNotBoundArg(org.apache.jena.sparql.expr.Expr expr) If the given expression is !bound(x) then returns x, null otherwise. -
nodesMentioned
Return the set of nodes mentioned in a path -
containsExprAggregator
public static boolean containsExprAggregator(org.apache.jena.sparql.expr.Expr expr) Return true iff expr makes use of at least one ExprAggregator -
isSame
public static boolean isSame(org.apache.jena.graph.Node node, org.apache.jena.sparql.expr.Expr expr) Test whether a node and an expression represent the same value- Parameters:
node-expr-- Returns:
-
applyNodeTransform
public static org.apache.jena.sparql.expr.Expr applyNodeTransform(org.apache.jena.sparql.expr.Expr expr, org.apache.jena.sparql.graph.NodeTransform xform) Node transform version that (a) handles blank nodes correctly; in constrast to Expr.applyNodeTransform [disabled (b) treats null mappings as identity mapping]- Returns:
-
reverseVarRename
public static org.apache.jena.sparql.expr.Expr reverseVarRename(org.apache.jena.sparql.expr.Expr expr) Repeatedly reverse var naming ofRename.renameVars(Expr, Set). -
oneOf
public static org.apache.jena.sparql.expr.E_OneOf oneOf(org.apache.jena.graph.Node v, Iterable<org.apache.jena.graph.Node> args) -
oneOfIris
-
oneOf
public static org.apache.jena.sparql.expr.E_OneOf oneOf(String varName, Collection<org.apache.jena.graph.Node> nodes) -
oneOf
public static org.apache.jena.sparql.expr.E_OneOf oneOf(org.apache.jena.graph.Node v, org.apache.jena.graph.Node... args) -
notOneOf
public static org.apache.jena.sparql.expr.E_NotOneOf notOneOf(org.apache.jena.graph.Node v, Collection<org.apache.jena.graph.Node> args) -
notOneOf
public static org.apache.jena.sparql.expr.E_NotOneOf notOneOf(org.apache.jena.graph.Node v, org.apache.jena.graph.Node... args) -
applyToArgsOfBinaryExpr
public static <T> T applyToArgsOfBinaryExpr(org.apache.jena.sparql.expr.Expr expr, BiFunction<? super org.apache.jena.sparql.expr.Expr, ? super org.apache.jena.sparql.expr.Expr, T> fn) -
tryGetConstAndExpr
public static Map.Entry<org.apache.jena.sparql.expr.NodeValue,org.apache.jena.sparql.expr.Expr> tryGetConstAndExpr(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) Return a non-null entry if either a or b is a constant. The entry's key will be the first constant argument -
tryGetVarConst
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.graph.Node> tryGetVarConst(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) -
tryGetVarVar
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.core.Var> tryGetVarVar(org.apache.jena.sparql.expr.Expr e) -
tryGetVarVar
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.core.Var> tryGetVarVar(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) -
tryGetVarConst
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.graph.Node> tryGetVarConst(org.apache.jena.sparql.expr.Expr e) -
classify
public static int classify(org.apache.jena.sparql.expr.Expr e) -
compare
public static int compare(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) -
isConstantsOnly
-
isConstantArgsOnly
public static boolean isConstantArgsOnly(org.apache.jena.sparql.expr.ExprFunction fn) Checks wtherer all arguments of the given function are constants (non-recursive).- Parameters:
fn- The function to test- Returns:
- True if all arguments are constants, false otherwise.
-
getFunctionId
-
applyNodeTransform
public static org.apache.jena.sparql.expr.Expr applyNodeTransform(org.apache.jena.sparql.expr.Expr expr, Map<?, ? extends org.apache.jena.graph.Node> nodeMap) -
andifyBalanced
public static org.apache.jena.sparql.expr.Expr andifyBalanced(org.apache.jena.sparql.expr.Expr... exprs) -
orifyBalanced
public static org.apache.jena.sparql.expr.Expr orifyBalanced(org.apache.jena.sparql.expr.Expr... exprs) -
extractNames
-
andifyBalanced
public static org.apache.jena.sparql.expr.Expr andifyBalanced(Iterable<org.apache.jena.sparql.expr.Expr> exprs) -
distribute
public static <T> T distribute(List<T> as, List<T> bs, BinaryOperator<T> innerJunctor, BinaryOperator<T> outerJunctor) -
opify
-
opifyBalanced
public static <T> T opifyBalanced(Iterable<? extends T> exprs, BiFunction<? super T, ? super T, ? extends T> exprFactory) Concatenates the sub exressions using a binary operator This method is not jena dependent and could be moved to aksw-commons and(and(0, 1), and(2, 3))- Parameters:
exprs-- Returns:
-
orifyBalanced
public static org.apache.jena.sparql.expr.Expr orifyBalanced(Iterable<org.apache.jena.sparql.expr.Expr> exprs) -
extractConstantConstraint
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractConstantConstraint(org.apache.jena.sparql.expr.Expr expr) -
extractVarConstant
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractVarConstant(org.apache.jena.sparql.expr.Expr expr) -
extractVarConstant
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractVarConstant(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) -
extractVarConstantDirected
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.NodeValue> extractVarConstantDirected(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b) If a is a variable and b is a constant, then a mapping of the variable to the constant is put into the map, and true is returned. Otherwise, nothing is changed, and false is returned. A mapping of a variable is set to null, if it is mapped to multiple constants- Parameters:
a-b-- Returns:
-
getSubExprs
public static List<org.apache.jena.sparql.expr.Expr> getSubExprs(org.apache.jena.sparql.expr.Expr expr) -
signaturize
public static org.apache.jena.sparql.expr.Expr signaturize(org.apache.jena.sparql.expr.Expr expr) Replace all variable names with the same variable (?a in this case). Useful for checking whether two expressions are structurally equivalent.- Parameters:
expr-
-
signaturize
public static org.apache.jena.sparql.expr.Expr signaturize(org.apache.jena.sparql.expr.Expr expr, Map<?, ? extends org.apache.jena.graph.Node> nodeMap) -
linearizePrefix
public static <T> Stream<T> linearizePrefix(T op, Collection<T> stopMarker, Function<? super T, Iterable<? extends T>> getChildren) linearize any structure into a flat list TODO Provide an example- Parameters:
op-stopMarker-getChildren-- Returns:
-
linearizePrefix
public static Stream<org.apache.jena.sparql.expr.Expr> linearizePrefix(org.apache.jena.sparql.expr.Expr expr, Collection<org.apache.jena.sparql.expr.Expr> stopMarkers) Traverse the expr- Parameters:
expr-- Returns:
-
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.Expr proto, org.apache.jena.sparql.expr.Expr... args) -
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.Expr proto, List<org.apache.jena.sparql.expr.Expr> args) -
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.Expr proto, org.apache.jena.sparql.expr.ExprList args) -
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.ExprFunction0 func, org.apache.jena.sparql.expr.ExprList args) -
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.ExprFunction1 func, org.apache.jena.sparql.expr.ExprList args) -
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.ExprFunction2 func, org.apache.jena.sparql.expr.ExprList args) -
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.ExprFunction3 func, org.apache.jena.sparql.expr.ExprList args) -
copy
public static org.apache.jena.sparql.expr.Expr copy(org.apache.jena.sparql.expr.ExprFunctionN func, org.apache.jena.sparql.expr.ExprList args) -
replace
public static org.apache.jena.sparql.expr.Expr replace(org.apache.jena.sparql.expr.Expr expr, Function<? super org.apache.jena.sparql.expr.Expr, ? extends org.apache.jena.sparql.expr.Expr> fn) Perform a depth-first-in-order traversal and substitute children w.r.t. the given replacement function.- Parameters:
expr-fn-- Returns:
-
factorize
public static org.apache.jena.sparql.expr.Expr factorize(org.apache.jena.sparql.expr.Expr expr, com.google.common.collect.BiMap<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.expr.Expr> cxt, org.apache.jena.sparql.core.VarAlloc varAlloc, org.aksw.commons.util.algebra.ExprFilter<org.apache.jena.sparql.expr.Expr> isBlocker) Allocate a single varible for every unique expression. Main use case is common sub expression elimination. -
evalToArray
public static org.apache.jena.sparql.expr.NodeValue[] evalToArray(List<org.apache.jena.sparql.expr.Expr> exprs, org.apache.jena.sparql.engine.binding.Binding input, org.apache.jena.sparql.function.FunctionEnv env)
-