uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Klügl <peter.klu...@averbis.com>
Subject Re: Using RUTA
Date Tue, 21 Feb 2017 16:46:19 GMT
Hi,


I'd normally say that you need the conjunt rules construct to specify an
AND between two rule element independent of the position:


Book{-> NeilsBook}<-{
    a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"}
    % a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"};
    };


However, I just noted that there is a problem with conjunct rules. I
haven't used it in a long time and the test coverage much lower than the
other constructs. I'll create a ticket for it and fix it.


Without conjunct rules, you need some boolean variables for cheking the
AND, which looks all but declarative:


BOOLEAN ft, fa;
FOREACH(book) Book{}{
    book{-> ft = false, fa = false};
    book->{a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"->
ft=true};};
    book->{a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"->
fa=true};};
    book{ft,fa -> NeilsBook};
}


... or with a BLOCK...


BLOCK(book) Book{}{
    Document{-> ft = false, fa = false};
    a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"-> ft=true};
    a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"-> fa=true};
    Document{ft,fa -> NeilsBook};
}


If the order of the attributes is known, you can avoid the AND check and
just specify a sequential constraint:


Book{-> NeilsBook}<-{
    a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"}
    # a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"};
    };


If you need to check on the complete title with the URL, you can replace
the coveredText comparison with a REGEXP condition.


(tested with UIMA Ruta 2.5.0)


Best,


Peter



Am 21.02.2017 um 13:58 schrieb José Vicente Moyano Murillo:
> Hello everyone
>
> I'm planning to use RUTA to create some annotations. But i'm not able to
> accomplish my objective.
>
> This is my case right now:
>
> I have a text annotated with some annotations "*Book*".
>
> Under "*Book*" annotation i have a few annotations "*Attribute*" that
> stores some information about the book. Each "*Attribute*" has a feature "
> *name*" and a feature "*parent*" to its parent (one "*Book*" annotation).
>
> And example could be a text with 2 "*Book*" annotations:
>
> "*Book*" annotation number 1 with 3 nested attributes
> 1.- *Attribute* with name feature equals "title" -> covered text: "Norse
> Mythology
> <http://www.barnesandnoble.com/w/norse-mythology-neil-gaiman/1124023596;jsessionid=FD1D8F9690602616CA59B38CFE929006.prodny_store02-atgap08?ean=9780393609097>
> "
> 2.- *Attribute* with name feature equals "author" ->  covered text: "Neil
> Gaiman"
> 3.- *Attribute* with name feature equals "language" - > covered text:
> "English"
>
>
> "*Book*" annotation number 2 with 3 nested attributes
> 1.- *Attribute* with name feature equals "title" -> covered text: "Never
> Never
> <http://www.barnesandnoble.com/w/never-never-james-patterson/1123863634;jsessionid=FD1D8F9690602616CA59B38CFE929006.prodny_store02-atgap08?ean=9780316433174>
> "
> 2.- *Attribute* with name feature equals "author" ->  covered text: "James
> Patterson"
> 3.- *Attribute* with name feature equals "language" - > covered text:
> "English"
>
> I need to respect this schema but i have this question:
> It is possible to create and annotation over a book for a given author name
> and a given title name?
>
> Thank's in advance
>


Mime
View raw message