uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Klügl <pklu...@uni-wuerzburg.de>
Subject Re: Problem: Remove annotations and then serialize CAS
Date Thu, 06 Feb 2014 12:23:48 GMT
Hi,

if I open the following xmiCAS in the CAS Editor, remove the Year
annotation and try to save the file, then I get the same exception. The
other annotations are removable...

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmlns:Title="http:///uima/ruta/example/Title.ecore"
xmlns:cas="http:///uima/cas.ecore"
xmlns:type="http:///org/apache/uima/ruta/type.ecore"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:Author="http:///uima/ruta/example/Author.ecore"
xmlns:tcas="http:///uima/tcas.ecore"
xmlns:example="http:///uima/ruta/example.ecore" xmi:version="2.0">
    <cas:NULL xmi:id="0"/>
    <cas:Sofa xmi:id="1" sofaNum="1" sofaID="_InitialView"
mimeType="text" sofaString="Ogren, P.V., Wetzler, P.G., Bethard, S.:
ClearTK: A UIMA Toolkit for Statistical Natural Language Processing. In:
UIMA for NLP workshop at LREC 08. (2008)&#13;&#10;"/>
    <example:Year xmi:id="8" sofa="1" begin="148" end="154"/>
    <example:Author xmi:id="12" sofa="1" begin="0" end="40"/>
    <example:Title xmi:id="16" sofa="1" begin="41" end="109"/>
    <tcas:DocumentAnnotation xmi:id="20" sofa="1" begin="0" end="156"
language="x-unspecified"/>
    <cas:View sofa="1" members="8 12 16 20"/>
</xmi:XMI>


Peter

Am 06.02.2014 12:56, schrieb Peter Klügl:
> Hi,
>
> has anyone seen the following exception. I have no idea what can cause
> this problem. (the typeCode is 0 or something causing the feats int
> array to be null). I added the method that causes the problem below. It
> just removes some annotations dependent of its type.
>
> I was thinking that the problem is caused by removing annotations that
> are indexed and are the value of the feature of another indexed
> annotation. However, that works for almost all types. I would assume
> that this functionality would not depend on the actual type or the order
> in the type system, right?
>
> Any ideas is greatly appreciated.
>
> java.lang.NullPointerException
>     at
> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.enqueueFeatures(XmiCasSerializer.java:593)
>     at
> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.enqueueFeaturesOfIndexed(XmiCasSerializer.java:521)
>     at
> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.serialize(XmiCasSerializer.java:241)
>     at
> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.access$700(XmiCasSerializer.java:108)
>     at
> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSerializer.java:1551)
>     at
> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSerializer.java:1616)
>     at
> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSerializer.java:1567)
>     at
> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler.writeXmi(RerunActionHandler.java:652)
>     at
> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler.access$0(RerunActionHandler.java:647)
>     at
> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler$RerunHandlerJob.writeCleanInputFiles(RerunActionHandler.java:378)
>     at
> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler$RerunHandlerJob.evalRutaWithClassPathScript(RerunActionHandler.java:196)
>     at
> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler$RerunHandlerJob.run(RerunActionHandler.java:182)
>     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
>
>
>     private void prepareCas(CAS cas) {
>       if (!includedTypes.isEmpty()) {
>         // exclude all other types if there are some included types
>         excludedTypes = new ArrayList<String>();
>         List<Type> types =
> cas.getTypeSystem().getProperlySubsumedTypes(cas.getAnnotationType());
>         for (Type type : types) {
>           if (!includedTypes.contains(type.getName())) {
>             excludedTypes.add(type.getName());
>           }
>         }
>       }
>       if (includedTypes.isEmpty() && excludedTypes.isEmpty()) {
>         // remove all annotation in default settings
>         String documentText = cas.getDocumentText();
>         cas.reset();
>         cas.setDocumentText(documentText);
>       } else {
>         List<AnnotationFS> toRemove = new LinkedList<AnnotationFS>();
>         AnnotationIndex<AnnotationFS> annotationIndex =
> cas.getAnnotationIndex();
>         for (AnnotationFS annotationFS : annotationIndex) {
>           Type type = annotationFS.getType();
>           String typeName = type.getName();
>           if (includedTypes.contains(typeName) ||
> !excludedTypes.contains(typeName)) {
>             toRemove.add(annotationFS);
>           }
>         }
>         for (AnnotationFS each : toRemove) {
>           if (!cas.getDocumentAnnotation().equals(each)) {
>             cas.removeFsFromIndexes(each);
>           }
>         }
>       }
>     }
>


Mime
View raw message