public interface RDF4JGraph extends Graph, RDF4JGraphLike<Triple>
Modifier and Type | Method and Description |
---|---|
Set<RDF4JBlankNodeOrIRI> |
getContextMask()
Return a copy of the context mask as a
Set of
RDF4JBlankNodeOrIRI 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.
|
Stream<RDF4JTriple> |
stream()
Gets all triples contained by the graph.
|
Stream<RDF4JTriple> |
stream(BlankNodeOrIRI subject,
IRI predicate,
RDFTerm object)
Gets all triples contained by the graph matched with the pattern.
|
add, add, clear, close, contains, contains, getTriples, getTriples, remove, remove, size
asModel, asRepository
Set<RDF4JBlankNodeOrIRI> getContextMask()
Set
of
RDF4JBlankNodeOrIRI
graph names.
If the set is not Set.isEmpty()
, the mask determines which
contexts in the corresponding RDF4J Model
or
Repository
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
to new 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...)
BlankNodeOrIRI
graph names,
which may contain the value null
.Stream<RDF4JTriple> stream()
The iteration does not contain any duplicate triples, as determined by
the Triple.equals(Object)
method for each Triple
.
The behaviour of the Stream
is not specified if
Graph.add(Triple)
, Graph.remove(Triple)
or Graph.clear()
are
called on the Graph
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 with
BaseStream.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<RDF4JTriple> stream(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
The iteration does not contain any duplicate triples, as determined by
the Triple.equals(Object)
method for each Triple
.
The behaviour of the Stream
is not specified if
Graph.add(Triple)
, Graph.remove(Triple)
or Graph.clear()
are
called on the Graph
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 with
BaseStream.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() }
ClosableIterable<Triple> iterate() throws ConcurrentModificationException, IllegalStateException
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 if
Graph.add(Triple)
,
Graph.remove(Triple)
or Graph.clear()
, are called on the
Graph
before it terminates. It is undefined if the returned
Iterator
supports the Iterator.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. A IllegalStateException
may be thrown on attempt to reuse the Iterable.
The default implementation of this method will call Graph.stream()
to return
its BaseStream.iterator()
.
Note that for graphs backed by a repository (RDF4JGraphLike.asRepository()
is
present), the iterable must be closed with
AutoCloseable.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.
iterate
in interface Graph
iterate
in interface GraphLike<Triple>
Iterable
that returns Iterator
over all of the
triples in the graphConcurrentModificationException
- if a concurrency conflict occurs while the Iterator is
active.IllegalStateException
- if the Iterable
has been reusedClosableIterable<Triple> iterate(BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
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)
or Graph.clear()
, are called on the
Graph
before it terminates. It is undefined if the returned
Iterator
supports the Iterator.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. A IllegalStateException
may be thrown on attempt to reuse the Iterable.
The default implementation of this method will call
Graph.stream(BlankNodeOrIRI, IRI, RDFTerm)
to return its
BaseStream.iterator()
.
Note that for graphs backed by a repository (RDF4JGraphLike.asRepository()
is
present), the iterable must be closed with
AutoCloseable.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.
Copyright © 2015–2018 The Apache Software Foundation. All rights reserved.