Package org.eclipse.rdf4j.model.impl

## Class DynamicModel

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractSet<Statement>
    - - org.eclipse.rdf4j.model.impl.DynamicModel

- All Implemented Interfaces:
    `Serializable`, `Iterable<Statement>`, `Collection<Statement>`, `Set<Statement>`, `Model`, `NamespaceAware`

      public class DynamicModel
      extends AbstractSet<Statement>
      implements Model

  A LinkedHashModel or a TreeModel achieves fast data access at the cost of higher indexing time. The DynamicModel postpones this cost until such access is actually needed. It stores all data in a LinkedHashMap and supports adding, retrieving and removing data. The model will upgrade to a full model (provided by the modelFactory) if more complex operations are called, for instance removing data according to a pattern (eg. all statements with rdf:type as predicate). DynamicModel is thread safe to the extent that the underlying LinkedHashMap or Model is. The upgrade path is protected by the actual upgrade method being synchronized. The LinkedHashMap storage is not removed once upgraded, so concurrent reads that have started reading from the LinkedHashMap can continue to read even during an upgrade. We do make the LinkedHashMap unmodifiable to reduce the chance of there being a bug.
  Author:
    Håvard Mikkelsen Ottestad
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DynamicModel​(ModelFactory modelFactory)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `add​(Resource subj, IRI pred, Value obj, Resource... contexts)` | Adds one or more statements to the model.
    `boolean` | `add​(Statement statement)` |
    `boolean` | `addAll​(Collection<? extends Statement> c)` |
    `void` | `clear()` |
    `boolean` | `clear​(Resource... context)` | Removes statements with the specified context exist in this model.
    `boolean` | `contains​(Object o)` |
    `boolean` | `contains​(Resource subj, IRI pred, Value obj, Resource... contexts)` | Determines if statements with the specified subject, predicate, object and (optionally) context exist in this model.
    `boolean` | `containsAll​(Collection<?> c)` |
    `Set<Resource>` | `contexts()` | Returns a `Set` view of the contexts contained in this model.
    `boolean` | `equals​(Object o)` |
    `Model` | `filter​(Resource subj, IRI pred, Value obj, Resource... contexts)` | Returns a filtered view of the statements with the specified subject, predicate, object and (optionally) context.
    `Optional<Namespace>` | `getNamespace​(String prefix)` | Gets the namespace that is associated with the specified prefix, if any.
    `Set<Namespace>` | `getNamespaces()` | Gets the set that contains the assigned namespaces.
    `Iterable<Statement>` | `getStatements​(Resource subject, IRI predicate, Value object, Resource... contexts)` | Returns an `Iterable` over all `Statement`s in this Model that match the supplied criteria.
    `int` | `hashCode()` |
    `boolean` | `isEmpty()` |
    `Iterator<Statement>` | `iterator()` |
    `Set<Value>` | `objects()` | Returns a `Set` view of the objects contained in this model.
    `Set<IRI>` | `predicates()` | Returns a `Set` view of the predicates contained in this model.
    `boolean` | `remove​(Object o)` |
    `boolean` | `remove​(Resource subj, IRI pred, Value obj, Resource... contexts)` | Removes statements with the specified subject, predicate, object and (optionally) context exist in this model.
    `boolean` | `removeAll​(Collection<?> c)` |
    `Optional<Namespace>` | `removeNamespace​(String prefix)` | Removes a namespace declaration by removing the association between a prefix and a namespace name.
    `boolean` | `retainAll​(Collection<?> c)` |
    `Namespace` | `setNamespace​(String prefix, String name)` | Sets the prefix for a namespace.
    `void` | `setNamespace​(Namespace namespace)` | Sets the prefix for a namespace.
    `int` | `size()` |
    `Set<Resource>` | `subjects()` | Returns a `Set` view of the subjects contained in this model.
    `Object[]` | `toArray()` |
    `<T> T[]` | `toArray​(T[] a)` |
    `Model` | `unmodifiable()` | Returns an unmodifiable view of this model.

    - ### Methods inherited from class java.util.AbstractCollection

      `toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.Collection

      `parallelStream, removeIf, stream, toArray`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach`

    - ### Methods inherited from interface java.util.Set

      `spliterator`

