Package org.aksw.jenax.arq.util.syntax
Class QueryUtils
java.lang.Object
org.aksw.jenax.arq.util.syntax.QueryUtils
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidapplyDatasetDescription(org.apache.jena.query.Query query, org.apache.jena.sparql.core.DatasetDescription dd) static org.apache.jena.query.QueryapplyElementTransform(org.apache.jena.query.Query beforeQuery, Function<? super org.apache.jena.sparql.syntax.Element, ? extends org.apache.jena.sparql.syntax.Element> transform) applyNodeTransform(Map<String, org.apache.jena.graph.Node> jsonMapping, org.apache.jena.sparql.graph.NodeTransform nodeTransform) Transform json mapping obtained via Query.getJsonMapping TODO Actually this should be added to Jena's NodeTransformLib.static org.apache.jena.query.QueryapplyNodeTransform(org.apache.jena.query.Query query, org.apache.jena.sparql.graph.NodeTransform nodeTransform) static org.apache.jena.query.QueryapplyOpTransform(org.apache.jena.query.Query beforeQuery, Function<? super org.apache.jena.sparql.algebra.Op, ? extends org.apache.jena.sparql.algebra.Op> transform) static voidapplyRange(org.apache.jena.query.Query query, com.google.common.collect.Range<Long> range) static org.apache.jena.sparql.algebra.OpapplyRange(org.apache.jena.sparql.algebra.Op op, com.google.common.collect.Range<Long> range) static org.apache.jena.query.QueryapplySlice(org.apache.jena.query.Query query, Long offset, Long limit, boolean cloneOnChange) Limit the query to the given range, relative to its own given rangestatic org.apache.jena.sparql.syntax.ElementasPatternForConstruct(org.apache.jena.query.Query q) static booleancanActAsConstruct(org.apache.jena.query.Query q) static org.apache.jena.query.QueryconstructToSelect(org.apache.jena.query.Query query) Derive a select query that projects only the variables mentioned in the construct query template.static Map<org.apache.jena.sparql.core.Var,org.apache.jena.sparql.core.Var> createRandomVarMap(org.apache.jena.query.Query query, String base) static org.apache.jena.query.QueryelementToQuery(org.apache.jena.sparql.syntax.Element pattern) static org.apache.jena.query.QueryelementToQuery(org.apache.jena.sparql.syntax.Element pattern, String resultVar) static org.apache.jena.sparql.core.VarextractSoleProjectVar(org.apache.jena.query.Query query) Extract a single projection variable from the query.static org.apache.jena.query.QueryfixVarNames(org.apache.jena.query.Query query) static org.apache.jena.sparql.core.VarfreshVar(org.apache.jena.query.Query query) static org.apache.jena.sparql.core.Varstatic booleanReturns true iff the argument is neither: null, Query.NOLIMIT nor Long.MAX_VALUEstatic booleanhasNonZeroOffset(Long offset) Returns true iff the argument is non null, not equal to Query.NOLIMIT and greater than 0 This function returns true for any negative value unless it is equal to Query.NOLIMIT.static voidinjectElement(org.apache.jena.query.Query query, org.apache.jena.sparql.syntax.Element element) static voidinjectFilter(org.apache.jena.query.Query query, String exprStr) static voidinjectFilter(org.apache.jena.query.Query query, String varName, org.apache.jena.graph.Node node) static voidinjectFilter(org.apache.jena.query.Query query, org.apache.jena.sparql.core.Var var, org.apache.jena.graph.Node node) static voidinjectFilter(org.apache.jena.query.Query query, org.apache.jena.sparql.expr.Expr expr) static Set<org.apache.jena.sparql.core.Quad>instanciate(Iterable<org.apache.jena.sparql.core.Quad> quads, org.apache.jena.sparql.engine.binding.Binding binding) This method does basically the same as org.apache.jena.sparql.engine.QueryExecutionBase.execConstruct and SparqlerBaseSelect note sure if it is redundantstatic Set<org.apache.jena.graph.Node>mentionedNodes(org.apache.jena.query.Query query) static Set<org.apache.jena.sparql.core.Var>mentionedVars(org.apache.jena.query.Query query) static org.apache.jena.query.QueryoptimizePrefixes(org.apache.jena.query.Query query) static org.apache.jena.query.QueryoptimizePrefixes(org.apache.jena.query.Query query, org.apache.jena.shared.PrefixMapping globalPm) In-place optimize a query's prefixes to only used prefixesstatic voidoverwriteDatasetDescription(org.apache.jena.query.Query query, org.apache.jena.sparql.core.DatasetDescription dd) static org.apache.jena.query.QueryrandomizeVars(org.apache.jena.query.Query query) static longrangeToLimit(com.google.common.collect.Range<Long> range) static longrangeToOffset(com.google.common.collect.Range<Long> range) static org.apache.jena.query.QueryrestoreQueryForm(org.apache.jena.query.Query query, org.apache.jena.query.Query proto) Restore a query form from a prototype.static org.apache.jena.query.QueryrestrictToLimit(org.apache.jena.query.Query query, long limit, boolean cloneOnChange) Restrict a query's limit to the given argument.static org.apache.jena.query.Queryrewrite(org.apache.jena.query.Query beforeQuery, Function<? super org.apache.jena.sparql.algebra.Op, ? extends org.apache.jena.sparql.algebra.Op> xform) Rewrite a query based on an algebraic transformation; preserves the construct templatestatic org.apache.jena.query.QueryselectToConstruct(org.apache.jena.query.Query query, org.apache.jena.sparql.syntax.Template template) static org.apache.jena.query.QuerysetQueryType(org.apache.jena.query.Query query, org.apache.jena.query.QueryType queryType) Set the query type on a given query.static booleanshouldDisablePatternReorder(org.apache.jena.query.Query query) Triple pattern reordering can give significant performance boosts on SPARQL queries but when SERVICE clauses and/or user defined property functions are in use it can lead to unexpected results.static com.google.common.collect.Range<Long>subRange(com.google.common.collect.Range<Long> _parent, com.google.common.collect.Range<Long> _child) Returns the absolute range for a child range relative to a parent range Assumes that both ranges have a lower endpointstatic com.google.common.collect.Range<Long>static com.google.common.collect.Range<Long>toRange(org.apache.jena.query.Query query) static com.google.common.collect.Range<Long>toRange(org.apache.jena.sparql.algebra.op.OpSlice op) static org.apache.jena.query.QueryunionConstruct(Iterable<org.apache.jena.query.Query> queries) Combine multiple construct queries into a single query whose template and query pattern is the union of those of the provided queries This method does NOT perform any renaming of variables.static org.apache.jena.query.QueryunionConstruct(org.apache.jena.query.Query... queries) Combine multiple construct queries into a single query whose template and query pattern is the union of those of the provided queries This method does NOT perform any renaming of variables.static org.apache.jena.shared.PrefixMappingusedPrefixes(org.apache.jena.query.Query query) Scans the query for all occurrences of URI nodes and returns the applicable subset of its prefix mapping.static org.apache.jena.shared.PrefixMappingusedPrefixes(org.apache.jena.query.Query query, org.apache.jena.shared.PrefixMapping global) Determines the used prefixes w.r.t the query's local prefixes and a global prefix map (may be null).static org.apache.jena.shared.PrefixMappingusedReferencePrefixes(org.apache.jena.query.Query query, org.apache.jena.shared.PrefixMapping pm) Determine used prefixes within the given prefix mapping.
-
Constructor Details
-
QueryUtils
public QueryUtils()
-
-
Method Details
-
setQueryType
public static org.apache.jena.query.Query setQueryType(org.apache.jena.query.Query query, org.apache.jena.query.QueryType queryType) Set the query type on a given query.- Parameters:
query- The query on which to set the query typequeryType- The query type to set- Returns:
- The given query
-
applyElementTransform
public static org.apache.jena.query.Query applyElementTransform(org.apache.jena.query.Query beforeQuery, Function<? super org.apache.jena.sparql.syntax.Element, ? extends org.apache.jena.sparql.syntax.Element> transform) -
applyOpTransform
public static org.apache.jena.query.Query applyOpTransform(org.apache.jena.query.Query beforeQuery, Function<? super org.apache.jena.sparql.algebra.Op, ? extends org.apache.jena.sparql.algebra.Op> transform) -
restoreQueryForm
public static org.apache.jena.query.Query restoreQueryForm(org.apache.jena.query.Query query, org.apache.jena.query.Query proto) Restore a query form from a prototype. Typical use case is when a CONSTRUCT query should be restored after a it was compiled using Algebra.compile() (which discards the template part). Also restores FROM and FROM NAMED.- Parameters:
query-proto-- Returns:
-
unionConstruct
public static org.apache.jena.query.Query unionConstruct(org.apache.jena.query.Query... queries) Combine multiple construct queries into a single query whose template and query pattern is the union of those of the provided queries This method does NOT perform any renaming of variables.- Parameters:
queries-- Returns:
-
unionConstruct
public static org.apache.jena.query.Query unionConstruct(Iterable<org.apache.jena.query.Query> queries) Combine multiple construct queries into a single query whose template and query pattern is the union of those of the provided queries This method does NOT perform any renaming of variables.- Parameters:
queries-- Returns:
-
constructToSelect
public static org.apache.jena.query.Query constructToSelect(org.apache.jena.query.Query query) Derive a select query that projects only the variables mentioned in the construct query template. If the template does not mention any variables then SELECT * is used instead.- Parameters:
query-- Returns:
-
selectToConstruct
public static org.apache.jena.query.Query selectToConstruct(org.apache.jena.query.Query query, org.apache.jena.sparql.syntax.Template template) -
rewrite
public static org.apache.jena.query.Query rewrite(org.apache.jena.query.Query beforeQuery, Function<? super org.apache.jena.sparql.algebra.Op, ? extends org.apache.jena.sparql.algebra.Op> xform) Rewrite a query based on an algebraic transformation; preserves the construct template- Parameters:
beforeQuery-xform-- Returns:
-
asPatternForConstruct
public static org.apache.jena.sparql.syntax.Element asPatternForConstruct(org.apache.jena.query.Query q) -
canActAsConstruct
public static boolean canActAsConstruct(org.apache.jena.query.Query q) -
mentionedVars
-
mentionedNodes
-
freshVar
public static org.apache.jena.sparql.core.Var freshVar(org.apache.jena.query.Query query) -
freshVar
public static org.apache.jena.sparql.core.Var freshVar(org.apache.jena.query.Query query, String baseVarName) -
applyNodeTransform
public static Map<String,org.apache.jena.graph.Node> applyNodeTransform(Map<String, org.apache.jena.graph.Node> jsonMapping, org.apache.jena.sparql.graph.NodeTransform nodeTransform) Transform json mapping obtained via Query.getJsonMapping TODO Actually this should be added to Jena's NodeTransformLib.- Parameters:
jsonMapping-nodeTransform-- Returns:
-
applyNodeTransform
public static org.apache.jena.query.Query applyNodeTransform(org.apache.jena.query.Query query, org.apache.jena.sparql.graph.NodeTransform nodeTransform) -
usedPrefixes
public static org.apache.jena.shared.PrefixMapping usedPrefixes(org.apache.jena.query.Query query) Scans the query for all occurrences of URI nodes and returns the applicable subset of its prefix mapping. Note: In principle Jena allows sub queries to define their own prefixes However, this is non-standard and jena raises syntax exception when trying to clone such a query
This method ignores non-standard 'inner' prefixes, so for the example above, the method will "incorrectly" return foo as a used prefix.PREFIX foo: <http://ex.org/foo/> SELECT * { { PREFIX foo2: <http://ex.org/foo/> SELECT * { foo2:a ... } } }- Parameters:
query-- Returns:
-
optimizePrefixes
public static org.apache.jena.query.Query optimizePrefixes(org.apache.jena.query.Query query) -
randomizeVars
public static org.apache.jena.query.Query randomizeVars(org.apache.jena.query.Query query) -
createRandomVarMap
-
injectFilter
public static void injectFilter(org.apache.jena.query.Query query, String varName, org.apache.jena.graph.Node node) -
injectFilter
public static void injectFilter(org.apache.jena.query.Query query, org.apache.jena.sparql.core.Var var, org.apache.jena.graph.Node node) -
injectFilter
-
injectFilter
public static void injectFilter(org.apache.jena.query.Query query, org.apache.jena.sparql.expr.Expr expr) -
injectElement
public static void injectElement(org.apache.jena.query.Query query, org.apache.jena.sparql.syntax.Element element) -
toRange
public static com.google.common.collect.Range<Long> toRange(org.apache.jena.sparql.algebra.op.OpSlice op) -
applyRange
public static org.apache.jena.sparql.algebra.Op applyRange(org.apache.jena.sparql.algebra.Op op, com.google.common.collect.Range<Long> range) -
applySlice
public static org.apache.jena.query.Query applySlice(org.apache.jena.query.Query query, Long offset, Long limit, boolean cloneOnChange) Limit the query to the given range, relative to its own given range- Parameters:
query-offset-limit-cloneOnChange-- Returns:
-
applyRange
public static void applyRange(org.apache.jena.query.Query query, com.google.common.collect.Range<Long> range) -
hasNonZeroOffset
Returns true iff the argument is non null, not equal to Query.NOLIMIT and greater than 0 This function returns true for any negative value unless it is equal to Query.NOLIMIT. -
hasLimit
Returns true iff the argument is neither: null, Query.NOLIMIT nor Long.MAX_VALUE -
rangeToOffset
-
rangeToLimit
-
toRange
-
toRange
-
subRange
public static com.google.common.collect.Range<Long> subRange(com.google.common.collect.Range<Long> _parent, com.google.common.collect.Range<Long> _child) Returns the absolute range for a child range relative to a parent range Assumes that both ranges have a lower endpoint- Parameters:
_parent-_child-- Returns:
-
applyDatasetDescription
public static void applyDatasetDescription(org.apache.jena.query.Query query, org.apache.jena.sparql.core.DatasetDescription dd) -
overwriteDatasetDescription
public static void overwriteDatasetDescription(org.apache.jena.query.Query query, org.apache.jena.sparql.core.DatasetDescription dd) -
fixVarNames
public static org.apache.jena.query.Query fixVarNames(org.apache.jena.query.Query query) -
elementToQuery
public static org.apache.jena.query.Query elementToQuery(org.apache.jena.sparql.syntax.Element pattern, String resultVar) - Parameters:
pattern- a pattern of a where-clauseresultVar- an optional result variable (used for describe queries)- Returns:
-
elementToQuery
public static org.apache.jena.query.Query elementToQuery(org.apache.jena.sparql.syntax.Element pattern) -
instanciate
public static Set<org.apache.jena.sparql.core.Quad> instanciate(Iterable<org.apache.jena.sparql.core.Quad> quads, org.apache.jena.sparql.engine.binding.Binding binding) This method does basically the same as org.apache.jena.sparql.engine.QueryExecutionBase.execConstruct and SparqlerBaseSelect note sure if it is redundant- Parameters:
quads-binding-- Returns:
-
extractSoleProjectVar
public static org.apache.jena.sparql.core.Var extractSoleProjectVar(org.apache.jena.query.Query query) Extract a single projection variable from the query. Illegal argument exception if there are zero or more than 1 candidates. -
shouldDisablePatternReorder
public static boolean shouldDisablePatternReorder(org.apache.jena.query.Query query) Triple pattern reordering can give significant performance boosts on SPARQL queries but when SERVICE clauses and/or user defined property functions are in use it can lead to unexpected results. This method decides whether to disable reordering -
restrictToLimit
public static org.apache.jena.query.Query restrictToLimit(org.apache.jena.query.Query query, long limit, boolean cloneOnChange) Restrict a query's limit to the given argument.
-