Class Query

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

    public class Query
    extends Prologue
    implements java.lang.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:
    QueryExecutionFactory, ResultSet
    • Constructor Detail

      • Query

        public Query()
        Creates a new empty query
      • Query

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

      • setQuerySelectType

        public void setQuerySelectType()
      • setQueryConstructType

        public void setQueryConstructType()
      • setQueryDescribeType

        public void setQueryDescribeType()
      • setQueryAskType

        public void setQueryAskType()
      • setQueryJsonType

        public void setQueryJsonType()
      • getQueryType

        @Deprecated
        public int getQueryType()
        Deprecated.
        Use queryType() which returns a 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​(Node var,
                               int direction)
      • addOrderBy

        public void addOrderBy​(java.lang.String varName,
                               int direction)
      • 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​(java.lang.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 (unamed) graph.
      • addNamedGraphURI

        public void addNamedGraphURI​(java.lang.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 java.util.List<java.lang.String> getGraphURIs()
        Return the list of URIs (strings) for the unnamed graph
        Returns:
        List of strings
      • usesGraphURI

        public boolean usesGraphURI​(java.lang.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 java.util.List<java.lang.String> getNamedGraphURIs()
        Return the list of URIs (strings) for the named graphs (FROM NAMED clause)
        Returns:
        List of strings
      • usesNamedGraphURI

        public boolean usesNamedGraphURI​(java.lang.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 java.util.List<java.lang.String> getResultVars()
        Return a list of the variables requested (SELECT)
      • getProjectVars

        public java.util.List<Var> getProjectVars()
        Return a list of the variables requested (SELECT)
      • addProjectVars

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

        public void addResultVar​(java.lang.String varName)
        Add a projection variable to a SELECT query
      • addResultVar

        public void addResultVar​(Node v)
      • addResultVar

        public void addResultVar​(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​(java.lang.String varName,
                                 Expr expr)
        Add a named expression to a SELECT query
      • hasGroupBy

        public boolean hasGroupBy()
      • hasHaving

        public boolean hasHaving()
      • getHavingExprs

        public java.util.List<Expr> getHavingExprs()
      • addGroupBy

        public void addGroupBy​(java.lang.String varName)
      • addGroupBy

        public void addGroupBy​(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​(java.lang.String key,
                                   Node value)
      • getJsonMapping

        public java.util.Map<java.lang.String,​Node> getJsonMapping()
      • hasAggregators

        public boolean hasAggregators()
      • getAggregators

        public java.util.List<ExprAggregator> getAggregators()
      • hasValues

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

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

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

        public void setValuesDataBlock​(java.util.List<Var> variables,
                                       java.util.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​(Node node)
      • getResultURIs

        public java.util.List<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.
      • clone

        public java.lang.Object clone()
      • cloneQuery

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • toString

        public java.lang.String toString​(Syntax syntax)
      • hashCode

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

        public boolean equals​(java.lang.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 java.lang.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 java.lang.String serialize()
        Convert the query to a string
      • serialize

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

        public void serialize​(java.io.OutputStream out)
        Output the query
        Parameters:
        out - OutputStream
      • serialize

        public void serialize​(java.io.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