Class ReusableGraphQueryResult
java.lang.Object
org.eclipse.rdf4j.spring.resultcache.ReusableGraphQueryResult
- All Implemented Interfaces:
AutoCloseable,Iterable<Statement>,Iterator<Statement>,CloseableIteration<Statement>,GraphQueryResult,QueryResult<Statement>,ThrowableRecorder
Wrapper for a TupleQueryResult, allowing the result to be replayed. Not thread-safe. The wrapper copies the result
data, consuming the original result fully on
close().
Example:
TupleQueryResult result = tupleQuery.execute();
ReuseableTupleQueryResult reusable = new ReuseableTupleQueryResult(result);
while (reusable.hasNext()) {
reuseable.next();
}
reuseable.close();
GraphQueryResult cached = reuseable.recreateGraphQueryResult();
while (cached.hasNext()) {
cached.next();
}
cached.close();
- Since:
- 4.0.0
- Author:
- Florian Kleedorfer
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanReuse()voidclose()Closes this iteration, freeing any resources that it is holding.voidRetrieves relevant namespaces from the query result.booleanhasNext()Returnstrueif the query result has more elements.iterator()next()Returns the next element in the query result.booleanqueryBindingsAreIdentical(BindingSet candidate) voidvoidremove()stream()Convert the result elements to a JavaStream.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Iterator
forEachRemaining
-
Constructor Details
-
ReusableGraphQueryResult
-
-
Method Details
-
queryBindingsAreIdentical
-
canReuse
public boolean canReuse() -
recreateGraphQueryResult
-
recordThrowable
- Specified by:
recordThrowablein interfaceThrowableRecorder
-
getNamespaces
Description copied from interface:GraphQueryResultRetrieves relevant namespaces from the query result.
The contents of the Map may be modified after it is returned, as the initial return may be performed when the first RDF Statement is encountered.- Specified by:
getNamespacesin interfaceGraphQueryResult- Returns:
- a Map<String, String> object containing (prefix, namespace) pairs.
- Throws:
QueryEvaluationException
-
iterator
-
close
Description copied from interface:CloseableIterationCloses this iteration, freeing any resources that it is holding. If the iteration has already been closed then invoking this method has no effect.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseableIteration<Statement>- Throws:
QueryEvaluationException
-
hasNext
Description copied from interface:QueryResultReturnstrueif the query result has more elements. (In other words, returnstrueifQueryResult.next()would return an element rather than throwing aNoSuchElementException.)- Specified by:
hasNextin interfaceIterator<Statement>- Specified by:
hasNextin interfaceQueryResult<Statement>- Returns:
trueif the iteration has more elements.- Throws:
QueryEvaluationException- if an error occurs while executing the query.
-
next
Description copied from interface:QueryResultReturns the next element in the query result.- Specified by:
nextin interfaceIterator<Statement>- Specified by:
nextin interfaceQueryResult<Statement>- Returns:
- the next element in the query result.
- Throws:
QueryEvaluationException- if an error occurs while executing the query.
-
remove
- Specified by:
removein interfaceIterator<Statement>- Throws:
QueryEvaluationException
-
stream
Description copied from interface:QueryResultConvert the result elements to a JavaStream. Note that the consumer should take care to close the stream (by calling Stream#close() or using try-with-resource) if it is not fully consumed.- Specified by:
streamin interfaceCloseableIteration<Statement>- Specified by:
streamin interfaceQueryResult<Statement>- Returns:
- stream a
Streamof query result elements.
-
forEach
-
spliterator
- Specified by:
spliteratorin interfaceIterable<Statement>
-