Class RepositoryDatasetImpl
- All Implemented Interfaces:
AutoCloseable
,Dataset
,GraphLike<Quad>
,RDF4JDataset
,RDF4JGraphLike<Quad>
-
Field Summary
Fields inherited from class org.apache.commons.rdf.rdf4j.impl.AbstractRepositoryGraphLike
handleInitAndShutdown, includeInferred, rdf4jTermFactory, repository, salt
-
Constructor Summary
ConstructorsConstructorDescriptionRepositoryDatasetImpl
(org.eclipse.rdf4j.repository.Repository repository, UUID salt, boolean handleInitAndShutdown, boolean includeInferred) -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(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.void
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
(Optional<BlankNodeOrIRI> graphName) protected RDF4JQuad
asTripleLike
(org.eclipse.rdf4j.model.Statement s) void
clear()
Clear the dataset, removing all quads.boolean
contains
(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) Check if dataset contains a pattern of quads.boolean
Check if dataset contains quad.getGraph()
Get the default graph of this dataset.getGraph
(BlankNodeOrIRI graphName) Get a named graph in this dataset.Get the graph names in this Dataset.iterate()
Get an Iterable for iterating over all quads in the dataset.iterate
(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) Get an Iterable for iterating over the quads in the dataset that match the pattern.void
remove
(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) Remove a concrete pattern of quads from the default graph of the dataset.void
Remove a concrete quad from the dataset.long
size()
Number of quads contained by the dataset.stream()
Get all quads contained by the dataset.stream
(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
-
Constructor Details
-
RepositoryDatasetImpl
RepositoryDatasetImpl(org.eclipse.rdf4j.repository.Repository repository, UUID salt, boolean handleInitAndShutdown, boolean includeInferred)
-
-
Method Details
-
add
Description copied from interface:Dataset
Add a quad to the dataset, possibly mapping any of the components of the Quad to those supported by this dataset. -
contains
Description copied from interface:Dataset
Check if dataset contains quad. -
remove
Description copied from interface:Dataset
Remove a concrete quad from the dataset. -
clear
public void clear()Description copied from interface:Dataset
Clear the dataset, removing all quads. -
size
public long size()Description copied from interface:Dataset
Number 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
Description copied from interface:Dataset
Add a quad to the dataset, possibly mapping any of the components to those supported by this dataset. -
contains
public boolean contains(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) Description copied from interface:Dataset
Check if dataset contains a pattern of quads.- Specified by:
contains
in interfaceDataset
- Parameters:
graphName
- The graph the quad belongs to, wrapped as anOptional
(null
is a wildcard,Optional.empty()
is the default graph)subject
- The quad subject (null
is a wildcard)predicate
- The quad predicate (null
is a wildcard)object
- The quad object (null
is a wildcard)- Returns:
- True if the dataset contains any quads that match the given pattern.
-
asContexts
-
remove
public void remove(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) Description copied from interface:Dataset
Remove a concrete pattern of quads from the default graph of the dataset.- Specified by:
remove
in interfaceDataset
- Parameters:
graphName
- The graph the quad belongs to, wrapped as anOptional
(null
is a wildcard,Optional.empty()
is the default graph)subject
- The quad subject (null
is a wildcard)predicate
- The quad predicate (null
is a wildcard)object
- The quad object (null
is a wildcard)
-
stream
Description copied from interface:RDF4JDataset
Get 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
Stream
is not specified ifDataset.add(Quad)
,Dataset.remove(Quad)
orDataset.clear()
are called on theDataset
before it terminates.Implementations may throw
ConcurrentModificationException
from 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 Stream<RDF4JQuad> stream(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) Description copied from interface:RDF4JDataset
Get 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
Stream
is not specified ifDataset.add(Quad)
,Dataset.remove(Quad)
orDataset.clear()
are called on theDataset
before it terminates.Implementations may throw
ConcurrentModificationException
from 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:
stream
in interfaceDataset
- Specified by:
stream
in interfaceRDF4JDataset
- Parameters:
graphName
- The graph the quad belongs to, wrapped as anOptional
(null
is a wildcard,Optional.empty()
is the default graph)subject
- The quad subject (null
is a wildcard)predicate
- The quad predicate (null
is a wildcard)object
- The quad object (null
is a wildcard)- Returns:
- A
Stream
over the matched quads.
-
iterate
public ClosableIterable<Quad> iterate() throws ConcurrentModificationException, IllegalStateExceptionDescription copied from interface:RDF4JDataset
Get 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 theDataset
before it terminates. It is undefined if the returnedIterator
supports theIterator.remove()
method.Implementations may throw
ConcurrentModificationException
from 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. AIllegalStateException
may 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:
iterate
in interfaceDataset
- Specified by:
iterate
in interfaceGraphLike<Quad>
- Specified by:
iterate
in interfaceRDF4JDataset
- Returns:
- A
Iterable
that returnsIterator
over all of the quads in the dataset - Throws:
ConcurrentModificationException
- if a concurrency conflict occurs while the Iterator is active.IllegalStateException
- if theIterable
has been reused
-
iterate
public ClosableIterable<Quad> iterate(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) throws ConcurrentModificationException, IllegalStateException Description copied from interface:RDF4JDataset
Get 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 theDataset
before it terminates. It is undefined if the returnedIterator
supports theIterator.remove()
method.Implementations may throw
ConcurrentModificationException
from 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. AIllegalStateException
may 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:
iterate
in interfaceDataset
- Specified by:
iterate
in interfaceRDF4JDataset
- Parameters:
graphName
- The graph the quad belongs to, wrapped as anOptional
(null
is a wildcard,Optional.empty()
is the default graph)subject
- The quad subject (null
is a wildcard)predicate
- The quad predicate (null
is a wildcard)object
- The quad object (null
is a wildcard)- Returns:
- A
Iterable
that returnsIterator
over the matching quads in the dataset - Throws:
ConcurrentModificationException
- if a concurrency conflict occurs while the Iterator is active.IllegalStateException
- if theIterable
has been reused
-
asTripleLike
- Specified by:
asTripleLike
in classAbstractRepositoryGraphLike<Quad>
-
getGraph
Description copied from interface:Dataset
Get the default graph of this dataset.The
Triple
s of the default graph are equivalent to theQuad
s 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.
-
getGraph
Description copied from interface:Dataset
Get a named graph in this dataset.The
Triple
s 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 providedgraphName
isnull
.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:
getGraph
in interfaceDataset
- Parameters:
graphName
- The name of the graph, ornull
for the default graph.- Returns:
- The named Graph, or
Optional.empty()
if the dataset do not contain the named graph. - See Also:
-
getGraphNames
Description copied from interface:RDF4JDataset
Get 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
Stream
SHOULD 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:
getGraphNames
in interfaceDataset
- Specified by:
getGraphNames
in interfaceRDF4JDataset
- Returns:
- A
Stream
of the graph names of this Dataset.
-