Class ExprUtils

java.lang.Object
org.aksw.jenax.arq.util.expr.ExprUtils

public class ExprUtils extends Object
Author:
Claus Stadler

Date: 1/8/12 Time: 6:18 PM

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
    static class 
    Generic accessor for expressions.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static org.apache.jena.sparql.expr.Expr
    andifyBalanced(Iterable<org.apache.jena.sparql.expr.Expr> exprs)
     
    static org.apache.jena.sparql.expr.Expr
    andifyBalanced(org.apache.jena.sparql.expr.Expr... exprs)
     
    static org.apache.jena.sparql.expr.Expr
    applyNodeTransform(org.apache.jena.sparql.expr.Expr expr, Map<?,? extends org.apache.jena.graph.Node> nodeMap)
     
    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]
    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)
     
    static int
    classify(org.apache.jena.sparql.expr.Expr e)
     
    static int
    compare(org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b)
     
    static boolean
    containsExprAggregator(org.apache.jena.sparql.expr.Expr expr)
    Return true iff expr makes use of at least one ExprAggregator
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.ExprFunction0 func, org.apache.jena.sparql.expr.ExprList args)
     
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.ExprFunction1 func, org.apache.jena.sparql.expr.ExprList args)
     
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.ExprFunction2 func, org.apache.jena.sparql.expr.ExprList args)
     
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.ExprFunction3 func, org.apache.jena.sparql.expr.ExprList args)
     
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.ExprFunctionN func, org.apache.jena.sparql.expr.ExprList args)
     
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.Expr proto, List<org.apache.jena.sparql.expr.Expr> args)
     
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.Expr proto, org.apache.jena.sparql.expr.Expr... args)
     
    static org.apache.jena.sparql.expr.Expr
    copy(org.apache.jena.sparql.expr.Expr proto, org.apache.jena.sparql.expr.ExprList args)
     
    static <T> T
    distribute(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)
     
    static List<String>
    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.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.
     
    static String
    getFunctionId(org.apache.jena.sparql.expr.ExprFunction fn)
     
    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.
    static List<org.apache.jena.sparql.expr.Expr>
    getSubExprs(org.apache.jena.sparql.expr.Expr expr)
     
    static boolean
    isConstantArgsOnly(org.apache.jena.sparql.expr.ExprFunction fn)
    Checks wtherer all arguments of the given function are constants (non-recursive).
    static boolean
    isConstantsOnly(Iterable<org.apache.jena.sparql.expr.Expr> exprs)
     
    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
    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
    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
    static Set<org.apache.jena.graph.Node>
    nodesMentioned(org.apache.jena.sparql.expr.Expr expr)
    Return the set of nodes mentioned in a path
    static org.apache.jena.sparql.expr.E_NotOneOf
    notOneOf(org.apache.jena.graph.Node v, Collection<org.apache.jena.graph.Node> args)
     
    static org.apache.jena.sparql.expr.E_NotOneOf
    notOneOf(org.apache.jena.graph.Node v, org.apache.jena.graph.Node... args)
     
    static org.apache.jena.sparql.expr.E_OneOf
    oneOf(String varName, Collection<org.apache.jena.graph.Node> nodes)
     
    static org.apache.jena.sparql.expr.E_OneOf
    oneOf(org.apache.jena.graph.Node v, Iterable<org.apache.jena.graph.Node> args)
     
    static org.apache.jena.sparql.expr.E_OneOf
    oneOf(org.apache.jena.graph.Node v, org.apache.jena.graph.Node... args)
     
    static org.apache.jena.sparql.expr.E_OneOf
    oneOfIris(String varName, String... iris)
     
    static <T> Optional<T>
    opify(Iterable<T> exprs, BinaryOperator<T> exprFactory)
     
    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))
    static org.apache.jena.sparql.expr.Expr
    orifyBalanced(Iterable<org.apache.jena.sparql.expr.Expr> exprs)
     
    static org.apache.jena.sparql.expr.Expr
    orifyBalanced(org.apache.jena.sparql.expr.Expr... exprs)
     
    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.
    static org.apache.jena.sparql.expr.Expr
    reverseVarRename(org.apache.jena.sparql.expr.Expr expr)
    Repeatedly reverse var naming of Rename.renameVars(Expr, Set).
    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).
    static org.apache.jena.sparql.expr.Expr
    signaturize(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)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ExprUtils

      public ExprUtils()
  • Method Details

    • getExprOps

      public static ExprUtils.ExprOps 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

      public static Set<org.apache.jena.graph.Node> nodesMentioned(org.apache.jena.sparql.expr.Expr expr)
      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 of Rename.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

      public static org.apache.jena.sparql.expr.E_OneOf oneOfIris(String varName, String... iris)
    • 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

      public static boolean isConstantsOnly(Iterable<org.apache.jena.sparql.expr.Expr> exprs)
    • 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

      public static String getFunctionId(org.apache.jena.sparql.expr.ExprFunction fn)
    • 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

      public static List<String> extractNames(Collection<org.apache.jena.sparql.core.Var> vars)
    • 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

      public static <T> Optional<T> opify(Iterable<T> exprs, BinaryOperator<T> exprFactory)
    • 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)