Class ModelGraphImpl
- java.lang.Object
-
- org.apache.commons.rdf.rdf4j.impl.ModelGraphImpl
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,Graph
,GraphLike<Triple>
,RDF4JGraph
,RDF4JGraphLike<Triple>
final class ModelGraphImpl extends java.lang.Object implements RDF4JGraph
-
-
Field Summary
Fields Modifier and Type Field Description private org.eclipse.rdf4j.model.Model
model
private RDF4J
rdf4jTermFactory
-
Constructor Summary
Constructors Constructor Description ModelGraphImpl(org.eclipse.rdf4j.model.Model model, RDF4J rdf4jTermFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Adds a triple to the graph, possibly mapping any of the components to those supported by this Graph.void
add(Triple triple)
Adds a triple to the graph, possibly mapping any of the components of the Triple to those supported by this Graph.java.util.Optional<org.eclipse.rdf4j.model.Model>
asModel()
Return the corresponding RDF4JModel
, if present.java.util.Optional<org.eclipse.rdf4j.repository.Repository>
asRepository()
Return the corresponding RDF4JRepository
, if present.void
clear()
Clears the graph, removing all triples.boolean
contains(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Checks if graph contains a pattern of triples.boolean
contains(Triple triple)
Checks if graph contains triple.java.util.Set<RDF4JBlankNodeOrIRI>
getContextMask()
Return a copy of the context mask as aSet
ofRDF4JBlankNodeOrIRI
graph names.ClosableIterable<Triple>
iterate()
Gets an Iterable for iterating over all triples in the graph.ClosableIterable<Triple>
iterate(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Gets an Iterable for iterating over the triples in the graph that match the pattern.void
remove(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Removes a concrete pattern of triples from the graph.void
remove(Triple triple)
Removes a concrete triple from the graph.long
size()
Number of triples contained by the graph.java.util.stream.Stream<RDF4JTriple>
stream()
Gets all triples contained by the graph.java.util.stream.Stream<RDF4JTriple>
stream(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Gets all triples contained by the graph matched with the pattern.-
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.api.Graph
close, getTriples, getTriples
-
-
-
-
Field Detail
-
model
private final org.eclipse.rdf4j.model.Model model
-
rdf4jTermFactory
private final RDF4J rdf4jTermFactory
-
-
Constructor Detail
-
ModelGraphImpl
ModelGraphImpl(org.eclipse.rdf4j.model.Model model, RDF4J rdf4jTermFactory)
-
-
Method Detail
-
add
public void add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:Graph
Adds a triple to the graph, possibly mapping any of the components to those supported by this Graph.
-
add
public void add(Triple triple)
Description copied from interface:Graph
Adds a triple to the graph, possibly mapping any of the components of the Triple to those supported by this Graph.
-
asModel
public java.util.Optional<org.eclipse.rdf4j.model.Model> asModel()
Description copied from interface:RDF4JGraphLike
Return the corresponding RDF4JModel
, if present.The return value is
Optional.isPresent()
if this is backed by a Model.Changes to the Model are reflected in both directions.
- Specified by:
asModel
in interfaceRDF4JGraphLike<Triple>
- Returns:
- The corresponding RDF4J Model.
-
asRepository
public java.util.Optional<org.eclipse.rdf4j.repository.Repository> asRepository()
Description copied from interface:RDF4JGraphLike
Return the corresponding RDF4JRepository
, if present.The return value is
Optional.isPresent()
if this is backed by a Repository.Changes to the Repository are reflected in both directions.
- Specified by:
asRepository
in interfaceRDF4JGraphLike<Triple>
- Returns:
- The corresponding RDF4J Repository.
-
clear
public void clear()
Description copied from interface:Graph
Clears the graph, removing all triples.
-
contains
public boolean contains(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:Graph
Checks if graph contains a pattern of triples.
-
contains
public boolean contains(Triple triple)
Description copied from interface:Graph
Checks if graph contains triple.
-
remove
public void remove(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:Graph
Removes a concrete pattern of triples from the graph.
-
remove
public void remove(Triple triple)
Description copied from interface:Graph
Removes a concrete triple from the graph.
-
size
public long size()
Description copied from interface:Graph
Number of triples contained by the graph.The count of a set does not include duplicates, consistent with the
Triple.equals(Object)
equals method for eachTriple
.
-
stream
public java.util.stream.Stream<RDF4JTriple> stream()
Description copied from interface:RDF4JGraph
Gets all triples contained by the graph.
The iteration does not contain any duplicate triples, as determined by the
Triple.equals(Object)
method for eachTriple
.The behaviour of the
Stream
is not specified ifGraph.add(Triple)
,Graph.remove(Triple)
orGraph.clear()
are called on theGraph
before it terminates.Implementations may throw
ConcurrentModificationException
from Stream methods if they detect a conflict while the Stream is active.Note that for graphs 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<RDF4JTriple> s : graph.stream()) { subjects = s.map(RDF4JTriple::getSubject).distinct().count() }
-
stream
public java.util.stream.Stream<RDF4JTriple> stream(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:RDF4JGraph
Gets all triples contained by the graph matched with the pattern.The iteration does not contain any duplicate triples, as determined by the
Triple.equals(Object)
method for eachTriple
.The behaviour of the
Stream
is not specified ifGraph.add(Triple)
,Graph.remove(Triple)
orGraph.clear()
are called on theGraph
before it terminates.Implementations may throw
ConcurrentModificationException
from Stream methods if they detect a conflict while the Stream is active.Note that for graphs 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<RDF4JTriple> s : graph.stream(s,p,o)) { subjects = s.map(RDF4JTriple::getSubject).distinct().count() }
- Specified by:
stream
in interfaceGraph
- Specified by:
stream
in interfaceRDF4JGraph
- Parameters:
subject
- The triple subject (null is a wildcard)predicate
- The triple predicate (null is a wildcard)object
- The triple object (null is a wildcard)- Returns:
- A
Stream
over the matched triples.
-
getContextMask
public java.util.Set<RDF4JBlankNodeOrIRI> getContextMask()
Description copied from interface:RDF4JGraph
Return a copy of the context mask as aSet
ofRDF4JBlankNodeOrIRI
graph names.If the set is not
Set.isEmpty()
, the mask determines which contexts in the corresponding RDF4JModel
orRepository
that this graph reflect. Modifications to the graph (e.g.Graph.add(Triple)
will be performed for all the specified contexts, while retrieval (e.g.Graph.contains(Triple)
) will succeed if the triple is in at least one of the specified contexts.The context mask array may contain
null
, indicating the default context (the default graph in RDF datasets).If the context mask is
Set.isEmpty()
, then this is a union graph which triples reflect statements in any contexts. Triples added to the graph will be added in the default context, e.g. equivalent tonew Resource[1]{null}
) in RDF4J.Note that the context mask itself cannot be
null
.The returned set is an immutable copy; to specify a different mask, use
RDF4J.asGraph(Repository, Set, Option...)
- Specified by:
getContextMask
in interfaceRDF4JGraph
- Returns:
- The context mask as a set of
BlankNodeOrIRI
graph names, which may contain the valuenull
.
-
iterate
public ClosableIterable<Triple> iterate(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
Description copied from interface:RDF4JGraph
Gets an Iterable for iterating over the triples in the graph 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 (Triple t : graph.iterate(alice, knows, null)) { System.out.println(t.getObject()); }
The behaviour of the iterator is not specified if
Graph.add(Triple)
,Graph.remove(Triple)
orGraph.clear()
, are called on theGraph
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
Graph.stream(BlankNodeOrIRI, IRI, RDFTerm)
to return itsBaseStream.iterator()
.Note that for graphs 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<Triple> s : graph.iterate(s,p,o)) { for (Triple t : triples) { return t; // 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 interfaceGraph
- Specified by:
iterate
in interfaceRDF4JGraph
- Parameters:
subject
- The triple subject (null is a wildcard)predicate
- The triple predicate (null is a wildcard)object
- The triple object (null is a wildcard)- Returns:
- A
Iterable
that returnsIterator
over the matching triples in the graph
-
iterate
public ClosableIterable<Triple> iterate() throws java.util.ConcurrentModificationException, java.lang.IllegalStateException
Description copied from interface:RDF4JGraph
Gets an Iterable for iterating over all triples in the graph.This method is meant to be used with a Java for-each loop, e.g.:
for (Triple t : graph.iterate()) { System.out.println(t); }
The behaviour of the iterator is not specified ifGraph.add(Triple)
,Graph.remove(Triple)
orGraph.clear()
, are called on theGraph
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
Graph.stream()
to return itsBaseStream.iterator()
.Note that for graphs 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<Triple> s : graph.iterate()) { for (Triple t : triples) { return t; // 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 interfaceGraph
- Specified by:
iterate
in interfaceGraphLike<Triple>
- Specified by:
iterate
in interfaceRDF4JGraph
- Returns:
- A
Iterable
that returnsIterator
over all of the triples in the graph - Throws:
java.util.ConcurrentModificationException
- if a concurrency conflict occurs while the Iterator is active.java.lang.IllegalStateException
- if theIterable
has been reused
-
-