Class RepositoryDatasetImpl
- java.lang.Object
-
- org.apache.commons.rdf.rdf4j.impl.AbstractRepositoryGraphLike<Quad>
-
- org.apache.commons.rdf.rdf4j.impl.RepositoryDatasetImpl
-
- All Implemented Interfaces:
java.lang.AutoCloseable,Dataset,GraphLike<Quad>,RDF4JDataset,RDF4JGraphLike<Quad>
class RepositoryDatasetImpl extends AbstractRepositoryGraphLike<Quad> implements RDF4JDataset
-
-
Field Summary
-
Fields inherited from class org.apache.commons.rdf.rdf4j.impl.AbstractRepositoryGraphLike
handleInitAndShutdown, includeInferred, rdf4jTermFactory, repository, salt
-
-
Constructor Summary
Constructors Constructor Description RepositoryDatasetImpl(org.eclipse.rdf4j.repository.Repository repository, java.util.UUID salt, boolean handleInitAndShutdown, boolean includeInferred)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)Add a quad to the dataset, possibly mapping any of the components to those supported by this dataset.voidadd(Quad tripleLike)Add a quad to the dataset, possibly mapping any of the components of the Quad to those supported by this dataset.private org.eclipse.rdf4j.model.Resource[]asContexts(java.util.Optional<BlankNodeOrIRI> graphName)protected RDF4JQuadasTripleLike(org.eclipse.rdf4j.model.Statement s)voidclear()Clear the dataset, removing all quads.booleancontains(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)Check if dataset contains a pattern of quads.booleancontains(Quad tripleLike)Check if dataset contains quad.GraphgetGraph()Get the default graph of this dataset.java.util.Optional<Graph>getGraph(BlankNodeOrIRI graphName)Get a named graph in this dataset.java.util.stream.Stream<BlankNodeOrIRI>getGraphNames()Get the graph names in this Dataset.ClosableIterable<Quad>iterate()Get an Iterable for iterating over all quads in the dataset.ClosableIterable<Quad>iterate(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)Get an Iterable for iterating over the quads in the dataset that match the pattern.voidremove(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)Remove a concrete pattern of quads from the default graph of the dataset.voidremove(Quad tripleLike)Remove a concrete quad from the dataset.longsize()Number of quads contained by the dataset.java.util.stream.Stream<RDF4JQuad>stream()Get all quads contained by the dataset.java.util.stream.Stream<RDF4JQuad>stream(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)Get all quads contained by the dataset matched with the pattern.-
Methods inherited from class org.apache.commons.rdf.rdf4j.impl.AbstractRepositoryGraphLike
asModel, asRepository, close, getRepositoryConnection
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.commons.rdf.rdf4j.RDF4JGraphLike
asModel, asRepository
-
-
-
-
Method Detail
-
add
public void add(Quad tripleLike)
Description copied from interface:DatasetAdd a quad to the dataset, possibly mapping any of the components of the Quad to those supported by this dataset.
-
contains
public boolean contains(Quad tripleLike)
Description copied from interface:DatasetCheck if dataset contains quad.
-
remove
public void remove(Quad tripleLike)
Description copied from interface:DatasetRemove a concrete quad from the dataset.
-
clear
public void clear()
Description copied from interface:DatasetClear the dataset, removing all quads.
-
size
public long size()
Description copied from interface:DatasetNumber of quads contained by the dataset.The count of a set does not include duplicates, consistent with the
Quad.equals(Object)equals method for eachQuad.
-
add
public void add(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:DatasetAdd a quad to the dataset, possibly mapping any of the components to those supported by this dataset.
-
contains
public boolean contains(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:DatasetCheck if dataset contains a pattern of quads.- Specified by:
containsin interfaceDataset- Parameters:
graphName- The graph the quad belongs to, wrapped as anOptional(nullis a wildcard,Optional.empty()is the default graph)subject- The quad subject (nullis a wildcard)predicate- The quad predicate (nullis a wildcard)object- The quad object (nullis a wildcard)- Returns:
- True if the dataset contains any quads that match the given pattern.
-
asContexts
private org.eclipse.rdf4j.model.Resource[] asContexts(java.util.Optional<BlankNodeOrIRI> graphName)
-
remove
public void remove(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:DatasetRemove a concrete pattern of quads from the default graph of the dataset.- Specified by:
removein interfaceDataset- Parameters:
graphName- The graph the quad belongs to, wrapped as anOptional(nullis a wildcard,Optional.empty()is the default graph)subject- The quad subject (nullis a wildcard)predicate- The quad predicate (nullis a wildcard)object- The quad object (nullis a wildcard)
-
stream
public java.util.stream.Stream<RDF4JQuad> stream()
Description copied from interface:RDF4JDatasetGet all quads contained by the dataset.
The iteration does not contain any duplicate quads, as determined by the
Quad.equals(Object)method for eachQuad.The behaviour of the
Streamis not specified ifDataset.add(Quad),Dataset.remove(Quad)orDataset.clear()are called on theDatasetbefore it terminates.Implementations may throw
ConcurrentModificationExceptionfrom Stream methods if they detect a conflict while the Stream is active.Note that for datasets backed by a repository (
RDF4JGraphLike.asRepository()is present), the stream must be closed withBaseStream.close().This can generally achieved using a try-with-resources block, e.g.:
int subjects; try (Stream<RDF4JQuad> s : graph.stream()) { subjects = s.map(RDF4JQuad::getSubject).distinct().count() }
-
stream
public java.util.stream.Stream<RDF4JQuad> stream(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:RDF4JDatasetGet all quads contained by the dataset matched with the pattern.The iteration does not contain any duplicate quads, as determined by the
Quad.equals(Object)method for eachQuad.The behaviour of the
Streamis not specified ifDataset.add(Quad),Dataset.remove(Quad)orDataset.clear()are called on theDatasetbefore it terminates.Implementations may throw
ConcurrentModificationExceptionfrom Stream methods if they detect a conflict while the Stream is active.Note that for datasets backed by a repository (
RDF4JGraphLike.asRepository()is present), the stream must be closed withBaseStream.close().This can generally achieved using a try-with-resources block, e.g.:
int subjects; try (Stream<RDF4JQuad> s : graph.stream()) { subjects = s.map(RDF4JQuad::getSubject).distinct().count() }- Specified by:
streamin interfaceDataset- Specified by:
streamin interfaceRDF4JDataset- Parameters:
graphName- The graph the quad belongs to, wrapped as anOptional(nullis a wildcard,Optional.empty()is the default graph)subject- The quad subject (nullis a wildcard)predicate- The quad predicate (nullis a wildcard)object- The quad object (nullis a wildcard)- Returns:
- A
Streamover the matched quads.
-
iterate
public ClosableIterable<Quad> iterate() throws java.util.ConcurrentModificationException, java.lang.IllegalStateException
Description copied from interface:RDF4JDatasetGet an Iterable for iterating over all quads in the dataset.This method is meant to be used with a Java for-each loop, e.g.:
for (Quad t : dataset.iterate()) { System.out.println(t); }The behaviour of the iterator is not specified ifDataset.add(Quad),Dataset.remove(Quad)orDataset.clear(), are called on theDatasetbefore it terminates. It is undefined if the returnedIteratorsupports theIterator.remove()method.Implementations may throw
ConcurrentModificationExceptionfrom Iterator methods if they detect a concurrency conflict while the Iterator is active.The
Iterable.iterator()must only be called once, that is the Iterable must only be iterated over once. AIllegalStateExceptionmay be thrown on attempt to reuse the Iterable.The default implementation of this method will call
Dataset.stream()to return itsBaseStream.iterator().Note that for datasets backed by a repository (
RDF4JGraphLike.asRepository()is present), the iterable must be closed withAutoCloseable.close().This can generally achieved using a try-with-resources block, e.g.:
try (ClosableIterable<Quad> s : graph.iterate()) { for (Quad q : quads) { return q; // OK to terminate for-loop early } }If you don't use a try-with-resources block, the iterator will attempt to close the ClosableIterable when reaching the end of the iteration.- Specified by:
iteratein interfaceDataset- Specified by:
iteratein interfaceGraphLike<Quad>- Specified by:
iteratein interfaceRDF4JDataset- Returns:
- A
Iterablethat returnsIteratorover all of the quads in the dataset - Throws:
java.util.ConcurrentModificationException- if a concurrency conflict occurs while the Iterator is active.java.lang.IllegalStateException- if theIterablehas been reused
-
iterate
public ClosableIterable<Quad> iterate(java.util.Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) throws java.util.ConcurrentModificationException, java.lang.IllegalStateException
Description copied from interface:RDF4JDatasetGet an Iterable for iterating over the quads in the dataset that match the pattern.This method is meant to be used with a Java for-each loop, e.g.:
IRI alice = factory.createIRI("http://example.com/alice"); IRI knows = factory.createIRI("http://xmlns.com/foaf/0.1/"); for (Quad t : dataset.iterate(null, alice, knows, null)) { System.out.println(t.getGraphName()); System.out.println(t.getObject()); }The behaviour of the iterator is not specified if
Dataset.add(Quad),Dataset.remove(Quad)orDataset.clear(), are called on theDatasetbefore it terminates. It is undefined if the returnedIteratorsupports theIterator.remove()method.Implementations may throw
ConcurrentModificationExceptionfrom Iterator methods if they detect a concurrency conflict while the Iterator is active.The
Iterable.iterator()must only be called once, that is the Iterable must only be iterated over once. AIllegalStateExceptionmay be thrown on attempt to reuse the Iterable.The default implementation of this method will call
Dataset.stream(Optional, BlankNodeOrIRI, IRI, RDFTerm)to return itsBaseStream.iterator().Note that for datasets backed by a repository (
RDF4JGraphLike.asRepository()is present), the iterable must be closed withAutoCloseable.close().This can generally achieved using a try-with-resources block, e.g.:
try (ClosableIterable<Quad> s : graph.iterate(g,s,p,o)) { for (Quad q : quads) { return q; // OK to terminate for-loop early } }If you don't use a try-with-resources block, the iterator will attempt to close the ClosableIterable when reaching the end of the iteration.- Specified by:
iteratein interfaceDataset- Specified by:
iteratein interfaceRDF4JDataset- Parameters:
graphName- The graph the quad belongs to, wrapped as anOptional(nullis a wildcard,Optional.empty()is the default graph)subject- The quad subject (nullis a wildcard)predicate- The quad predicate (nullis a wildcard)object- The quad object (nullis a wildcard)- Returns:
- A
Iterablethat returnsIteratorover the matching quads in the dataset - Throws:
java.util.ConcurrentModificationException- if a concurrency conflict occurs while the Iterator is active.java.lang.IllegalStateException- if theIterablehas been reused
-
asTripleLike
protected RDF4JQuad asTripleLike(org.eclipse.rdf4j.model.Statement s)
- Specified by:
asTripleLikein classAbstractRepositoryGraphLike<Quad>
-
getGraph
public Graph getGraph()
Description copied from interface:DatasetGet the default graph of this dataset.The
Triples of the default graph are equivalent to theQuads in this Dataset which has theQuad.getGraphName()set toOptional.empty().It is unspecified if modifications to the returned Graph are reflected in this Dataset.
The returned graph MAY be empty.
- Specified by:
getGraphin interfaceDataset- Returns:
- The default graph of this Dataset
- See Also:
Dataset.getGraph(BlankNodeOrIRI)
-
getGraph
public java.util.Optional<Graph> getGraph(BlankNodeOrIRI graphName)
Description copied from interface:DatasetGet a named graph in this dataset.The
Triples of the named graph are equivalent to the the Quads of this Dataset which has theQuad.getGraphName()equal to the providedgraphName, or equal toOptional.empty()if the providedgraphNameisnull.It is unspecified if modifications to the returned Graph are reflected in this Dataset.
It is unspecified if requesting an unknown or empty graph will return
Optional.empty()or create a new emptyGraph.- Specified by:
getGraphin interfaceDataset- Parameters:
graphName- The name of the graph, ornullfor the default graph.- Returns:
- The named Graph, or
Optional.empty()if the dataset do not contain the named graph. - See Also:
Dataset.getGraph(),Dataset.getGraphNames()
-
getGraphNames
public java.util.stream.Stream<BlankNodeOrIRI> getGraphNames()
Description copied from interface:RDF4JDatasetGet the graph names in this Dataset.The set of returned graph names is equivalent to the set of unique
Quad.getGraphName()of all theDataset.stream()of this dataset (excluding the default graph).The returned
StreamSHOULD NOT contain duplicate graph names.The graph names can be used with
Dataset.getGraph(BlankNodeOrIRI)to retrieve the correspondingGraph, however callers should be aware of any concurrent modifications to the Dataset may cause such calls to returnOptional.empty().Note that a Dataset always contains a default graph which is not named, and thus is not represented in the returned Stream. The default graph is accessible via
Dataset.getGraph()or by usingOptional.empty()in the Quad access methods).Note that for datasets backed by a repository (
RDF4JGraphLike.asRepository()is present), the stream must be closed withBaseStream.close().This can generally achieved using a try-with-resources block, e.g.:
int graphs; try (Stream<BlankNodeOrIRI> s : graph.stream()) { graphs = s.count() }- Specified by:
getGraphNamesin interfaceDataset- Specified by:
getGraphNamesin interfaceRDF4JDataset- Returns:
- A
Streamof the graph names of this Dataset.
-
-