- - ### Constructor Detail

    - #### DynamicModel

          public DynamicModel​(ModelFactory modelFactory)

  - ### Method Detail

    - #### unmodifiable

          public Model unmodifiable()

      Description copied from interface: `Model`
      Returns an unmodifiable view of this model. This method provides "read-only" access to this model. Query operations on the returned model "read through" to this model, and attempts to modify the returned model, whether direct or via its iterator, result in an `UnsupportedOperationException`.

      Specified by:
        `unmodifiable` in interface `Model`
      Returns:
        an unmodifiable view of the specified set.

    - #### getNamespace

          public Optional<Namespace> getNamespace​(String prefix)

      Description copied from interface: `NamespaceAware`
      Gets the namespace that is associated with the specified prefix, if any. If multiple namespaces match the given prefix, the result may not be consistent over successive calls to this method.
      Specified by:
        `getNamespace` in interface `NamespaceAware`
      Parameters:
        `prefix` - A namespace prefix.
      Returns:
        The namespace name that is associated with the specified prefix, or `Optional.empty()` if there is no such namespace.

    - #### getNamespaces

          public Set<Namespace> getNamespaces()

      Description copied from interface: `NamespaceAware`
      Gets the set that contains the assigned namespaces.
      Specified by:
        `getNamespaces` in interface `NamespaceAware`
      Returns:
        A `Set` containing the `Namespace` objects that are available.

    - #### setNamespace

          public Namespace setNamespace​(String prefix,
                                        String name)

      Description copied from interface: `Model`
      Sets the prefix for a namespace. This will replace any existing namespace associated to the prefix.
      Specified by:
        `setNamespace` in interface `Model`
      Parameters:
        `prefix` - The new prefix.
        `name` - The namespace name that the prefix maps to.
      Returns:
        The `Namespace` object for the given namespace.

    - #### setNamespace

          public void setNamespace​(Namespace namespace)

      Description copied from interface: `Model`
      Sets the prefix for a namespace. This will replace any existing namespace associated to the prefix.
      Specified by:
        `setNamespace` in interface `Model`
      Parameters:
        `namespace` - A `Namespace` object to use in this Model.

    - #### removeNamespace

          public Optional<Namespace> removeNamespace​(String prefix)

      Description copied from interface: `Model`
      Removes a namespace declaration by removing the association between a prefix and a namespace name.
      Specified by:
        `removeNamespace` in interface `Model`
      Parameters:
        `prefix` - The namespace prefix of which the assocation with a namespace name is to be removed.
      Returns:
        the previous namespace bound to the prefix or `Optional.empty()`

    - #### contains

          public boolean contains​(Resource subj,
                                  IRI pred,
                                  Value obj,
                                  Resource... contexts)

      Description copied from interface: `Model`
      Determines if statements with the specified subject, predicate, object and (optionally) context exist in this model. The `subject`, `predicate` and `object` parameters can be `null` to indicate wildcards. The `contexts` parameter is a wildcard and accepts zero or more values. If no contexts are specified, statements will match disregarding their context. If one or more contexts are specified, statements with a context matching one of these will match. Note: to match statements without an associated context, specify the value `null` and explicitly cast it to type `Resource`.

      Examples: `model.contains(s1, null, null)` is true if any statements in this model have subject `s1`,
      `model.contains(null, null, null, c1)` is true if any statements in this model have context `c1`,
      `model.contains(null, null, null, (Resource)null)` is true if any statements in this model have no associated context,
      `model.contains(null, null, null, c1, c2, c3)` is true if any statements in this model have context `c1`, `c2` or `c3` .

      Specified by:
        `contains` in interface `Model`
      Parameters:
        `subj` - The subject of the statements to match, `null` to match statements with any subject.
        `pred` - The predicate of the statements to match, `null` to match statements with any predicate.
        `obj` - The object of the statements to match, `null` to match statements with any object.
        `contexts` - The contexts of the statements to match. If no contexts are specified, statements will match disregarding their context. If one or more contexts are specified, statements with a context matching one of these will match.
      Returns:
        `true` if statements match the specified pattern.

    - #### add

          public boolean add​(Resource subj,
                             IRI pred,
                             Value obj,
                             Resource... contexts)

      Description copied from interface: `Model`
      Adds one or more statements to the model. This method creates a statement for each specified context and adds those to the model. If no contexts are specified, a single statement with no associated context is added. If this Model is a filtered Model then null (if context empty) values are permitted and will use the corresponding filtered values.
      Specified by:
        `add` in interface `Model`
      Parameters:
        `subj` - The statement's subject.
        `pred` - The statement's predicate.
        `obj` - The statement's object.
        `contexts` - The contexts to add statements to.

    - #### clear

          public boolean clear​(Resource... context)

      Description copied from interface: `Model`
      Removes statements with the specified context exist in this model.
      Specified by:
        `clear` in interface `Model`
      Parameters:
        `context` - The context of the statements to remove.
      Returns:
        `true` if one or more statements have been removed.

    - #### remove

          public boolean remove​(Resource subj,
                                IRI pred,
                                Value obj,
                                Resource... contexts)

      Description copied from interface: `Model`
      Removes statements with the specified subject, predicate, object and (optionally) context exist in this model. The `subject`, `predicate` and `object` parameters can be `null` to indicate wildcards. The `contexts` parameter is a wildcard and accepts zero or more values. If no contexts are specified, statements will be removed disregarding their context. If one or more contexts are specified, statements with a context matching one of these will be removed. Note: to remove statements without an associated context, specify the value `null` and explicitly cast it to type `Resource`.

      Examples: `model.remove(s1, null, null)` removes any statements in this model have subject `s1`,
      `model.remove(null, null, null, c1)` removes any statements in this model have context `c1` ,
      `model.remove(null, null, null, (Resource)null)` removes any statements in this model have no associated context,
      `model.remove(null, null, null, c1, c2, c3)` removes any statements in this model have context `c1`, `c2` or `c3`.

      Specified by:
        `remove` in interface `Model`
      Parameters:
        `subj` - The subject of the statements to remove, `null` to remove statements with any subject.
        `pred` - The predicate of the statements to remove, `null` to remove statements with any predicate.
        `obj` - The object of the statements to remove, `null` to remove statements with any object.
        `contexts` - The contexts of the statements to remove. If no contexts are specified, statements will be removed disregarding their context. If one or more contexts are specified, statements with a context matching one of these will be removed.
      Returns:
        `true` if one or more statements have been removed.

    - #### filter

          public Model filter​(Resource subj,
                              IRI pred,
                              Value obj,
                              Resource... contexts)

      Description copied from interface: `Model`
      Returns a filtered view of the statements with the specified subject, predicate, object and (optionally) context. The `subject`, `predicate` and `object` parameters can be `null` to indicate wildcards. The `contexts` parameter is a wildcard and accepts zero or more values. If no contexts are specified, statements will match disregarding their context. If one or more contexts are specified, statements with a context matching one of these will match. Note: to match statements without an associated context, specify the value `null` and explicitly cast it to type `Resource`.

      The returned model is backed by this Model, so changes to this Model are reflected in the returned model, and vice-versa. If this Model is modified while an iteration over the returned model is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The model supports element removal, which removes the corresponding statement from this Model, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll`, and `clear` operations. The statements passed to the `add` and `addAll` operations must match the parameter pattern.

      Examples: `model.filter(s1, null, null)` matches all statements that have subject `s1`,
      `model.filter(null, null, null, c1)` matches all statements that have context `c1`,
      `model.filter(null, null, null, (Resource)null)` matches all statements that have no associated context,
      `model.filter(null, null, null, c1, c2, c3)` matches all statements that have context `c1`, `c2` or `c3`.

      Specified by:
        `filter` in interface `Model`
      Parameters:
        `subj` - The subject of the statements to match, `null` to match statements with any subject.
        `pred` - The predicate of the statements to match, `null` to match statements with any predicate.
        `obj` - The object of the statements to match, `null` to match statements with any object.
        `contexts` - The contexts of the statements to match. If no contexts are specified, statements will match disregarding their context. If one or more contexts are specified, statements with a context matching one of these will match.
      Returns:
        The statements that match the specified pattern.
      See Also:
        `Model.getStatements(Resource, IRI, Value, Resource...)`

    - #### subjects

          public Set<Resource> subjects()

      Description copied from interface: `Model`
      Returns a `Set` view of the subjects contained in this model. The set is backed by the model, so changes to the model are reflected in the set, and vice-versa. If the model is modified while an iteration over the set is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The set supports element removal, which removes all statements from the model for which that element is a subject value, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll`, and `clear` operations. It does not support the `add` or `addAll` operations if the parameters `pred` or `obj` are null.
      Specified by:
        `subjects` in interface `Model`
      Returns:
        a set view of the subjects contained in this model

    - #### predicates

          public Set<IRI> predicates()

      Description copied from interface: `Model`
      Returns a `Set` view of the predicates contained in this model. The set is backed by the model, so changes to the model are reflected in the set, and vice-versa. If the model is modified while an iteration over the set is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The set supports element removal, which removes all statements from the model for which that element is a predicate value, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll`, and `clear` operations. It does not support the `add` or `addAll` operations if the parameters `subj` or `obj` are null.
      Specified by:
        `predicates` in interface `Model`
      Returns:
        a set view of the predicates contained in this model

    - #### objects

          public Set<Value> objects()

      Description copied from interface: `Model`
      Returns a `Set` view of the objects contained in this model. The set is backed by the model, so changes to the model are reflected in the set, and vice-versa. If the model is modified while an iteration over the set is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The set supports element removal, which removes all statements from the model for which that element is an object value, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll`, and `clear` operations. It does not support the `add` or `addAll` operations if the parameters `subj` or `pred` are null.
      Specified by:
        `objects` in interface `Model`
      Returns:
        a set view of the objects contained in this model

    - #### contexts

          public Set<Resource> contexts()

      Description copied from interface: `Model`
      Returns a `Set` view of the contexts contained in this model. The set is backed by the model, so changes to the model are reflected in the set, and vice-versa. If the model is modified while an iteration over the set is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The set supports element removal, which removes all statements from the model for which that element is a context value, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll`, and `clear` operations. It does not support the `add` or `addAll` operations if the parameters `subj` , `pred` or `obj` are null.
      Specified by:
        `contexts` in interface `Model`
      Returns:
        a set view of the contexts contained in this model

    - #### size

          public int size()

      Specified by:
        `size` in interface `Collection<Statement>`
      Specified by:
        `size` in interface `Set<Statement>`
      Specified by:
        `size` in class `AbstractCollection<Statement>`

    - #### isEmpty

          public boolean isEmpty()

      Specified by:
        `isEmpty` in interface `Collection<Statement>`
      Specified by:
        `isEmpty` in interface `Set<Statement>`
      Overrides:
        `isEmpty` in class `AbstractCollection<Statement>`

    - #### contains

          public boolean contains​(Object o)

      Specified by:
        `contains` in interface `Collection<Statement>`
      Specified by:
        `contains` in interface `Set<Statement>`
      Overrides:
        `contains` in class `AbstractCollection<Statement>`

    - #### iterator

          public Iterator<Statement> iterator()

      Specified by:
        `iterator` in interface `Collection<Statement>`
      Specified by:
        `iterator` in interface `Iterable<Statement>`
      Specified by:
        `iterator` in interface `Set<Statement>`
      Specified by:
        `iterator` in class `AbstractCollection<Statement>`

    - #### toArray

          public Object[] toArray()

      Specified by:
        `toArray` in interface `Collection<Statement>`
      Specified by:
        `toArray` in interface `Set<Statement>`
      Overrides:
        `toArray` in class `AbstractCollection<Statement>`

    - #### toArray

          public <T> T[] toArray​(T[] a)

      Specified by:
        `toArray` in interface `Collection<Statement>`
      Specified by:
        `toArray` in interface `Set<Statement>`
      Overrides:
        `toArray` in class `AbstractCollection<Statement>`

    - #### add

          public boolean add​(Statement statement)

      Specified by:
        `add` in interface `Collection<Statement>`
      Specified by:
        `add` in interface `Set<Statement>`
      Overrides:
        `add` in class `AbstractCollection<Statement>`

    - #### remove

          public boolean remove​(Object o)

      Specified by:
        `remove` in interface `Collection<Statement>`
      Specified by:
        `remove` in interface `Set<Statement>`
      Overrides:
        `remove` in class `AbstractCollection<Statement>`

    - #### containsAll

          public boolean containsAll​(Collection<?> c)

      Specified by:
        `containsAll` in interface `Collection<Statement>`
      Specified by:
        `containsAll` in interface `Set<Statement>`
      Overrides:
        `containsAll` in class `AbstractCollection<Statement>`

    - #### addAll

          public boolean addAll​(Collection<? extends Statement> c)

      Specified by:
        `addAll` in interface `Collection<Statement>`
      Specified by:
        `addAll` in interface `Set<Statement>`
      Overrides:
        `addAll` in class `AbstractCollection<Statement>`

    - #### retainAll

          public boolean retainAll​(Collection<?> c)

      Specified by:
        `retainAll` in interface `Collection<Statement>`
      Specified by:
        `retainAll` in interface `Set<Statement>`
      Overrides:
        `retainAll` in class `AbstractCollection<Statement>`

    - #### removeAll

          public boolean removeAll​(Collection<?> c)

      Specified by:
        `removeAll` in interface `Collection<Statement>`
      Specified by:
        `removeAll` in interface `Set<Statement>`
      Overrides:
        `removeAll` in class `AbstractSet<Statement>`

    - #### clear

          public void clear()

      Specified by:
        `clear` in interface `Collection<Statement>`
      Specified by:
        `clear` in interface `Set<Statement>`
      Overrides:
        `clear` in class `AbstractCollection<Statement>`

    - #### getStatements

          public Iterable<Statement> getStatements​(Resource subject,
                                                   IRI predicate,
                                                   Value object,
                                                   Resource... contexts)

      Description copied from interface: `Model`
      Returns an `Iterable` over all `Statement`s in this Model that match the supplied criteria.

      Examples:

      - `model.getStatements(s1, null, null)` matches all statements that have subject `s1`
      - `model.getStatements(s1, p1, null)` matches all statements that have subject `s1` and predicate `p1`
      - `model.getStatements(null, null, null, c1)` matches all statements that have context `c1`
      - `model.getStatements(null, null, null, (Resource)null)` matches all statements that have no associated context
      - `model.getStatements(null, null, null, c1, c2, c3)` matches all statements that have context `c1`, `c2` or `c3`
      Specified by:
        `getStatements` in interface `Model`
      Parameters:
        `subject` - The subject of the statements to match, `null` to match statements with any subject.
        `predicate` - The predicate of the statements to match, `null` to match statements with any predicate.
        `object` - The object of the statements to match, `null` to match statements with any object.
        `contexts` - The contexts of the statements to match. If no contexts are specified, statements will match disregarding their context. If one or more contexts are specified, statements with a context matching any one of these will match. To match statements without an associated context, specify the value `null` and explicitly cast it to type `Resource`.
      Returns:
        an `Iterable` over the statements in this Model that match the specified pattern.
      See Also:
        `Model.filter(Resource, IRI, Value, Resource...)`

    - #### equals

          public boolean equals​(Object o)

      Specified by:
        `equals` in interface `Collection<Statement>`
      Specified by:
        `equals` in interface `Set<Statement>`
      Overrides:
        `equals` in class `AbstractSet<Statement>`

    - #### hashCode

          public int hashCode()

      Specified by:
        `hashCode` in interface `Collection<Statement>`
      Specified by:
        `hashCode` in interface `Set<Statement>`
      Overrides:
        `hashCode` in class `AbstractSet<Statement>`