Package org.eclipse.rdf4j.model.impl

## Class FilteredModel

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

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

      public abstract class FilteredModel
      extends AbstractModel

  Applies a basic graph pattern filter to what triples can be see.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Resource[]` | `contexts` |
    `protected Value` | `obj` |
    `protected IRI` | `pred` |
    `protected Resource` | `subj` |

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `FilteredModel​(AbstractModel model, Resource subj, IRI pred, Value obj, Resource... contexts)` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `add​(Resource s, IRI p, Value o, Resource... c)` | Adds one or more statements to the model.
    `boolean` | `contains​(Resource s, IRI p, Value o, Resource... c)` | Determines if statements with the specified subject, predicate, object and (optionally) context exist in this model.
    `Model` | `filter​(Resource s, IRI p, Value o, Resource... c)` | 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.
    `boolean` | `remove​(Resource s, IRI p, Value o, Resource... c)` | Removes statements with the specified subject, predicate, object and (optionally) context exist in this model.
    `protected abstract void` | `removeFilteredTermIteration​(Iterator<Statement> iter, Resource subj, IRI pred, Value obj, Resource... contexts)` | Called by aggregate sets when a term has been removed from a term iterator.
    `Optional<Namespace>` | `removeNamespace​(String prefix)` | Removes a namespace declaration by removing the association between a prefix and a namespace name.
    `void` | `removeTermIteration​(Iterator<Statement> iter, Resource s, IRI p, Value o, Resource... c)` | Called by aggregate sets when a term has been removed from a term iterator.
    `Namespace` | `setNamespace​(String prefix, String name)` | Sets the prefix for a namespace.
    `void` | `setNamespace​(Namespace namespace)` | Sets the prefix for a namespace.
    `int` | `size()` |

    - ### Methods inherited from class org.eclipse.rdf4j.model.impl.AbstractModel

      `add, addAll, clear, clear, closeIterator, contains, containsAll, contexts, isEmpty, objects, predicates, remove, removeAll, retainAll, subjects, toArray, toArray, unmodifiable`

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

      `equals, hashCode`

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

      `iterator, 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 org.eclipse.rdf4j.model.Model

      `getStatements`

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

      `equals, hashCode, iterator, spliterator`

- - ### Field Detail

    - #### subj

          protected Resource subj

    - #### pred

          protected IRI pred

    - #### obj

          protected Value obj

    - #### contexts

          protected Resource[] contexts

  - ### Constructor Detail

    - #### FilteredModel

          protected FilteredModel​(AbstractModel model,
                                  Resource subj,
                                  IRI pred,
                                  Value obj,
                                  Resource... contexts)

  - ### Method Detail

    - #### 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.
      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.
      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.
      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.
      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.
      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()`

    - #### 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>`

    - #### add

          public boolean add​(Resource s,
                             IRI p,
                             Value o,
                             Resource... c)

      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.
      Parameters:
        `s` - The statement's subject.
        `p` - The statement's predicate.
        `o` - The statement's object.
        `c` - The contexts to add statements to.

    - #### remove

          public boolean remove​(Resource s,
                                IRI p,
                                Value o,
                                Resource... c)

      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`.

      Parameters:
        `s` - The subject of the statements to remove, `null` to remove statements with any subject.
        `p` - The predicate of the statements to remove, `null` to remove statements with any predicate.
        `o` - The object of the statements to remove, `null` to remove statements with any object.
        `c` - 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.

    - #### contains

          public boolean contains​(Resource s,
                                  IRI p,
                                  Value o,
                                  Resource... c)

      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` .

      Parameters:
        `s` - The subject of the statements to match, `null` to match statements with any subject.
        `p` - The predicate of the statements to match, `null` to match statements with any predicate.
        `o` - The object of the statements to match, `null` to match statements with any object.
        `c` - 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.

    - #### filter

          public Model filter​(Resource s,
                              IRI p,
                              Value o,
                              Resource... c)

      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`.

      Parameters:
        `s` - The subject of the statements to match, `null` to match statements with any subject.
        `p` - The predicate of the statements to match, `null` to match statements with any predicate.
        `o` - The object of the statements to match, `null` to match statements with any object.
        `c` - 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...)`

    - #### removeTermIteration

          public final void removeTermIteration​(Iterator<Statement> iter,
                                                Resource s,
                                                IRI p,
                                                Value o,
                                                Resource... c)

      Description copied from class: `AbstractModel`
      Called by aggregate sets when a term has been removed from a term iterator. Exactly one of the last four terms will be non-empty.
      Specified by:
        `removeTermIteration` in class `AbstractModel`
      Parameters:
        `iter` - The iterator used to navigate the live set (never null)
        `s` - the subject term to be removed or null
        `p` - the predicate term to be removed or null
        `o` - the object term to be removed or null
        `c` - an array of one context term to be removed or an empty array

    - #### removeFilteredTermIteration

          protected abstract void removeFilteredTermIteration​(Iterator<Statement> iter,
                                                              Resource subj,
                                                              IRI pred,
                                                              Value obj,
                                                              Resource... contexts)

      Called by aggregate sets when a term has been removed from a term iterator. At least one of the last four terms will be non-empty.
      Parameters:
        `iter` - The iterator used to navigate the live set (never null)
        `subj` - the subject term to be removed or null
        `pred` - the predicate term to be removed or null
        `obj` - the object term to be removed or null
        `contexts` - an array of one context term to be removed or an empty array