Package org.aksw.jenax.arq.util.syntax
Class QueryHash
java.lang.Object
org.aksw.jenax.arq.util.syntax.QueryHash
A hasher for SPARQL queries that keeps track of separate hash codes for the
body, the subset of the projection (w.r.t. visible variables), the permutation of the projection and
The hash for
SELECT COUNT(?p) { ?s ?p ?o } GROUP BY STR(?o) LIMIT 10 OFFSET 2
is
ftiGBh8SJSZ89mbO9FOsCtHSSD1t3nqqTox3JNisfvI/MD9wyw/1/2+10
- Author:
- raven
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected LehmerHashprotected com.google.common.hash.HashCodeprotected LehmerHashprotected LehmerHashprotected org.apache.jena.query.Queryprotected LehmerHashprotected LehmerHashprotected LehmerHashprotected org.apache.jena.query.QueryThe body query is essentially a version of the query with an altered projection: For non-group-by queries: The projection gets replaced with SELECT * For group-by-queries:protected LehmerHashprotected com.google.common.hash.HashCodeprotected com.google.common.hash.HashCode -
Constructor Summary
ConstructorsConstructorDescriptionQueryHash(org.apache.jena.query.Query originalQuery, org.apache.jena.query.Query harmonizedQuery, com.google.common.hash.HashCode bodyHashCode, LehmerHash aggHash, LehmerHash groupByHash, LehmerHash havingHash, LehmerHash orderByHash, LehmerHash projecHash, com.google.common.hash.HashCode relabelHash, LehmerHash defaultGraphHash, LehmerHash namedGraphHash, com.google.common.hash.HashCode prologueHash) -
Method Summary
Modifier and TypeMethodDescriptionstatic QueryHashcreateHash(org.apache.jena.query.Query query) static Stringfmt(org.apache.jena.query.SortCondition sc) Format a sort conditioncom.google.common.hash.HashCodeorg.apache.jena.query.Querystatic Set<org.apache.jena.sparql.core.Var>getNonAggregateVars(org.apache.jena.query.Query query) Return the set of result variables that DO NOT map to an expression making use of an aggregatororg.apache.jena.query.Querystatic org.apache.jena.sparql.core.VargetOrNext(Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.apache.jena.sparql.core.Var v, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) com.google.common.hash.HashCodeprotected StringgetQueryTypePrefix(org.apache.jena.query.QueryType queryType) com.google.common.hash.HashCodestatic StringgetSpecialPrefix(org.apache.jena.sparql.core.Var var) static <T> LehmerHashhash(com.google.common.hash.HashFunction hashFn, Collection<T> elements, Function<T, String> toString) static voidstatic org.apache.jena.sparql.core.VarnextVar(org.apache.jena.sparql.core.Var baseVar, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) static org.apache.jena.sparql.graph.NodeTransformnodeTransform(Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) static voidrelabelVariables(org.apache.jena.query.Query query) static Stringstr(byte[] rawBytes) Create a base64url encoded string from the trimmed byte array.static Stringstr(com.google.common.hash.HashCode hashCode) str(BigInteger value) static LehmerHashtoHashCode(org.apache.jena.sparql.core.VarExprList vel) toString()static List<org.apache.jena.sparql.expr.Expr>transform(List<org.apache.jena.sparql.expr.Expr> es, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) static List<org.apache.jena.sparql.expr.ExprAggregator>transform(List<org.apache.jena.sparql.expr.ExprAggregator> eas, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) static org.apache.jena.graph.Nodetransform(org.apache.jena.graph.Node node, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) static org.apache.jena.sparql.core.VarExprListtransform(org.apache.jena.sparql.core.VarExprList vel, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.Expr> transform(org.apache.jena.sparql.core.Var v, org.apache.jena.sparql.expr.Expr e, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) If there is an expression and the variable is not yet relabeled, then the given variable is remapped to a hash of that expression.static org.apache.jena.sparql.expr.ExprAggregatortransform(org.apache.jena.sparql.expr.ExprAggregator ea, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) static org.apache.jena.sparql.expr.Exprtransform(org.apache.jena.sparql.expr.Expr e, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) static org.apache.jena.sparql.syntax.Templatetransform(org.apache.jena.sparql.syntax.Template template, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) static byte[]trim(byte[] rawBytes) Return a copy of the byte array with any leading 0s removed
-
Field Details
-
originalQuery
protected org.apache.jena.query.Query originalQueryThe body query is essentially a version of the query with an altered projection: For non-group-by queries: The projection gets replaced with SELECT * For group-by-queries: -
harmonizedQuery
protected org.apache.jena.query.Query harmonizedQuery -
bodyHashCode
protected com.google.common.hash.HashCode bodyHashCode -
aggHash
-
groupByHash
-
havingHash
-
orderByHash
-
projecHash
-
defaultGraphHash
-
namedGraphHash
-
relabelHash
protected com.google.common.hash.HashCode relabelHash -
prologueHash
protected com.google.common.hash.HashCode prologueHash
-
-
Constructor Details
-
QueryHash
public QueryHash(org.apache.jena.query.Query originalQuery, org.apache.jena.query.Query harmonizedQuery, com.google.common.hash.HashCode bodyHashCode, LehmerHash aggHash, LehmerHash groupByHash, LehmerHash havingHash, LehmerHash orderByHash, LehmerHash projecHash, com.google.common.hash.HashCode relabelHash, LehmerHash defaultGraphHash, LehmerHash namedGraphHash, com.google.common.hash.HashCode prologueHash)
-
-
Method Details
-
getOriginalQuery
public org.apache.jena.query.Query getOriginalQuery() -
getHarmonizedQuery
public org.apache.jena.query.Query getHarmonizedQuery() -
getBodyHashCode
public com.google.common.hash.HashCode getBodyHashCode() -
getAggHash
-
getGroupByHash
-
getHavingHash
-
getOrderByHash
-
getProjecHash
-
getRelabelHash
public com.google.common.hash.HashCode getRelabelHash() -
getDefaultGraphHash
-
getNamedGraphHash
-
getPrologueHash
public com.google.common.hash.HashCode getPrologueHash() -
getNonAggregateVars
public static Set<org.apache.jena.sparql.core.Var> getNonAggregateVars(org.apache.jena.query.Query query) Return the set of result variables that DO NOT map to an expression making use of an aggregator -
relabelVariables
public static void relabelVariables(org.apache.jena.query.Query query) -
createHash
-
fmt
Format a sort condition -
transform
public static List<org.apache.jena.sparql.expr.ExprAggregator> transform(List<org.apache.jena.sparql.expr.ExprAggregator> eas, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) -
transform
public static org.apache.jena.sparql.core.VarExprList transform(org.apache.jena.sparql.core.VarExprList vel, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) -
transform
-
transform
public static org.apache.jena.sparql.expr.Expr transform(org.apache.jena.sparql.expr.Expr e, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) -
transform
public static Map.Entry<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.expr.Expr> transform(org.apache.jena.sparql.core.Var v, org.apache.jena.sparql.expr.Expr e, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) If there is an expression and the variable is not yet relabeled, then the given variable is remapped to a hash of that expression. -
getOrNext
public static org.apache.jena.sparql.core.Var getOrNext(Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.apache.jena.sparql.core.Var v, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) -
nextVar
public static org.apache.jena.sparql.core.Var nextVar(org.apache.jena.sparql.core.Var baseVar, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) -
getSpecialPrefix
-
nodeTransform
public static org.apache.jena.sparql.graph.NodeTransform nodeTransform(Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) -
transform
public static org.apache.jena.graph.Node transform(org.apache.jena.graph.Node node, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) -
transform
public static org.apache.jena.sparql.syntax.Template transform(org.apache.jena.sparql.syntax.Template template, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen) -
transform
public static org.apache.jena.sparql.expr.ExprAggregator transform(org.apache.jena.sparql.expr.ExprAggregator ea, Map<org.apache.jena.sparql.core.Var, org.apache.jena.sparql.core.Var> relabel, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGen, com.google.common.hash.HashFunction hashFn) -
toHashCode
-
hash
public static <T> LehmerHash hash(com.google.common.hash.HashFunction hashFn, Collection<T> elements, Function<T, String> toString) -
str
-
trim
public static byte[] trim(byte[] rawBytes) Return a copy of the byte array with any leading 0s removed -
str
Create a base64url encoded string from the trimmed byte array. If the trimmed byte array is empty, then a single 0 byte is used instead. -
str
-
getQueryTypePrefix
-
toString
-
main
-