public class LinkedHashModel extends AbstractModel
Model
interface.
This implementation provides constant-time performance for filters using a
single term, assuming the hash function disperses the elements properly among
the buckets. Each term is indexed using a HashMap
. When multiple
terms are provided in a filter the index, of the term that reduces the
possible Statement
s the most, is used and a sequential scan is used
to filter additional terms.
Note that this implementation is not synchronized. If multiple threads access a model concurrently, and at least one of the threads modifies the model, it must be synchronized externally. This is typically accomplished by synchronizing on some object that naturally encapsulates the model. If no such object exists, the set should be "wrapped" using the Collections.synchronizedSet method. This is best done at creation time, to prevent accidental unsynchronized access to the LinkedHashModel instance (though the synchronization guarantee is only when accessing via the Set interface methods):
Sets = Collections.synchronizedSet(new LinkedHashModel(...));
Constructor and Description |
---|
LinkedHashModel() |
LinkedHashModel(Collection<? extends Statement> c) |
LinkedHashModel(int size) |
LinkedHashModel(Model model) |
LinkedHashModel(Set<Namespace> namespaces) |
LinkedHashModel(Set<Namespace> namespaces,
Collection<? extends Statement> c) |
LinkedHashModel(Set<Namespace> namespaces,
int size) |
Modifier and Type | Method and Description |
---|---|
boolean |
add(Resource subj,
IRI pred,
Value obj,
Resource... contexts)
Adds one or more statements to the model.
|
void |
clear() |
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.
|
Model |
filter(Resource subj,
IRI pred,
Value obj,
Resource... contexts)
Returns a 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 map that contains the assigned namespaces.
|
Iterator |
iterator() |
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.
|
Optional<Namespace> |
removeNamespace(String prefix)
Removes a namespace declaration by removing the association between a
prefix and a namespace name.
|
void |
removeTermIteration(Iterator iterator,
Resource subj,
IRI pred,
Value obj,
Resource... contexts)
Called by aggregate sets when a term has been removed from a term
iterator.
|
void |
setNamespace(Namespace namespace)
Sets the prefix for a namespace.
|
Namespace |
setNamespace(String prefix,
String name)
Sets the prefix for a namespace.
|
int |
size() |
add, addAll, clear, closeIterator, containsAll, contexts, equals, getValueFactory, hashCode, isEmpty, match, objects, predicates, removeAll, retainAll, subjects, toArray, toArray, unmodifiable
toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
add, contains, filter, objectIRI, objectLiteral, objectResource, objectString, objectURI, objectValue, remove, subjectBNode, subjectIRI, subjectResource, subjectURI
spliterator
parallelStream, removeIf, stream
public LinkedHashModel()
public LinkedHashModel(Model model)
public LinkedHashModel(Collection<? extends Statement> c)
public LinkedHashModel(int size)
public LinkedHashModel(Set<Namespace> namespaces, Collection<? extends Statement> c)
public Optional<Namespace> getNamespace(String prefix)
Model
prefix
- A namespace prefix.Optional.empty()
if there is no such namespace.public Set<Namespace> getNamespaces()
Model
public Namespace setNamespace(String prefix, String name)
Model
prefix
- The new prefix.name
- The namespace name that the prefix maps to.Namespace
object for the given namespace.public void setNamespace(Namespace namespace)
Model
namespace
- A Namespace
object to use in this Model.public Optional<Namespace> removeNamespace(String prefix)
Model
prefix
- The namespace prefix of which the assocation with a namespace name
is to be removed.Optional.empty()
public int size()
size
in interface Collection<Statement>
size
in interface Set<Statement>
size
in class AbstractCollection<Statement>
public boolean add(Resource subj, IRI pred, Value obj, Resource... contexts)
Model
subj
- The statement's subject.pred
- The statement's predicate.obj
- The statement's object.contexts
- The contexts to add statements to.public void clear()
clear
in interface Collection<Statement>
clear
in interface Set<Statement>
clear
in class AbstractModel
public boolean remove(Object o)
remove
in interface Collection<Statement>
remove
in interface Set<Statement>
remove
in class AbstractModel
public boolean contains(Object o)
contains
in interface Collection<Statement>
contains
in interface Set<Statement>
contains
in class AbstractModel
public Iterator iterator()
public boolean contains(Resource subj, IRI pred, Value obj, Resource... contexts)
Model
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
.
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.true
if statements match the specified pattern.public boolean remove(Resource subj, IRI pred, Value obj, Resource... contexts)
Model
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
.
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.true
if one or more statements have been removed.public Model filter(Resource subj, IRI pred, Value obj, Resource... contexts)
Model
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
.
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.public void removeTermIteration(Iterator iterator, Resource subj, IRI pred, Value obj, Resource... contexts)
AbstractModel
removeTermIteration
in class AbstractModel
iterator
- The iterator used to navigate the live set (never null)subj
- the subject term to be removed or nullpred
- the predicate term to be removed or nullobj
- the object term to be removed or nullcontexts
- an array of one context term to be removed or an empty arrayCopyright © 2001-2016 Aduna. All Rights Reserved.