Class QueryEngineHTTP

  • All Implemented Interfaces:
    java.lang.AutoCloseable, QueryExecution

    public class QueryEngineHTTP
    extends java.lang.Object
    implements QueryExecution
    A query execution implementation where queries are executed against a remote service
    • Constructor Summary

      Constructors 
      Constructor Description
      QueryEngineHTTP​(java.lang.String serviceURI, java.lang.String queryString)  
      QueryEngineHTTP​(java.lang.String serviceURI, java.lang.String queryString, org.apache.http.client.HttpClient client)  
      QueryEngineHTTP​(java.lang.String serviceURI, java.lang.String queryString, org.apache.http.client.HttpClient client, org.apache.http.protocol.HttpContext httpContext)  
      QueryEngineHTTP​(java.lang.String serviceURI, Query query)  
      QueryEngineHTTP​(java.lang.String serviceURI, Query query, org.apache.http.client.HttpClient client)  
      QueryEngineHTTP​(java.lang.String serviceURI, Query query, org.apache.http.client.HttpClient client, org.apache.http.protocol.HttpContext httpContext)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void abort()
      Stop in mid execution.
      void addDefaultGraph​(java.lang.String defaultGraph)  
      void addNamedGraph​(java.lang.String name)  
      void addParam​(java.lang.String field, java.lang.String value)  
      void cancel()
      Cancel query evaluation
      void close()
      Close the query execution and stop query evaluation as soon as convenient.
      static java.lang.String defaultAskHeader()  
      static java.lang.String defaultConstructDatasetHeader()  
      static java.lang.String defaultConstructHeader()  
      static java.lang.String defaultSelectHeader()  
      boolean execAsk()
      Execute an ASK query
      Model execConstruct()
      Execute a CONSTRUCT query
      Model execConstruct​(Model model)
      Execute a CONSTRUCT query, putting the statements into 'model'.
      Dataset execConstructDataset()
      Execute a CONSTRUCT query, putting the statements into 'dataset'.
      Dataset execConstructDataset​(Dataset dataset)
      Execute a CONSTRUCT query, putting the statements into 'dataset'.
      java.util.Iterator<Quad> execConstructQuads()
      Execute a CONSTRUCT query, returning the results as an iterator of Quad.
      java.util.Iterator<Triple> execConstructTriples()
      Execute a CONSTRUCT query, returning the results as an iterator of Triple.
      Model execDescribe()
      Execute a DESCRIBE query
      Model execDescribe​(Model model)
      Execute a DESCRIBE query, putting the statements into 'model'.
      java.util.Iterator<Triple> execDescribeTriples()
      Execute a DESCRIBE query, returning the results as an iterator of Triple.
      JsonArray execJson()
      Execute a JSON query and return a json array
      java.util.Iterator<JsonObject> execJsonItems()
      Execute a JSON query and return an interator
      ResultSet execSelect()
      Execute a SELECT query
      java.lang.String getAcceptHeader()
      Get the HTTP Accept header for the request.
      boolean getAllowCompression()
      Gets whether HTTP requests will indicate to the remote server that compressed encoding of responses is accepted
      org.apache.http.client.HttpClient getClient()
      Get the HTTP client in use, if none is set then null.
      Context getContext()
      The properties associated with a query execution - implementation specific parameters This includes Java objects (so it is not an RDF graph).
      Dataset getDataset()
      The dataset against which the query will execute.
      org.apache.http.protocol.HttpContext getHttpContext()
      Get the HTTP context in use, if none is set then null.
      java.lang.String getHttpResponseContentType()
      The Content-Type response header received (null before the remote operation is attempted).
      Query getQuery()
      The query associated with a query execution.
      java.lang.String getQueryString()
      Return the query string.
      long getTimeout1()
      Return the first timeout (time to first result), in milliseconds: negative if unset
      long getTimeout2()
      Return the second timeout (overall query execution after first result), in milliseconds: negative if unset
      boolean isClosed()
      Answer whether this QueryExecution object has been closed or not.
      void setAcceptHeader​(java.lang.String acceptHeader)
      Set the HTTP Accept header for the request.
      void setAllowCompression​(boolean allowed)
      Sets whether the HTTP requests will permit compressed encoding
      void setAskContentType​(java.lang.String contentType)
      Sets the Content Type for ASK queries provided that the format is supported
      void setClient​(org.apache.http.client.HttpClient client)
      Sets the HTTP client to use, if none is set then the default client is used.
      void setDatasetContentType​(java.lang.String contentType)  
      void setDefaultGraphURIs​(java.util.List<java.lang.String> defaultGraphURIs)  
      void setHttpContext​(org.apache.http.protocol.HttpContext context)
      Sets the HTTP context to use, if none is set then the default context is used.
      void setInitialBinding​(QuerySolution binding)
      Set the initial association of variables and values.
      void setInitialBinding​(Binding binding)
      Set the initial association of variables and values.
      void setModelContentType​(java.lang.String contentType)
      Sets the Content Type for CONSTRUCT/DESCRIBE queries provided that the format is supported
      void setNamedGraphURIs​(java.util.List<java.lang.String> namedGraphURIs)  
      void setSelectContentType​(java.lang.String contentType)
      Sets the Content Type for SELECT queries provided that the format is supported
      void setTimeout​(long readTimeout)
      Set time, in milliseconds
      void setTimeout​(long readTimeout, long connectTimeout)
      Set time, in milliseconds
      void setTimeout​(long readTimeout, java.util.concurrent.TimeUnit timeoutUnits)
      Set a timeout on the query execution.
      void setTimeout​(long timeout1, java.util.concurrent.TimeUnit timeUnit1, long timeout2, java.util.concurrent.TimeUnit timeUnit2)
      Set timeouts on the query execution; the first timeout refers to time to first result, the second refers to overall query execution after the first result.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • supportedSelectContentTypes

        public static java.lang.String[] supportedSelectContentTypes
        Supported content types for SELECT queries
      • supportedAskContentTypes

        public static java.lang.String[] supportedAskContentTypes
        Supported content types for ASK queries
    • Constructor Detail

      • QueryEngineHTTP

        public QueryEngineHTTP​(java.lang.String serviceURI,
                               Query query)
      • QueryEngineHTTP

        public QueryEngineHTTP​(java.lang.String serviceURI,
                               Query query,
                               org.apache.http.client.HttpClient client)
      • QueryEngineHTTP

        public QueryEngineHTTP​(java.lang.String serviceURI,
                               Query query,
                               org.apache.http.client.HttpClient client,
                               org.apache.http.protocol.HttpContext httpContext)
      • QueryEngineHTTP

        public QueryEngineHTTP​(java.lang.String serviceURI,
                               java.lang.String queryString)
      • QueryEngineHTTP

        public QueryEngineHTTP​(java.lang.String serviceURI,
                               java.lang.String queryString,
                               org.apache.http.client.HttpClient client)
      • QueryEngineHTTP

        public QueryEngineHTTP​(java.lang.String serviceURI,
                               java.lang.String queryString,
                               org.apache.http.client.HttpClient client,
                               org.apache.http.protocol.HttpContext httpContext)
    • Method Detail

      • setInitialBinding

        public void setInitialBinding​(QuerySolution binding)
        Description copied from interface: QueryExecution
        Set the initial association of variables and values. May not be supported by all QueryExecution implementations.
        Specified by:
        setInitialBinding in interface QueryExecution
      • setInitialBinding

        public void setInitialBinding​(Binding binding)
        Description copied from interface: QueryExecution
        Set the initial association of variables and values. May not be supported by all QueryExecution implementations.
        Specified by:
        setInitialBinding in interface QueryExecution
      • setDefaultGraphURIs

        public void setDefaultGraphURIs​(java.util.List<java.lang.String> defaultGraphURIs)
        Parameters:
        defaultGraphURIs - The defaultGraphURIs to set.
      • setNamedGraphURIs

        public void setNamedGraphURIs​(java.util.List<java.lang.String> namedGraphURIs)
        Parameters:
        namedGraphURIs - The namedGraphURIs to set.
      • setAllowCompression

        public void setAllowCompression​(boolean allowed)
        Sets whether the HTTP requests will permit compressed encoding
      • addParam

        public void addParam​(java.lang.String field,
                             java.lang.String value)
      • addDefaultGraph

        public void addDefaultGraph​(java.lang.String defaultGraph)
        Parameters:
        defaultGraph - The defaultGraph to add.
      • addNamedGraph

        public void addNamedGraph​(java.lang.String name)
        Parameters:
        name - The URI to add.
      • setClient

        public void setClient​(org.apache.http.client.HttpClient client)
        Sets the HTTP client to use, if none is set then the default client is used.
        Parameters:
        client - HTTP client
      • getClient

        public org.apache.http.client.HttpClient getClient()
        Get the HTTP client in use, if none is set then null.
        Returns:
        client HTTP client
      • setHttpContext

        public void setHttpContext​(org.apache.http.protocol.HttpContext context)
        Sets the HTTP context to use, if none is set then the default context is used.
        Parameters:
        context - HTTP context
      • getHttpContext

        public org.apache.http.protocol.HttpContext getHttpContext()
        Get the HTTP context in use, if none is set then null.
        Returns:
        the HttpContext in scope
      • getHttpResponseContentType

        public java.lang.String getHttpResponseContentType()
        The Content-Type response header received (null before the remote operation is attempted).
      • execSelect

        public ResultSet execSelect()
        Description copied from interface: QueryExecution
        Execute a SELECT query

        Important: The name of this method is somewhat of a misnomer in that depending on the underlying implementation this typically does not execute the SELECT query but rather answers a wrapper over an internal data structure that can be used to answer the query. In essence calling this method only returns a plan for executing this query which only gets evaluated when you actually start iterating over the results.

        Specified by:
        execSelect in interface QueryExecution
      • execConstruct

        public Model execConstruct​(Model model)
        Description copied from interface: QueryExecution
        Execute a CONSTRUCT query, putting the statements into 'model'.
        Specified by:
        execConstruct in interface QueryExecution
        Returns:
        Model The model argument for cascaded code.
      • execConstructTriples

        public java.util.Iterator<Triple> execConstructTriples()
        Description copied from interface: QueryExecution
        Execute a CONSTRUCT query, returning the results as an iterator of Triple.

        Caution: This method may return duplicate Triples. This method may be useful if you only need the results for stream processing, as it can avoid having to place the results in a Model.

        Important: The name of this method is somewhat of a misnomer in that depending on the underlying implementation this typically does not execute the CONSTRUCT query but rather answers a wrapper over an internal data structure that can be used to answer the query. In essence calling this method only returns a plan for executing this query which only gets evaluated when you actually start iterating over the results.

        Specified by:
        execConstructTriples in interface QueryExecution
        Returns:
        An iterator of Triple objects (possibly containing duplicates) generated by applying the CONSTRUCT template of the query to the bindings in the WHERE clause.
      • execConstructQuads

        public java.util.Iterator<Quad> execConstructQuads()
        Description copied from interface: QueryExecution
        Execute a CONSTRUCT query, returning the results as an iterator of Quad.

        Caution: This method may return duplicate Quads. This method may be useful if you only need the results for stream processing, as it can avoid having to place the results in a Model.

        Specified by:
        execConstructQuads in interface QueryExecution
        Returns:
        An iterator of Quad objects (possibly containing duplicates) generated by applying the CONSTRUCT template of the query to the bindings in the WHERE clause.

        See QueryExecution.execConstructTriples() for usage and features.

      • execConstructDataset

        public Dataset execConstructDataset()
        Description copied from interface: QueryExecution
        Execute a CONSTRUCT query, putting the statements into 'dataset'. This maybe an extended syntax query (if supported).
        Specified by:
        execConstructDataset in interface QueryExecution
      • execConstructDataset

        public Dataset execConstructDataset​(Dataset dataset)
        Description copied from interface: QueryExecution
        Execute a CONSTRUCT query, putting the statements into 'dataset'. This maybe an extended syntax query (if supported).
        Specified by:
        execConstructDataset in interface QueryExecution
      • execDescribe

        public Model execDescribe​(Model model)
        Description copied from interface: QueryExecution
        Execute a DESCRIBE query, putting the statements into 'model'.
        Specified by:
        execDescribe in interface QueryExecution
        Returns:
        Model The model argument for cascaded code.
      • execDescribeTriples

        public java.util.Iterator<Triple> execDescribeTriples()
        Description copied from interface: QueryExecution
        Execute a DESCRIBE query, returning the results as an iterator of Triple.

        Caution: This method may return duplicate Triples. This method may be useful if you only need the results for stream processing, as it can avoid having to place the results in a Model.

        Important: The name of this method is somewhat of a misnomer in that depending on the underlying implementation this typically does not execute the DESCRIBE query but rather answers a wrapper over an internal data structure that can be used to answer the query. In essence calling this method only returns a plan for executing this query which only gets evaluated when you actually start iterating over the results.

        Specified by:
        execDescribeTriples in interface QueryExecution
        Returns:
        An iterator of Triple objects (possibly containing duplicates) generated as the output of the DESCRIBE query.
      • getContext

        public Context getContext()
        Description copied from interface: QueryExecution
        The properties associated with a query execution - implementation specific parameters This includes Java objects (so it is not an RDF graph). Keys should be URIs as strings. May be null (this implementation does not provide any configuration).
        Specified by:
        getContext in interface QueryExecution
      • getDataset

        public Dataset getDataset()
        Description copied from interface: QueryExecution
        The dataset against which the query will execute. May be null, implying it is expected that the query itself has a dataset description.
        Specified by:
        getDataset in interface QueryExecution
      • getQuery

        public Query getQuery()
        Description copied from interface: QueryExecution
        The query associated with a query execution. May be null (QueryExecution may have been created by other means)
        Specified by:
        getQuery in interface QueryExecution
      • getQueryString

        public java.lang.String getQueryString()
        Return the query string. If this was supplied in a constructor, there is no guaranttee this is legal SPARQL syntax.
      • setTimeout

        public void setTimeout​(long readTimeout,
                               java.util.concurrent.TimeUnit timeoutUnits)
        Description copied from interface: QueryExecution
        Set a timeout on the query execution. Processing will be aborted after the timeout (which starts when the appropriate exec call is made). Not all query execution systems support timeouts. A timeout of less than zero means no timeout.
        Specified by:
        setTimeout in interface QueryExecution
      • setTimeout

        public void setTimeout​(long timeout1,
                               java.util.concurrent.TimeUnit timeUnit1,
                               long timeout2,
                               java.util.concurrent.TimeUnit timeUnit2)
        Description copied from interface: QueryExecution
        Set timeouts on the query execution; the first timeout refers to time to first result, the second refers to overall query execution after the first result. Processing will be aborted if a timeout expires. Not all query execution systems support timeouts. A timeout of less than zero means no timeout; this can be used for timeout1 or timeout2.
        Specified by:
        setTimeout in interface QueryExecution
      • getTimeout1

        public long getTimeout1()
        Description copied from interface: QueryExecution
        Return the first timeout (time to first result), in milliseconds: negative if unset
        Specified by:
        getTimeout1 in interface QueryExecution
      • getTimeout2

        public long getTimeout2()
        Description copied from interface: QueryExecution
        Return the second timeout (overall query execution after first result), in milliseconds: negative if unset
        Specified by:
        getTimeout2 in interface QueryExecution
      • getAllowCompression

        public boolean getAllowCompression()
        Gets whether HTTP requests will indicate to the remote server that compressed encoding of responses is accepted
        Returns:
        True if compressed encoding will be accepted
      • cancel

        public void cancel()
        Cancel query evaluation
      • abort

        public void abort()
        Description copied from interface: QueryExecution
        Stop in mid execution. This method can be called in parallel with other methods on the QueryExecution object. There is no guarantee that the concrete implementation actual will stop or that it will do so immediately. No operations on the query execution or any associated result set are permitted after this call and may cause exceptions to be thrown.
        Specified by:
        abort in interface QueryExecution
      • close

        public void close()
        Description copied from interface: QueryExecution
        Close the query execution and stop query evaluation as soon as convenient. QueryExecution objects, and a ResultSet from QueryExecution.execSelect(), can not be used once the QueryExecution is closed. Model results from QueryExecution.execConstruct() and QueryExecution.execDescribe() are still valid. It is important to close query execution objects in order to release resources such as working memory and to stop the query execution. Some storage subsystems require explicit ends of operations and this operation will cause those to be called where necessary. No operations on the query execution or any associated result set are permitted after this call.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface QueryExecution
      • isClosed

        public boolean isClosed()
        Description copied from interface: QueryExecution
        Answer whether this QueryExecution object has been closed or not.
        Specified by:
        isClosed in interface QueryExecution
        Returns:
        boolean
      • toString

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

        public void setSelectContentType​(java.lang.String contentType)
        Sets the Content Type for SELECT queries provided that the format is supported
        Parameters:
        contentType -
      • setAskContentType

        public void setAskContentType​(java.lang.String contentType)
        Sets the Content Type for ASK queries provided that the format is supported
        Parameters:
        contentType -
      • setModelContentType

        public void setModelContentType​(java.lang.String contentType)
        Sets the Content Type for CONSTRUCT/DESCRIBE queries provided that the format is supported
        Parameters:
        contentType -
      • setDatasetContentType

        public void setDatasetContentType​(java.lang.String contentType)
      • defaultSelectHeader

        public static java.lang.String defaultSelectHeader()
      • defaultAskHeader

        public static java.lang.String defaultAskHeader()
      • defaultConstructHeader

        public static java.lang.String defaultConstructHeader()
      • defaultConstructDatasetHeader

        public static java.lang.String defaultConstructDatasetHeader()
      • getAcceptHeader

        public java.lang.String getAcceptHeader()
        Get the HTTP Accept header for the request.
      • setAcceptHeader

        public void setAcceptHeader​(java.lang.String acceptHeader)
        Set the HTTP Accept header for the request. Unlike the set??ContentType operations, this is not checked for validity.