Hi,
I have a problem with the subiterator and would appreciate any help on this
issue. I use uimafit 1.4.0 and uimaj-core 2.4.0
Subiterator in use is:
http://uima.apache.org/d/uimaj-2.3.1/api/org/apache/uima/cas/text/Annotation
Index.html#subiterator%28org.apache.uima.cas.text.AnnotationFS,%20boolean,%2
0boolean%29
I have an annotation "Sentence" which covers a sentence.
Then I have an annotation "Value" which covers numerical values in a
sentence.
Example: "This is sentence A with no value. This is sentence B with value
377." causes
- two "Sentence" annotations: "This is sentence A with no value."
and "This is sentence B with value 377."
- one "Value" annotation: "377"
Now, if I want to get all "Value" annotations of each "Sentence", I iterate
over the "Sentence"-anntotations and then use a subiterator to iterate over
all "Value"-annotations within this sentence.
The problem occurs if I set the "strict" parameter to "false". In this case,
for the first Sentence the subiterator also returns the value of the second
sentence, i.e. "377" is returned for the sentence "This is sentence A with
no value."
Normally, according to the javadoc, only annotations should returned with
"annot < b and annot.getBegin() <= b.getBegin() <= annot.getEnd()".
The (abstracted) code fragment looks as follow:
Iterator<SentenceAnnotation> it = JCasUtil.iterator(myCAS,
SentenceAnnotation.class);
while (it.hasNext()) {
Sentence sa = it.next();
Iterator<Value> it3 = JCasUtil.iterator(sa, Value.class, false, false);
while (it3.hasNext()) {
Value tempAmount =
it3.next();
if (tempAmount.getBegin() > sa.getEnd()) {
System.out.println("
-------------------------------- ERROR ------------------------- This
sentence covers a value which is out of bounds!");
}
}
}
Thank you in advance.
Best regards,
Thomas
|