Interface RDF4JDataset

All Superinterfaces:
AutoCloseable, Dataset, GraphLike<Quad>, RDF4JGraphLike<Quad>
All Known Implementing Classes:
RepositoryDatasetImpl

public interface RDF4JDataset extends Dataset, RDF4JGraphLike<Quad>
Marker interface for RDF4J implementations of Dataset.
See Also:
  • Method Details

    • stream

      Stream<RDF4JQuad> stream()
      Get all quads contained by the dataset.

      The iteration does not contain any duplicate quads, as determined by the Quad.equals(Object) method for each Quad.

      The behaviour of the Stream is not specified if Dataset.add(Quad), Dataset.remove(Quad) or Dataset.clear() are called on the Dataset 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 with BaseStream.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 interface Dataset
      Specified by:
      stream in interface GraphLike<Quad>
      Returns:
      A Stream over all of the quads in the dataset
    • stream

      Stream<RDF4JQuad> stream(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
      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 each Quad.

      The behaviour of the Stream is not specified if Dataset.add(Quad), Dataset.remove(Quad) or Dataset.clear() are called on the Dataset 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 with BaseStream.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 interface Dataset
      Parameters:
      graphName - The graph the quad belongs to, wrapped as an Optional (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.
    • getGraphNames

      Stream<BlankNodeOrIRI> getGraphNames()
      Get the graph names in this Dataset.

      The set of returned graph names is equivalent to the set of unique Quad.getGraphName() of all the Dataset.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 corresponding Graph, however callers should be aware of any concurrent modifications to the Dataset may cause such calls to return Optional.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 using Optional.empty() in the Quad access methods).

      Note that for datasets 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 graphs;
       try (Stream<BlankNodeOrIRI> s : graph.stream()) {
         graphs = s.count()
       }
       
      Specified by:
      getGraphNames in interface Dataset
      Returns:
      A Stream of the graph names of this Dataset.
    • iterate

      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 if Dataset.add(Quad), Dataset.remove(Quad) or Dataset.clear(), are called on the Dataset 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 Dataset.stream() to return its BaseStream.iterator().

      Note that for datasets 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<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 interface Dataset
      Specified by:
      iterate in interface GraphLike<Quad>
      Returns:
      A Iterable that returns Iterator over all of the quads in the dataset
    • iterate

      ClosableIterable<Quad> 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.

      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) or Dataset.clear(), are called on the Dataset 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 Dataset.stream(Optional, BlankNodeOrIRI, IRI, RDFTerm) to return its BaseStream.iterator().

      Note that for datasets 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<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 interface Dataset
      Parameters:
      graphName - The graph the quad belongs to, wrapped as an Optional (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 returns Iterator over the matching quads in the dataset