[ 
https://issues.apache.org/jira/browse/UIMA-4261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Silvestre Losada updated UIMA-4261:
-----------------------------------
    Attachment: patch.txt

Hi this patch solve the problem I added two new methods on RutaBasic 
removeBeginIfExist and removeEndIfExist that return a boolean value to control 
if the annotation has been removed or not. Then in ruta stream if annotation 
has been removed isPartOf is updated. I think that removeBegin and removeEnd 
could always return boolean value.

> Partofneq does not match all annotations if created by exec action.
> -------------------------------------------------------------------
>
>                 Key: UIMA-4261
>                 URL: https://issues.apache.org/jira/browse/UIMA-4261
>             Project: UIMA
>          Issue Type: Bug
>          Components: ruta
>    Affects Versions: 2.3.0ruta
>            Reporter: Silvestre Losada
>             Fix For: 2.3.1ruta
>
>         Attachments: TestRutaS.zip, patch.txt
>
>
> PARTOFNEQ is not able to match all annotations if the Annotations are created 
> by external analysis engine. Here is an example
> ENGINE TestAE;
> Document{-> EXEC(TestAE,{TestType})};
> (TestType{-> UNMARKALL(TestType)}){PARTOFNEQ(TestType)};
> The TestAE is generating 4 annotations for input test rebecca minkoff mini mac
> rebecca minkoff mini mac -> TestType
> minkoff -> TestType
> mini mac -> TestType
> mac -> TestType
> PARTOFNEQ is able to match only "minkoff" and "mini mac".
> It seems that  ExecAction is removing the Type form RutaBasic.partOf array at 
> some point of the execution. After that in PartOfNeqCondition when  method 
> check is executed  partOf variable is always false (see below source code). 
> It is because the Type was removed previously from ruta basic.
>     boolean partOf = beginAnchor.isPartOf(t) || endAnchor.isPartOf(t);
>     if (!partOf) {
>       return false;
>     }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to