|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface AnnotationIndex<T extends AnnotationFS>
An annotation index provides additional iterator functionality that applies only to instances of
uima.tcas.Annotation. You can obtain an AnnotationIndex by calling:
AnnotationIndex idx = (AnnotationIndex)cas.getAnnotationIndex();
(the
typecast is necessary for historical reasons).
Note that the AnnotationIndex defines the following sort order between two annotations:
a.start < b.start then a < b.a.start = b.start and a.end > b.end,
then a < b. This causes annotations with larger to be sorted before
annotations with smaller spans, which produces an iteration order similar to a preorder tree
traversal.TypePriorities (which is an element of the component
descriptor). That is, if a.start = b.start, a.end = b.end, and
the type of a is defined before the type of b in the type
priorities, then a < b.
a < b, where a
and b are annotations, should be taken to mean a comes before
b in the index, according to the above rules.
| Field Summary |
|---|
| Fields inherited from interface org.apache.uima.cas.FSIndex |
|---|
BAG_INDEX, DEFAULT_BAG_INDEX, SET_INDEX, SORTED_INDEX |
| Method Summary | |
|---|---|
FSIterator<T> |
iterator(boolean ambiguous)
Return an iterator over annotations that can be constrained to be unambiguous. |
FSIterator<T> |
subiterator(AnnotationFS annot)
Return a subiterator whose bounds are defined by the input annotation. |
FSIterator<T> |
subiterator(AnnotationFS annot,
boolean ambiguous,
boolean strict)
Return a subiterator whose bounds are defined by the input annotation. |
AnnotationTree<T> |
tree(T annot)
Create an annotation tree with annot as root node. |
| Methods inherited from interface org.apache.uima.cas.FSIndex |
|---|
compare, contains, find, getIndexingStrategy, getType, iterator, iterator, size |
| Method Detail |
|---|
FSIterator<T> iterator(boolean ambiguous)
A disambiguated iterator is defined as follows. The first annotation returned is the same as would be returned by the corresponding ambiguous iterator. If the unambiguous iterator has returned a previously, it will next return the smallest b s.t. a < b and a.getEnd() <= b.getBegin().
ambiguous - If set to false, iterator will be unambiguous.
FSIterator<T> subiterator(AnnotationFS annot)
The subiterator will return annotations b s.t. annot < b,
annot.getBegin() <= b.getBegin() and
annot.getEnd() >= b.getEnd(). For annotations x, y, x < y
here is to be interpreted as "x comes before y in the index", according to the rules defined in
the description of this class.
This definition implies that annotations b that have the same span as
annot may or may not be returned by the subiterator. This is determined by the
type priorities; the subiterator will only return such an annotation b if the
type of annot precedes the type of b in the type priorities
definition. If you have not specified the priority, or if annot and
b are of the same type, then the behavior is undefined.
For example, if you an annotation s of type Sentence and an
annotation p of type Paragraph that have the same span, and you
have defined Paragraph before Sentence in your type priorities,
then subiterator(p) will give you an iterator that will return s,
but subiterator(s) will give you an iterator that will NOT return p.
The intuition is that a Paragraph is conceptually larger than a Sentence, as defined by the
type priorities.
Calling subiterator(a) is equivalent to calling
subiterator(a, true, true).. See
subiterator(AnnotationFS, boolean, boolean).
annot - Defines the boundaries of the subiterator.
FSIterator<T> subiterator(AnnotationFS annot,
boolean ambiguous,
boolean strict)
A strict subiterator is defined as follows: it will return annotations
b s.t. annot < b,
annot.getBegin() <= b.getBegin() and
annot.getEnd() >= b.getEnd(). For annotations x,y, x < y
here is to be interpreted as "x comes before y in the index", according to the rules defined in
the description of this class.
If strict is set to false, the boundary conditions are relaxed
as follows: return annotations b s.t. annot < b and
annot.getBegin() <= b.getBegin() <= annot.getEnd(). The resulting
iterator may also be disambiguated.
These definitions imply that annotations b that have the same span as
annot may or may not be returned by the subiterator. This is determined by the
type priorities; the subiterator will only return such an annotation b if the
type of annot precedes the type of b in the type priorities
definition. If you have not specified the priority, or if annot and
b are of the same type, then the behavior is undefined.
For example, if you an annotation s of type Sentence and an
annotation p of type Paragraph that have the same span, and you
have defined Paragraph before Sentence in your type priorities,
then subiterator(p) will give you an iterator that will return s,
but subiterator(s) will give you an iterator that will NOT return p.
The intutition is that a Paragraph is conceptually larger than a Sentence, as defined by the
type priorities.
annot - Annotation setting boundary conditions for subiterator.ambiguous - If set to false, resulting iterator will be unambiguous.strict - Controls if annotations that overlap to the right are considered in or out.
AnnotationTree<T> tree(T annot)
annot as root node. The tree is defined as
follows: for each node in the tree, the children are the sequence of annotations that would be
obtained from a strict, unambiguous subiterator of the node's annotation.
annot - The annotation at the root of the tree.
annot.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||