Package org.eclipse.rdf4j.query
Class QueryResults
java.lang.Object
org.eclipse.rdf4j.common.iteration.Iterations
org.eclipse.rdf4j.query.QueryResults
- Direct Known Subclasses:
QueryResultUtil
Utility methods related to query results.
- Author:
- Jeen Broekstra
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic Model
asModel
(CloseableIteration<? extends Statement, ? extends RDF4JException> iteration) Get aModel
containing all elements obtained from the specified query result.static Model
asModel
(CloseableIteration<? extends Statement, ? extends RDF4JException> iteration, ModelFactory modelFactory) Get aModel
containing all elements obtained from the specified query result.static boolean
bindingSetsCompatible
(BindingSet bs1, BindingSet bs2) Check whether twoBindingSet
s are compatible.static GraphQueryResult
distinctResults
(GraphQueryResult queryResult) Returns aGraphQueryResult
that filters out any duplicate solutions from the supplied queryResult.static TupleQueryResult
distinctResults
(TupleQueryResult queryResult) Returns aTupleQueryResult
that filters out any duplicate solutions from the supplied queryResult.static boolean
equals
(GraphQueryResult result1, GraphQueryResult result2) Compares two graph query results and returnstrue
if they are equal.static boolean
equals
(TupleQueryResult tqr1, TupleQueryResult tqr2) Compares two tuple query results and returnstrue
if they are equal.Tuple query results are equal if they contain the same set ofBindingSet
s and have the same headers.getAllValues
(TupleQueryResult result, String var) Returns a list of values of a particular variable out of the QueryResult.static boolean
isSubset
(TupleQueryResult tqr1, TupleQueryResult tqr2) static GraphQueryResult
limitResults
(GraphQueryResult queryResult, long limit, long offset) Returns aGraphQueryResult
that returns at most the specified maximum number of solutions, starting at the supplied offset.static TupleQueryResult
limitResults
(TupleQueryResult queryResult, long limit, long offset) Returns aTupleQueryResult
that returns at most the specified maximum number of solutions, starting at the supplied offset.static GraphQueryResult
parseGraphBackground
(InputStream in, String baseURI, RDFFormat format, WeakReference<?> callerReference) Parses an RDF document and returns it as a GraphQueryResult object, with parsing done on a separate thread in the background.
IMPORTANT: As this method will spawn a new thread in the background, it is vitally important that the resulting GraphQueryResult be closed consistently when it is no longer required, to prevent resource leaks.static GraphQueryResult
parseGraphBackground
(InputStream in, String baseURI, RDFParser parser, WeakReference<?> callerReference) Parses an RDF document and returns it as a GraphQueryResult object, with parsing done on a separate thread in the background.
IMPORTANT: As this method will spawn a new thread in the background, it is vitally important that the resulting GraphQueryResult be closed consistently when it is no longer required, to prevent resource leaks.static void
report
(GraphQueryResult graphQueryResult, RDFHandler rdfHandler) Reports a graph query result to anRDFHandler
.static void
report
(TupleQueryResult tqr, QueryResultHandler handler) Reports a tuple query result to aTupleQueryResultHandler
.static Statement
singleResult
(GraphQueryResult result) Returns a single element from the query result.The QueryResult is automatically closed by this method.static BindingSet
singleResult
(TupleQueryResult result) Returns a single element from the query result.The QueryResult is automatically closed by this method.
-
Constructor Details
-
QueryResults
public QueryResults()
-
-
Method Details
-
asModel
public static Model asModel(CloseableIteration<? extends Statement, ? extends RDF4JException> iteration) throws QueryEvaluationExceptionGet aModel
containing all elements obtained from the specified query result.- Parameters:
iteration
- the source iteration to get the statements from.- Returns:
- a
Model
containing all statements obtained from the specified source iteration. - Throws:
QueryEvaluationException
-
asModel
public static Model asModel(CloseableIteration<? extends Statement, ? extends RDF4JException> iteration, ModelFactory modelFactory) throws QueryEvaluationExceptionGet aModel
containing all elements obtained from the specified query result.- Parameters:
iteration
- the source iteration to get the statements from.modelFactory
- the ModelFactory used to instantiate the model that gets returned.- Returns:
- a
Model
containing all statements obtained from the specified source iteration. - Throws:
QueryEvaluationException
-
getAllValues
public static List<Value> getAllValues(TupleQueryResult result, String var) throws QueryEvaluationException Returns a list of values of a particular variable out of the QueryResult.- Parameters:
result
-var
- variable for which list of values needs to be returned- Returns:
- a list of Values of var
- Throws:
QueryEvaluationException
-
singleResult
Returns a single element from the query result.The QueryResult is automatically closed by this method.- Parameters:
result
-- Returns:
- a single query result element or null
- Throws:
QueryEvaluationException
-
singleResult
Returns a single element from the query result.The QueryResult is automatically closed by this method.- Parameters:
result
-- Returns:
- a single query result element or null
- Throws:
QueryEvaluationException
-
distinctResults
Returns aGraphQueryResult
that filters out any duplicate solutions from the supplied queryResult.- Parameters:
queryResult
- a queryResult containing possible duplicate statements.- Returns:
- a
GraphQueryResult
with any duplicates filtered out.
-
distinctResults
Returns aTupleQueryResult
that filters out any duplicate solutions from the supplied queryResult.- Parameters:
queryResult
- a queryResult containing possible duplicate solutions.- Returns:
- a
TupleQueryResult
with any duplicates filtered out.
-
limitResults
Returns aTupleQueryResult
that returns at most the specified maximum number of solutions, starting at the supplied offset.- Parameters:
queryResult
- a query result possibly containing more solutions than the specified maximum.limit
- the maximum number of solutions to return. If set to 0 or lower, no limit will be applied.offset
- the number of solutions to skip at the beginning. If set to 0 or lower, no offset will be applied.- Returns:
- A
TupleQueryResult
that will at return at most the specified maximum number of solutions. If neitherlimit
noroffset
are applied, this returns the originalqueryResult
.
-
limitResults
Returns aGraphQueryResult
that returns at most the specified maximum number of solutions, starting at the supplied offset.- Parameters:
queryResult
- a query result possibly containing more solutions than the specified maximum.limit
- the maximum number of solutions to return. If set to 0 or lower, no limit will be applied.offset
- the number of solutions to skip at the beginning. If set to 0 or lower, no offset will be applied.- Returns:
- A
GraphQueryResult
that will at return at most the specified maximum number of solutions. If neitherlimit
noroffset
are applied, this returns the originalqueryResult
.
-
parseGraphBackground
public static GraphQueryResult parseGraphBackground(InputStream in, String baseURI, RDFFormat format, WeakReference<?> callerReference) throws UnsupportedRDFormatException Parses an RDF document and returns it as a GraphQueryResult object, with parsing done on a separate thread in the background.
IMPORTANT: As this method will spawn a new thread in the background, it is vitally important that the resulting GraphQueryResult be closed consistently when it is no longer required, to prevent resource leaks.- Parameters:
in
- TheInputStream
containing the RDF document.baseURI
- The base URI for the RDF document.format
- TheRDFFormat
of the RDF document.- Returns:
- A
GraphQueryResult
that parses in the background, and must be closed to prevent resource leaks. - Throws:
UnsupportedRDFormatException
-
parseGraphBackground
public static GraphQueryResult parseGraphBackground(InputStream in, String baseURI, RDFParser parser, WeakReference<?> callerReference) Parses an RDF document and returns it as a GraphQueryResult object, with parsing done on a separate thread in the background.
IMPORTANT: As this method will spawn a new thread in the background, it is vitally important that the resulting GraphQueryResult be closed consistently when it is no longer required, to prevent resource leaks.- Parameters:
in
- TheInputStream
containing the RDF document.baseURI
- The base URI for the RDF document.parser
- TheRDFParser
.- Returns:
- A
GraphQueryResult
that parses in the background, and must be closed to prevent resource leaks.
-
report
public static void report(TupleQueryResult tqr, QueryResultHandler handler) throws TupleQueryResultHandlerException, QueryEvaluationException Reports a tuple query result to aTupleQueryResultHandler
.
TheCloseableIteration.close()
method will always be called before this method returns.
If there is an exception generated by the TupleQueryResult,QueryResultHandler.endQueryResult()
will not be called.- Parameters:
tqr
- The query result to report.handler
- The handler to report the query result to.- Throws:
TupleQueryResultHandlerException
- If such an exception is thrown by the used query result writer.QueryEvaluationException
-
report
public static void report(GraphQueryResult graphQueryResult, RDFHandler rdfHandler) throws RDFHandlerException, QueryEvaluationException Reports a graph query result to anRDFHandler
.
TheCloseableIteration.close()
method will always be called before this method returns.
If there is an exception generated by the GraphQueryResult,RDFHandler.endRDF()
will not be called.- Parameters:
graphQueryResult
- The query result to report.rdfHandler
- The handler to report the query result to.- Throws:
RDFHandlerException
- If such an exception is thrown by the used RDF writer.QueryEvaluationException
-
equals
public static boolean equals(TupleQueryResult tqr1, TupleQueryResult tqr2) throws QueryEvaluationException Compares two tuple query results and returnstrue
if they are equal.Tuple query results are equal if they contain the same set ofBindingSet
s and have the same headers. Blank nodes identifiers are not relevant for equality, they are matched by trying to find compatible mappings between BindingSets. Note that the method consumes both query results fully.- Parameters:
tqr1
- the firstTupleQueryResult
to compare.tqr2
- the secondTupleQueryResult
to compare.- Returns:
- true if equal
- Throws:
QueryEvaluationException
-
isSubset
public static boolean isSubset(TupleQueryResult tqr1, TupleQueryResult tqr2) throws QueryEvaluationException - Throws:
QueryEvaluationException
-
equals
public static boolean equals(GraphQueryResult result1, GraphQueryResult result2) throws QueryEvaluationException Compares two graph query results and returnstrue
if they are equal. Two graph query results are considered equal if they are isomorphic graphs. Note that the method consumes both query results fully.- Parameters:
result1
- the first query result to compareresult2
- the second query result to compare.- Returns:
true
if the supplied graph query results are isomorphic graphs,false
otherwise.- Throws:
QueryEvaluationException
- See Also:
-
bindingSetsCompatible
Check whether twoBindingSet
s are compatible. Two binding sets are compatible if they have equal values for each variable that is bound in both binding sets.- Parameters:
bs1
-bs2
-- Returns:
- true if compatible
-