you're right % is performing some kind of "or".
So we will wait for the new release. Many thanks 2017-02-22 9:54 GMT+01:00 Peter Klügl <[email protected]>: > I actually wonder why your rules work. I am quite sure that they match > too often, i. e. they match also if only one of the conjunct rule > elements match. > > You can simply try that by using a wrong string in the check like "NG" > instead of "Neil Gaiman" > > Anyways, the problem will be fixed in a few minutes and will be part of > the next release. > > > Best, > > > Peter > > > Am 22.02.2017 um 09:38 schrieb Peter Klügl: > > Thanks. Maybe its just a bug in 2.5.0 I already fixed. I'll investigate > it. > > > > > > Am 22.02.2017 um 09:24 schrieb José Vicente Moyano Murillo: > >> Thank you very much Peter. Your advice was amazing. > >> > >> We tried the first option using Conjunct rules and as you said it does > not > >> work with version 2.5.0. But we change a little your example and it > works > >> perfectly witn 2.4.0 and 2.5.0 > >> > >> We use theses examples with success: > >> > >> DECLARE Annotation RuleDetection; > >> Book{ -> CREATE(NeilsBook) } <- { > >> Attribute{Attribute.name=="title", Attribute.ct=="Norse > Mythology"}" > >> % > >> Attribute{Attribute.name=="author", Attribute.ct=="Neil > >> Gaiman"};" > >> }; > >> > >> > >> DECLARE Annotation RuleDetection; > >> Book{ -> CREATE(NeilsBook) } <- { > >> Attribute{FEATURE("name","title"), FEATURE("ct", "Norse > Mythology")}" > >> % > >> Attribute{FEATURE("name","author"), FEATURE("ct", "Neil > >> Gaiman")}; > >> }; > >> > >> DECLARE Annotation RuleDetection; > >> Book{ -> CREATE(NeilsBook) } <- { > >> Attribute{Attribute.name=="title", Attribute.ct=="Norse > Mythology"}" > >> % > >> Attribute{FEATURE("name","author"), FEATURE("ct", "Neil > >> Gaiman")}; > >> }; > >> > >> > >> May be the problem is with when we use Identifiers: > >> a1:Attribute and a2:Attribute > >> > >> In any case thank you very much for your help. > >> > >> > >> 2017-02-21 17:46 GMT+01:00 Peter Klügl <[email protected]>: > >> > >>> 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=FD1D8F9690602616CA59B38CFE9290 > >>> 06.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=FD1D8F9690602616CA59B38CFE9290 > 06.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 > >>>> > >
