Class Query

All Implemented Interfaces:
Cloneable, org.apache.jena.atlas.io.Printable

public class Query extends Prologue implements Cloneable, org.apache.jena.atlas.io.Printable
The data structure for a query as presented externally. There are two ways of creating a query - use the parser to turn a string description of the query into the executable form, and the programmatic way (the parser is calling the programmatic operations driven by the query string). The declarative approach of passing in a string is preferred. Once a query is built, it can be passed to the QueryFactory to produce a query execution engine.
See Also:
  • Field Details

  • Constructor Details

    • Query

      public Query()
      Creates a new empty query
    • Query

      public Query(Prologue prologue)
      Creates a new empty query with the given prologue
  • Method Details

    • setQuerySelectType

      public void setQuerySelectType()
    • setQueryConstructType

      public void setQueryConstructType()
    • setQueryDescribeType

      public void setQueryDescribeType()
    • setQueryAskType

      public void setQueryAskType()
    • setQueryJsonType

      public void setQueryJsonType()
    • queryType

      public QueryType queryType()
      Return the QueryType
    • isSelectType

      public boolean isSelectType()
    • isConstructType

      public boolean isConstructType()
    • isDescribeType

      public boolean isDescribeType()
    • isAskType

      public boolean isAskType()
    • isJsonType

      public boolean isJsonType()
    • isUnknownType

      public boolean isUnknownType()
    • isConstructQuad

      public boolean isConstructQuad()
    • getPrologue

      public Prologue getPrologue()
    • setStrict

      public void setStrict(boolean isStrict)
    • isStrict

      public boolean isStrict()
    • setDistinct

      public void setDistinct(boolean b)
    • isDistinct

      public boolean isDistinct()
    • setReduced

      public void setReduced(boolean b)
    • isReduced

      public boolean isReduced()
    • getSyntax

      public Syntax getSyntax()
      Returns:
      Returns the syntax.
    • setSyntax

      public void setSyntax(Syntax syntax)
      Parameters:
      syntax - The syntax to set.
    • getLimit

      public long getLimit()
    • setLimit

      public void setLimit(long limit)
    • hasLimit

      public boolean hasLimit()
    • getOffset

      public long getOffset()
    • setOffset

      public void setOffset(long offset)
    • hasOffset

      public boolean hasOffset()
    • hasOrderBy

      public boolean hasOrderBy()
    • isOrdered

      public boolean isOrdered()
    • addOrderBy

      public void addOrderBy(SortCondition condition)
    • addOrderBy

      public void addOrderBy(Expr expr, int direction)
    • addOrderBy

      public void addOrderBy(org.apache.jena.graph.Node var, int direction)
    • addOrderBy

      public void addOrderBy(String varName, int direction)
    • getOrderBy

      public List<SortCondition> getOrderBy()
    • isQueryResultStar

      public boolean isQueryResultStar()
      Answer whether the query had SELECT/DESCRIBE/CONSTRUCT *
      Returns:
      boolean as to whether a * result form was seen
    • setQueryResultStar

      public void setQueryResultStar(boolean isQueryStar)
      Set whether the query had SELECT/DESCRIBE *
      Parameters:
      isQueryStar -
    • setQueryPattern

      public void setQueryPattern(Element elt)
    • getQueryPattern

      public Element getQueryPattern()
    • addGraphURI

      public void addGraphURI(String s)
      Location of the source for the data. If the model is not set, then the QueryEngine will attempt to load the data from these URIs into the default (unnamed) graph.
    • addNamedGraphURI

      public void addNamedGraphURI(String uri)
      Location of the source for the data. If the model is not set, then the QueryEngine will attempt to load the data from these URIs as named graphs in the dataset.
    • getGraphURIs

      public List<String> getGraphURIs()
      Return the list of URIs (strings) for the unnamed graph
      Returns:
      List of strings
    • usesGraphURI

      public boolean usesGraphURI(String uri)
      Test whether the query mentions a URI in forming the default graph (FROM clause)
      Parameters:
      uri -
      Returns:
      boolean True if the URI used in a FROM clause
    • getNamedGraphURIs

      public List<String> getNamedGraphURIs()
      Return the list of URIs (strings) for the named graphs (FROM NAMED clause)
      Returns:
      List of strings
    • usesNamedGraphURI

      public boolean usesNamedGraphURI(String uri)
      Test whether the query mentions a URI for a named graph.
      Parameters:
      uri -
      Returns:
      True if the URI used in a FROM NAMED clause
    • hasDatasetDescription

      public boolean hasDatasetDescription()
      Return true if the query has either some graph URIs or some named graph URIs in its description. This does not mean these URIs will be used - just that they are noted as part of the query.
    • getDatasetDescription

      public DatasetDescription getDatasetDescription()
      Return a dataset description (FROM/FROM NAMED clauses) for the query.
    • getResultVars

      public List<String> getResultVars()
      Return a list of the variables requested (SELECT)
    • getProjectVars

      public List<Var> getProjectVars()
      Return a list of the variables requested (SELECT)
    • getProject

      public VarExprList getProject()
    • addProjectVars

      public void addProjectVars(Collection<?> vars)
      Add a collection of projection variables to a SELECT query
    • addResultVar

      public void addResultVar(String varName)
      Add a projection variable to a SELECT query
    • addResultVar

      public void addResultVar(org.apache.jena.graph.Node v)
    • addResultVar

      public void addResultVar(org.apache.jena.graph.Node v, Expr expr)
    • addResultVar

      public void addResultVar(Expr expr)
      Add an to a SELECT query (a name will be created for it)
    • addResultVar

      public void addResultVar(String varName, Expr expr)
      Add a named expression to a SELECT query
    • hasGroupBy

      public boolean hasGroupBy()
    • hasHaving

      public boolean hasHaving()
    • getGroupBy

      public VarExprList getGroupBy()
    • getHavingExprs

      public List<Expr> getHavingExprs()
    • addGroupBy

      public void addGroupBy(String varName)
    • addGroupBy

      public void addGroupBy(org.apache.jena.graph.Node v)
    • addGroupBy

      public void addGroupBy(Expr expr)
    • addGroupBy

      public void addGroupBy(Var v, Expr expr)
    • addHavingCondition

      public void addHavingCondition(Expr expr)
    • addJsonMapping

      public void addJsonMapping(String key, org.apache.jena.graph.Node value)
    • getJsonMapping

      public Map<String,org.apache.jena.graph.Node> getJsonMapping()
    • hasAggregators

      public boolean hasAggregators()
    • getAggregators

      public List<ExprAggregator> getAggregators()
    • allocAggregate

      public Expr allocAggregate(Aggregator agg)
    • hasValues

      public boolean hasValues()
      Does the query have a VALUES trailing block?
    • getValuesVariables

      public List<Var> getValuesVariables()
      Variables from a VALUES trailing block
    • getValuesData

      public List<Binding> getValuesData()
      Data from a VALUES trailing block. null for a Node means undef
    • setValuesDataBlock

      public void setValuesDataBlock(List<Var> variables, List<Binding> values)
    • getConstructTemplate

      public Template getConstructTemplate()
      Get the template pattern for a construct query
    • setConstructTemplate

      public void setConstructTemplate(Template templ)
      Set triple patterns for a construct query
    • addDescribeNode

      public void addDescribeNode(org.apache.jena.graph.Node node)
    • getResultURIs

      public List<org.apache.jena.graph.Node> getResultURIs()
      Get the result list (things wanted - not the results themselves) of a DESCRIBE query.
    • setResultVars

      public void setResultVars()
      Set the results variables if necessary, when the query has "*" (SELECT * or DESCRIBE *) and for a construct query. This operation is idempotent and can be called to ensure the results variables have been set.
    • resetResultVars

      public void resetResultVars()
      If modifying a query, it may be necessary to reset the calculate of the result variables of the query for SELECT * and DESCRIBE * and CONSTRUCT.
    • visit

      public void visit(QueryVisitor visitor)
    • clone

      public Object clone()
    • cloneQuery

      public Query cloneQuery()
      Makes a copy of this query using the syntax transform machinery.
      Returns:
      Copy of this query
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toString

      public String toString(Syntax syntax)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object other)
      Are two queries equals - tests shape and details. Equality means that the queries do the same thing, including same variables, in the same places. Being unequals does not mean the queries do different things. For example, reordering a group or union means that a query is different. Two instances of a query parsed from the same string are equal.
      Overrides:
      equals in class Object
    • output

      public void output(org.apache.jena.atlas.io.IndentedWriter out)
      Specified by:
      output in interface org.apache.jena.atlas.io.Printable
    • serialize

      public String serialize()
      Convert the query to a string
    • serialize

      public String serialize(Syntax syntax)
      Convert the query to a string in the given syntax
      Parameters:
      syntax -
    • serialize

      public void serialize(OutputStream out)
      Output the query
      Parameters:
      out - OutputStream
    • serialize

      public void serialize(OutputStream out, Syntax syntax)
      Output the query
      Parameters:
      out - OutputStream
      syntax - Syntax URI
    • serialize

      public void serialize(org.apache.jena.atlas.io.IndentedWriter writer)
      Format the query
      Parameters:
      writer - IndentedWriter
    • serialize

      public void serialize(org.apache.jena.atlas.io.IndentedWriter writer, Syntax outSyntax)
      Format the query
      Parameters:
      writer - IndentedWriter
      outSyntax - Syntax URI