Reputation: 136
I have a problem accessing combined Ruta Annotations.
My Annotations are based off a prior Module that generates NormalizedNamedEnitites (NNEs) and Marks them according to a ruleset, which works just fine:
NormalizedNamedEntity{REGEXP(NormalizedNamedEntity.concept.identifier,"XXX") -> MARK(XXX)};
NormalizedNamedEntity{REGEXP(NormalizedNamedEntity.concept.identifier,"YYY") -> MARK(YYY)};
Then I proceed to combine those two in a new Annotation:
(XXX){-> CREATE(CCC, "YYY" = YYY, "XXX" = XXX)};
Which also works very fine.
In my IDE (Eclipse), I can access those new Rules in the Ruta Editor View and everything is perfectly working. But after that I want to access the "encasing" Annotation and add all "nested" Annotations to an array, which I just can't find out how. I'm pretty lost in the documentation and am hoping someone out there has this already done and can help me out on this case.
Again: I'm using Java (1.8).
Thanks a lot!
Edit: Further Information
Sample Text:
Paracetamol 40mg daily
Annotations made (with the help of prior Models/Modules, see above):
Paracetamol 40mg daily
Name------- Dose Scheme
Now I want to introduce a encasing Annotation called "Med", which, in case all three nested Annotations are present will encase those.
The Type "Med" has each of the nested Types as a accessible Feature defined.
Now I want to access firstly the Med Annotations (which isn't the problem for me here) and then each nested Annotation (on which I got no idea how to do - yet). I'm still ploughing through the documentation of UIMA to find a hint.
Upvotes: 1
Views: 113
Reputation: 3113
There are many ways to access nested annotations. Currently, I prefer something like the following:
DECLARE Name, Dose, Scheme;
// some mocked annotations
"Paracetamol" -> Name;
"40mg" -> Dose;
"daily" -> Scheme;
DECLARE Med (Name name, Dose dose, Scheme scheme);
(n:Name d:Dose s:Scheme){-> CREATE(Med, "name" = n, "dose" = d, "scheme" = s)};
DECLARE Test1, Test2, Test3;
Med.name{-> Test1};
m:Med ->{
m.name{-> Test1};
m.dose{-> Test2};
m.scheme{-> Test3};
};
FOREACH(med) Med{}{
med.name{-> Test1};
med.dose{-> Test2};
med.scheme{-> Test3};
}
DISCLAIMER: I am a developer of UIMA Ruta
Upvotes: 2