Class AlgebraUtils
java.lang.Object
org.aksw.jena_sparql_api.algebra.utils.AlgebraUtils
TODO Separate cache specific parts from query containment ones
- Author:
- raven
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic QuadFilterPatternCanonicalcanonicalize(QuadFilterPatternCanonical qfpc, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator) static QuadFilterPatternCanonicalcanonicalize2(QuadFilterPattern qfp, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator) static QuadFilterPatternCanonicalcanonicalize2old(QuadFilterPattern qfp, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator) static org.apache.jena.sparql.algebra.OpcreateCachingOp(org.apache.jena.sparql.algebra.Op subOp, org.apache.jena.graph.Node storageRef) Wrap a node with a caching operationstatic org.apache.jena.sparql.algebra.optimize.Rewritestatic org.apache.jena.sparql.expr.ExprcreateExpr(org.apache.jena.query.ResultSet rs, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> varMap) 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) static org.aksw.commons.collections.multimaps.IBiSetMultimap<org.apache.jena.sparql.core.Quad,Set<Set<org.apache.jena.sparql.expr.Expr>>> Note: the result map contains all quads - quads without constraints map to an empty setstatic ProjectedOpcutProjection(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.static ProjectedOpcutProjectionAndNormalize(org.apache.jena.sparql.algebra.Op op, org.apache.jena.sparql.algebra.optimize.Rewrite opNormalizer) static QuadFilterPatternextractQuadFilterPattern(org.apache.jena.sparql.algebra.Op op) static QuadFilterPatternCanonicalextractQuadFilterPatternCanonical(org.apache.jena.sparql.algebra.Op op) static QuadFilterPatternCanonicalfromQuery(org.apache.jena.query.Query query) Utility method to quickly create a canonical quad filter pattern from a query.static Set<org.apache.jena.sparql.core.Var>getRefVars(org.apache.jena.query.Query query) static Set<org.apache.jena.graph.Node>getResultSetCol(org.apache.jena.query.ResultSet rs, org.apache.jena.sparql.core.Var v) 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>> static org.apache.jena.sparql.expr.ExprListnodesToExprs(Iterable<org.apache.jena.graph.Node> nodes) 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))static QuadFilterPatternCanonicaloptimizeFilters(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) static ProjectedQuadFilterPatternstatic 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...static QuadFilterPatternCanonicalstatic QuadFilterPatternCanonicalreplaceConstants(Iterable<org.apache.jena.sparql.core.Quad> quads, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator) static PatternSummarysummarize(QuadFilterPattern originalPattern) static ProjectedOptoProjectedOp(org.apache.jena.query.Query query) static ProjectedQuadFilterPatterntransform(org.apache.jena.query.Query query) static ProjectedQuadFilterPatterntransform(org.apache.jena.sparql.algebra.Op op) Note assumes that this has been applied so far: op = Algebra.toQuadForm(op); op = ReplaceConstants.replace(op);static ProjectedQuadFilterPatterntransform(org.apache.jena.sparql.syntax.Element element) static QuadFilterPatternCanonicaltransform2(org.apache.jena.query.Query query) static org.apache.jena.sparql.algebra.OptryCreateCqfp(org.apache.jena.sparql.algebra.Op op, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator) static OpExtConjunctiveQuerytryCreateCqfpOld(org.apache.jena.sparql.algebra.Op op, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator) static ConjunctiveQuerytryExtractConjunctiveQuery(org.apache.jena.sparql.algebra.Op op, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> generator) static org.apache.jena.sparql.algebra.op.OpServicewrapWithServiceOld(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.
-
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
Utility method to quickly create a canonical quad filter pattern from a query.- Parameters:
query-- Returns:
-
toProjectedOp
-
removeDefaultGraphFilter
-
optimizeFilters
-
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
-
cutProjectionAndNormalize
public static ProjectedOp cutProjectionAndNormalize(org.apache.jena.sparql.algebra.Op op, org.apache.jena.sparql.algebra.optimize.Rewrite opNormalizer) -
cutProjection
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
-
transform2
-
transform
-
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
-
transform
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
-
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
-
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
-
indexDnf
-