Hi Jörn,

> what is the best way to iterate over annotations which have
> different types?

you can use a filtered iterator - more or less like this:

                CAS cas = jcas.getCas();
                ConstraintFactory cf = ConstraintFactory.instance();
                FSIterator<Annotation> iterator = 
jcas.getAnnotationIndex().iterator();
                Type tokenType = jcas.getCasType(Token.type);
                Type sentenceType = jcas.getCasType(Sentence.type);

                // Restrict to Tokens
                FSTypeConstraint typeConstraint1 = cf.createTypeConstraint();
                typeConstraint.add(tokenType);

                // Restrict to Tokens
                FSTypeConstraint typeConstraint2 = cf.createTypeConstraint();
                typeConstraint.add(sentenceType);

                // Combine both constraints using "or"
                FSMatchConstraint disjunction = cf.or(typeConstraint1, 
typeConstraint2);

                // Create and use the filtered iterator
                FSIterator<Annotation> filteredIterator = 
cas.createFilteredIterator(iterator, disjunction);
                while(filteredIterator.hasNext()) {
                        
System.out.println(filteredIterator.next().getCoveredText());
                }

Cheers,

Richard

-- 
------------------------------------------------------------------- 
Richard Eckart de Castilho
Technical Lead
Ubiquitous Knowledge Processing Lab 
FB 20 Computer Science Department      
Technische Universität Darmstadt 
Hochschulstr. 10, D-64289 Darmstadt, Germany 
phone [+49] (0)6151 16-7477, fax -5455, room S2/02/B117
[email protected] 
www.ukp.tu-darmstadt.de 
Web Research at TU Darmstadt (WeRC) www.werc.tu-darmstadt.de
------------------------------------------------------------------- 




Reply via email to