Class AlgebraUtils

java.lang.Object
org.aksw.jena_sparql_api.algebra.utils.AlgebraUtils

public class AlgebraUtils extends Object
TODO Separate cache specific parts from query containment ones
Author:
raven
  • Constructor Details

    • AlgebraUtils

      public AlgebraUtils()
  • Method Details

    • createDefaultRewriter

      public static org.apache.jena.sparql.algebra.optimize.Rewrite createDefaultRewriter()
    • createCachingOp

      public static org.apache.jena.sparql.algebra.Op createCachingOp(org.apache.jena.sparql.algebra.Op subOp, org.apache.jena.graph.Node storageRef)
      Wrap a node with a caching operation
      Parameters:
      subOp -
      cacheRef - The cache entry to create and where the result set will be stored
      Returns:
    • fromQuery

      public static QuadFilterPatternCanonical fromQuery(org.apache.jena.query.Query query)
      Utility method to quickly create a canonical quad filter pattern from a query.
      Parameters:
      query -
      Returns:
    • toProjectedOp

      public static ProjectedOp toProjectedOp(org.apache.jena.query.Query query)
    • removeDefaultGraphFilter

      public static QuadFilterPatternCanonical removeDefaultGraphFilter(QuadFilterPatternCanonical qfpc)
    • optimizeFilters

      public static ProjectedQuadFilterPattern optimizeFilters(ProjectedQuadFilterPattern pqfp)
    • optimizeFilters

      public static QuadFilterPatternCanonical optimizeFilters(Collection<org.apache.jena.sparql.core.Quad> quads, Set<Set<org.apache.jena.sparql.expr.Expr>> cnf, Set<org.apache.jena.sparql.core.Var> projection)
    • wrapWithServiceOld

      public static org.apache.jena.sparql.algebra.op.OpService wrapWithServiceOld(org.apache.jena.sparql.algebra.Op patternOp, org.apache.jena.graph.Node serviceNode, org.apache.jena.sparql.algebra.Op executionOp)
      Create a service node with a union where the first member is to be interpreted as the pattern that should be used for caching, and the second argument is the pattern to be executed.
      Parameters:
      patternOp -
      serviceNode -
      executionOp -
      Returns:
    • normalize

      public static Set<Set<org.apache.jena.sparql.expr.Expr>> normalize(org.apache.jena.sparql.core.Quad quad, Set<Set<org.apache.jena.sparql.expr.Expr>> nf)
      Rename all variables to ?g ?s ?p ?o based on the given quad and the cnf This is used for looking up triples having a certain expression over its components ([?g ?s ?s ?o], (fn(?s, ?o))
      Parameters:
      quad -
      expr -
    • add

      public static Set<Set<org.apache.jena.sparql.expr.Expr>> add(org.apache.jena.sparql.core.Quad quad, Set<Set<org.apache.jena.sparql.expr.Expr>> cnf)
    • cutProjectionAndNormalize

      public static ProjectedOp cutProjectionAndNormalize(org.apache.jena.sparql.algebra.Op op, org.apache.jena.sparql.algebra.optimize.Rewrite opNormalizer)
    • cutProjection

      public static ProjectedOp cutProjection(org.apache.jena.sparql.algebra.Op op)
      Cut away the projection (TODO: and maybe extend) of an op (if any), and return the projection as a standalone object together with the remaining op.
      Parameters:
      residualOp -
      Returns:
    • transform

      public static ProjectedQuadFilterPattern transform(org.apache.jena.query.Query query)
    • transform2

      public static QuadFilterPatternCanonical transform2(org.apache.jena.query.Query query)
    • transform

      public static ProjectedQuadFilterPattern transform(org.apache.jena.sparql.syntax.Element element)
    • extractQuadFilterPatternCanonical

      public static QuadFilterPatternCanonical extractQuadFilterPatternCanonical(org.apache.jena.sparql.algebra.Op op)
    • tryExtractConjunctiveQuery

      public static ConjunctiveQuery tryExtractConjunctiveQuery(org.apache.jena.sparql.algebra.Op op, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator)
    • extractQuadFilterPattern

      public static QuadFilterPattern extractQuadFilterPattern(org.apache.jena.sparql.algebra.Op op)
    • transform

      public static ProjectedQuadFilterPattern transform(org.apache.jena.sparql.algebra.Op op)
      Note assumes that this has been applied so far: op = Algebra.toQuadForm(op); op = ReplaceConstants.replace(op);
      Parameters:
      op -
      Returns:
    • quadToCnf

      public static Map<org.apache.jena.sparql.core.Quad,Set<Set<org.apache.jena.sparql.expr.Expr>>> quadToCnf(QuadFilterPattern qfp)
    • tryCreateCqfpOld

      public static OpExtConjunctiveQuery tryCreateCqfpOld(org.apache.jena.sparql.algebra.Op op, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator)
    • tryCreateCqfp

      public static org.apache.jena.sparql.algebra.Op tryCreateCqfp(org.apache.jena.sparql.algebra.Op op, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator)
    • canonicalize2

      public static QuadFilterPatternCanonical canonicalize2(QuadFilterPattern qfp, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator)
    • canonicalize2old

      public static QuadFilterPatternCanonical canonicalize2old(QuadFilterPattern qfp, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator)
    • canonicalize

      public static QuadFilterPatternCanonical canonicalize(QuadFilterPatternCanonical qfpc, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator)
    • replaceConstants

      public static QuadFilterPatternCanonical replaceConstants(Iterable<org.apache.jena.sparql.core.Quad> quads, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator)
    • summarize

      public static PatternSummary summarize(QuadFilterPattern originalPattern)
    • createMapQuadsToFilters

      public static org.aksw.commons.collections.multimaps.IBiSetMultimap<org.apache.jena.sparql.core.Quad,Set<Set<org.apache.jena.sparql.expr.Expr>>> createMapQuadsToFilters(QuadFilterPatternCanonical qfpc)
      Note: the result map contains all quads - quads without constraints map to an empty set
      Parameters:
      quads -
      filterCnf -
      Returns:
    • createMapQuadsToFilters

      public static org.aksw.commons.collections.multimaps.IBiSetMultimap<org.apache.jena.sparql.core.Quad,Set<Set<org.apache.jena.sparql.expr.Expr>>> createMapQuadsToFilters(Set<org.apache.jena.sparql.core.Quad> quads, Set<Set<org.apache.jena.sparql.expr.Expr>> filterDnf)
    • createExpr

      public static org.apache.jena.sparql.expr.Expr createExpr(org.apache.jena.query.ResultSet rs, Map<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.core.Var> varMap)
    • getResultSetCol

      public static Set<org.apache.jena.graph.Node> getResultSetCol(org.apache.jena.query.ResultSet rs, org.apache.jena.sparql.core.Var v)
    • nodesToExprs

      public static org.apache.jena.sparql.expr.ExprList nodesToExprs(Iterable<org.apache.jena.graph.Node> nodes)
    • quadJoinSummary

      public static com.google.common.collect.SetMultimap<org.apache.jena.sparql.core.Quad,org.apache.jena.sparql.core.Quad> quadJoinSummary(List<org.apache.jena.sparql.core.Quad> sub)
      TODO this has complexity O(n^2) We can surely do better than that because joins are sparse and we don't have to consider quads that do not join...
      Parameters:
      sub -
      Returns:
    • getRefVars

      public static Set<org.apache.jena.sparql.core.Var> getRefVars(org.apache.jena.query.Query query)
    • indexDnf

      public static org.aksw.commons.collections.FeatureMap<org.apache.jena.sparql.expr.Expr,com.google.common.collect.Multimap<org.apache.jena.sparql.expr.Expr,org.apache.jena.sparql.expr.Expr>> indexDnf(Set<Set<org.apache.jena.sparql.expr.Expr>> dnf)