Class RepositoryDatasetImpl

    • Constructor Detail

      • RepositoryDatasetImpl

        RepositoryDatasetImpl​(org.eclipse.rdf4j.repository.Repository repository,
                              java.util.UUID salt,
                              boolean handleInitAndShutdown,
                              boolean includeInferred)
    • Method Detail

      • add

        public void add​(Quad tripleLike)
        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.
        Specified by:
        add in interface Dataset
        Specified by:
        add in interface GraphLike<Quad>
        Parameters:
        tripleLike - The quad to add
      • contains

        public boolean contains​(Quad tripleLike)
        Description copied from interface: Dataset
        Check if dataset contains quad.
        Specified by:
        contains in interface Dataset
        Specified by:
        contains in interface GraphLike<Quad>
        Parameters:
        tripleLike - The quad to check.
        Returns:
        True if the dataset contains the given Quad.
      • remove

        public void remove​(Quad tripleLike)
        Description copied from interface: Dataset
        Remove a concrete quad from the dataset.
        Specified by:
        remove in interface Dataset
        Specified by:
        remove in interface GraphLike<Quad>
        Parameters:
        tripleLike - quad to remove
      • clear

        public void clear()
        Description copied from interface: Dataset
        Clear the dataset, removing all quads.
        Specified by:
        clear in interface Dataset
        Specified by:
        clear in interface GraphLike<Quad>
      • 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 each Quad.

        Specified by:
        size in interface Dataset
        Specified by:
        size in interface GraphLike<Quad>
        Returns:
        The number of quads in the dataset
      • add

        public void add​(BlankNodeOrIRI graphName,
                        BlankNodeOrIRI subject,
                        IRI predicate,
                        RDFTerm object)
        Description copied from interface: Dataset
        Add a quad to the dataset, possibly mapping any of the components to those supported by this dataset.
        Specified by:
        add in interface Dataset
        Parameters:
        graphName - The graph the quad belongs to, or null for the default graph
        subject - The quad subject
        predicate - The quad predicate
        object - The quad object
      • contains

        public boolean contains​(java.util.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 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:
        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: Dataset
        Remove a concrete pattern of quads from the default graph of the dataset.
        Specified by:
        remove 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)
      • stream

        public java.util.stream.Stream<RDF4JQuad> 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 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>
        Specified by:
        stream in interface RDF4JDataset
        Returns:
        A Stream over all of the quads in the dataset
      • stream

        public java.util.stream.Stream<RDF4JQuad> stream​(java.util.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 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 RDF4JDataset
        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.
      • iterate

        public ClosableIterable<Quad> iterate()
                                       throws java.util.ConcurrentModificationException,
                                              java.lang.IllegalStateException
        Description 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 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>
        Specified by:
        iterate in interface RDF4JDataset
        Returns:
        A Iterable that returns Iterator over 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 the Iterable has 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: 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) 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
        Specified by:
        iterate in interface RDF4JDataset
        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
        Throws:
        java.util.ConcurrentModificationException - if a concurrency conflict occurs while the Iterator is active.
        java.lang.IllegalStateException - if the Iterable has been reused
      • getGraph

        public Graph getGraph()
        Description copied from interface: Dataset
        Get the default graph of this dataset.

        The Triples of the default graph are equivalent to the Quads in this Dataset which has the Quad.getGraphName() set to Optional.empty().

        It is unspecified if modifications to the returned Graph are reflected in this Dataset.

        The returned graph MAY be empty.

        Specified by:
        getGraph in interface Dataset
        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: Dataset
        Get a named graph in this dataset.

        The Triples of the named graph are equivalent to the the Quads of this Dataset which has the Quad.getGraphName() equal to the provided graphName, or equal to Optional.empty() if the provided graphName is null.

        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 empty Graph.

        Specified by:
        getGraph in interface Dataset
        Parameters:
        graphName - The name of the graph, or null for 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: 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 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
        Specified by:
        getGraphNames in interface RDF4JDataset
        Returns:
        A Stream of the graph names of this Dataset.