Author: pkluegl Date: Mon Sep 2 12:31:43 2013 New Revision: 1519416 URL: http://svn.apache.org/r1519416 Log: UIMA-3240 - fixed set of annotations
Added: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java Added: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java?rev=1519416&view=auto ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java (added) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +*/ + +package org.apache.uima.ruta.testing.evaluator; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.uima.cas.CAS; +import org.apache.uima.cas.Type; +import org.apache.uima.cas.TypeSystem; +import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.cas.text.AnnotationIndex; + +public abstract class AbstractCasEvaluator implements ICasEvaluator { + + protected List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) { + List<AnnotationFS> result = new ArrayList<AnnotationFS>(); + TypeSystem typeSystem = cas.getTypeSystem(); + AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex(); + for (AnnotationFS each : annotationIndex) { + Type type = each.getType(); + for (Type eachType : types) { + if(typeSystem.subsumes(eachType, type)) { + result.add(each); + break; + } + } + } + return result; + } + + protected boolean match(AnnotationFS a1, AnnotationFS a2) { + if (a1 != null && a2 != null) { + if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd() + && a1.getType().getName().equals(a2.getType().getName())) + return true; + } + return false; + } + +} Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -28,13 +28,11 @@ import java.util.StringTokenizer; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; import org.apache.uima.cas.CASRuntimeException; -import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Feature; -import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.text.AnnotationFS; -public class CoreMatchCasEvaluator implements ICasEvaluator { +public class CoreMatchCasEvaluator extends AbstractCasEvaluator { public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes) throws CASRuntimeException, CASException { @@ -112,21 +110,6 @@ public class CoreMatchCasEvaluator imple return run; } - private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) { - List<AnnotationFS> result = new ArrayList<AnnotationFS>(); - for (Type type : types) { - FSIterator iterator = cas.getAnnotationIndex(type).iterator(); - while (iterator.isValid()) { - FeatureStructure fs = iterator.get(); - if (fs instanceof AnnotationFS) { - result.add((AnnotationFS) fs); - } - iterator.moveToNext(); - } - } - return result; - } - private boolean matchCore(AnnotationFS a1, AnnotationFS a2) { String coreTerm = null; Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -27,13 +27,11 @@ import java.util.List; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; import org.apache.uima.cas.CASRuntimeException; -import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Feature; -import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.text.AnnotationFS; -public class ExactCasEvaluator implements ICasEvaluator { +public class ExactCasEvaluator extends AbstractCasEvaluator { public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes) throws CASRuntimeException, CASException { @@ -111,28 +109,5 @@ public class ExactCasEvaluator implement return run; } - private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) { - List<AnnotationFS> result = new ArrayList<AnnotationFS>(); - for (Type type : types) { - FSIterator iterator = cas.getAnnotationIndex(type).iterator(); - while (iterator.isValid()) { - FeatureStructure fs = iterator.get(); - if (fs instanceof AnnotationFS) { - result.add((AnnotationFS) fs); - } - iterator.moveToNext(); - } - } - return result; - } - - private boolean match(AnnotationFS a1, AnnotationFS a2) { - if (a1 != null && a2 != null) { - if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd() - && a1.getType().getName().equals(a2.getType().getName())) - return true; - } - return false; - } } Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -38,7 +38,7 @@ import org.apache.uima.jcas.tcas.Annotat import org.apache.uima.ruta.UIMAConstants; import org.apache.uima.ruta.engine.RutaEngine; -public class FeatureCasEvaluator implements ICasEvaluator { +public class FeatureCasEvaluator extends AbstractCasEvaluator { public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes) throws CASRuntimeException, CASException { @@ -225,7 +225,7 @@ public class FeatureCasEvaluator impleme private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas) { TypeSystem typeSystem = cas.getTypeSystem(); Type annotationType = cas.getAnnotationType(); - Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase"); +// Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase"); Collection<FeatureStructure> result = new HashSet<FeatureStructure>(); for (Type type : types) { // if ((type != null) && !typeSystem.subsumes(cas.getAnnotationType(), type) && Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -27,13 +27,11 @@ import java.util.List; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; import org.apache.uima.cas.CASRuntimeException; -import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Feature; -import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.text.AnnotationFS; -public class PartialMatchCasEvaluator implements ICasEvaluator { +public class PartialMatchCasEvaluator extends AbstractCasEvaluator { public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes) throws CASRuntimeException, CASException { @@ -111,21 +109,6 @@ public class PartialMatchCasEvaluator im return run; } - private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) { - List<AnnotationFS> result = new ArrayList<AnnotationFS>(); - for (Type type : types) { - FSIterator iterator = cas.getAnnotationIndex(type).iterator(); - while (iterator.isValid()) { - FeatureStructure fs = iterator.get(); - if (fs instanceof AnnotationFS) { - result.add((AnnotationFS) fs); - } - iterator.moveToNext(); - } - } - return result; - } - private boolean overlap(AnnotationFS a1, AnnotationFS a2) { if (a1 != null && a2 != null) { if ((a1.getBegin() <= a2.getBegin() && a1.getEnd() >= a2.getBegin()) Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -27,17 +27,18 @@ import java.util.List; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; import org.apache.uima.cas.CASRuntimeException; -import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.jcas.tcas.Annotation; import org.apache.uima.ruta.UIMAConstants; import org.apache.uima.ruta.engine.RutaEngine; -public class StringFeatureCasEvaluator implements ICasEvaluator { +public class StringFeatureCasEvaluator extends AbstractCasEvaluator { + public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes) throws CASRuntimeException, CASException { Type falsePositiveType = run.getTypeSystem().getType(ICasEvaluator.FALSE_POSITIVE); @@ -137,9 +138,9 @@ public class StringFeatureCasEvaluator i } if (withFeatures) { CAS testCas = fs.getCAS(); - CAS runCas = newFS.getCAS(); +// CAS runCas = newFS.getCAS(); TypeSystem testTS = testCas.getTypeSystem(); - TypeSystem runTS = runCas.getTypeSystem(); +// TypeSystem runTS = runCas.getTypeSystem(); Type stringType = testTS.getType(UIMAConstants.TYPE_STRING); List<Feature> features = fs.getType().getFeatures(); for (Feature feature : features) { @@ -157,24 +158,26 @@ public class StringFeatureCasEvaluator i TypeSystem typeSystem = cas.getTypeSystem(); Type stringType = typeSystem.getType(UIMAConstants.TYPE_STRING); Collection<FeatureStructure> result = new HashSet<FeatureStructure>(); - for (Type type : types) { - FSIterator<FeatureStructure> iterator = cas.getIndexRepository().getAllIndexedFS(type); - while (iterator.isValid()) { - FeatureStructure fs = iterator.get(); - List<Feature> features = fs.getType().getFeatures(); - for (Feature feature : features) { - Type range = feature.getRange(); - if (typeSystem.subsumes(stringType, range)) { - result.add(fs); - break; + AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex(); + for (AnnotationFS each : annotationIndex) { + Type type = each.getType(); + for (Type eachType : types) { + if(typeSystem.subsumes(eachType, type)) { + List<Feature> features = each.getType().getFeatures(); + for (Feature feature : features) { + Type range = feature.getRange(); + if (typeSystem.subsumes(stringType, range)) { + result.add(each); + break; + } } } - iterator.moveToNext(); } } return result; } + private boolean match(FeatureStructure a1, FeatureStructure a2) { Type type1 = a1.getType(); Type type2 = a2.getType(); Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -27,12 +27,12 @@ import java.util.List; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; import org.apache.uima.cas.CASRuntimeException; -import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.jcas.tcas.Annotation; public class TemplateCasEvaluator implements ICasEvaluator { @@ -156,28 +156,31 @@ public class TemplateCasEvaluator implem } } + private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas) { TypeSystem typeSystem = cas.getTypeSystem(); Type annotationType = cas.getAnnotationType(); Collection<FeatureStructure> result = new HashSet<FeatureStructure>(); - for (Type type : types) { - FSIterator<FeatureStructure> iterator = cas.getIndexRepository().getAllIndexedFS(type); - while (iterator.isValid()) { - FeatureStructure fs = iterator.get(); - List<Feature> features = fs.getType().getFeatures(); - for (Feature feature : features) { - Type range = feature.getRange(); - if (typeSystem.subsumes(annotationType, range)) { - result.add(fs); - break; + AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex(); + for (AnnotationFS each : annotationIndex) { + Type type = each.getType(); + for (Type eachType : types) { + if(typeSystem.subsumes(eachType, type)) { + List<Feature> features = each.getType().getFeatures(); + for (Feature feature : features) { + Type range = feature.getRange(); + if (typeSystem.subsumes(annotationType, range)) { + result.add(each); + break; + } } } - iterator.moveToNext(); } } return result; } - + + private boolean match(FeatureStructure a1, FeatureStructure a2) { Type type1 = a1.getType(); Type type2 = a2.getType(); Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -30,12 +30,11 @@ import org.apache.uima.cas.CASException; import org.apache.uima.cas.CASRuntimeException; import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Feature; -import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.ruta.seed.DefaultSeeder; -public class WordAccuracyCasEvaluator implements ICasEvaluator { +public class WordAccuracyCasEvaluator extends AbstractCasEvaluator { public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes) throws CASRuntimeException, CASException { @@ -143,29 +142,5 @@ public class WordAccuracyCasEvaluator im } return result; } - - private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) { - List<AnnotationFS> result = new ArrayList<AnnotationFS>(); - for (Type type : types) { - FSIterator<AnnotationFS> iterator = cas.getAnnotationIndex(type).iterator(); - while (iterator.isValid()) { - FeatureStructure fs = iterator.get(); - if (fs instanceof AnnotationFS) { - result.add((AnnotationFS) fs); - } - iterator.moveToNext(); - } - } - return result; - } - - private boolean match(AnnotationFS a1, AnnotationFS a2) { - if (a1 != null && a2 != null) { - if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd() - && a1.getType().getName().equals(a2.getType().getName())) - return true; - } - return false; - } - + } Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff ============================================================================== --- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java (original) +++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java Mon Sep 2 12:31:43 2013 @@ -34,10 +34,11 @@ import org.apache.uima.cas.FeatureStruct import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.jcas.tcas.Annotation; import org.apache.uima.ruta.seed.DefaultSeeder; -public class WordTemplateCasEvaluator implements ICasEvaluator { +public class WordTemplateCasEvaluator extends AbstractCasEvaluator { public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes) throws CASRuntimeException, CASException { @@ -67,8 +68,8 @@ public class WordTemplateCasEvaluator im } List<Type> wordTypes = getWordTypes(run); - Collection<FeatureStructure> testFSs = getFeatureStructures(types, test, wordTypes); - Collection<FeatureStructure> runFSs = getFeatureStructures(types, run, wordTypes); + Collection<FeatureStructure> testFSs = getFeatureStructures(types, test); + Collection<FeatureStructure> runFSs = getFeatureStructures(types, run); Collection<FeatureStructure> matched = new HashSet<FeatureStructure>(); List<FeatureStructure> fp = new ArrayList<FeatureStructure>(); @@ -171,29 +172,30 @@ public class WordTemplateCasEvaluator im } } } - - private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas, - List<Type> basicTypes) { + + private Collection<FeatureStructure> getFeatureStructures(List<Type> types, CAS cas) { TypeSystem typeSystem = cas.getTypeSystem(); Type annotationType = cas.getAnnotationType(); Collection<FeatureStructure> result = new HashSet<FeatureStructure>(); - for (Type type : types) { - FSIterator<FeatureStructure> iterator = cas.getIndexRepository().getAllIndexedFS(type); - while (iterator.isValid()) { - FeatureStructure fs = iterator.get(); - List<Feature> features = fs.getType().getFeatures(); - for (Feature feature : features) { - Type range = feature.getRange(); - if (typeSystem.subsumes(annotationType, range)) { - result.add(fs); - break; + AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex(); + for (AnnotationFS each : annotationIndex) { + Type type = each.getType(); + for (Type eachType : types) { + if(typeSystem.subsumes(eachType, type)) { + List<Feature> features = each.getType().getFeatures(); + for (Feature feature : features) { + Type range = feature.getRange(); + if (typeSystem.subsumes(annotationType, range)) { + result.add(each); + break; + } } } - iterator.moveToNext(); } } return result; } + private List<AnnotationFS> expand(AnnotationFS a, CAS cas, List<Type> basicTypes) { List<AnnotationFS> result = new LinkedList<AnnotationFS>(); @@ -263,7 +265,7 @@ public class WordTemplateCasEvaluator im for (AnnotationFS each1 : w1) { if (w2.size() > i) { AnnotationFS each2 = w2.get(i); - result &= matchWord(each1, each2); + result &= match(each1, each2); } else { return false; } @@ -272,14 +274,5 @@ public class WordTemplateCasEvaluator im return result; } - private boolean matchWord(AnnotationFS a1, AnnotationFS a2) { - if (a1 != null && a2 != null) { - if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd() - && a1.getType().getName().equals(a2.getType().getName())) { - return true; - } - } - return false; - } - + }