Hi Peter, I'm sorry but this example does not work properly. It seems that it is a problem regarding conjunction rules (%)
This is our test case and result. We have a book with 5 attributes - name - author - pages - ISBN - Category The rule is validatin name and author. RUTA creates the annotation with the list but the list contains 20 times the las attribute (Category). If we use # it works perfectly. But in general we must use % May be this information will help you. Many thanks 2017-02-28 14:23 GMT+01:00 Peter Kluegl <[email protected]>: > Hi, > > > operations directly on lists and arrays are on my todo list but not yet > implemented. > > > Right now, there are still some options like a variable or restricted > assignments. > > > Here's an example with an ANNOTATIONLIST variable: > > > ANNOTATIONLIST list; > Book{-> CREATE(NeilsBook, "attributes" = list)}<-{ > a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology" -> > ADD(list,a1)} > % a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman" -> > ADD(list,a2)}; > }; > > > Variables are global, so you need to clear the list maybe somewhere, > e.g. before the first ADD. > > > In the current trunk, something like the following is also possible: > > Book{-> NeilsBook("attributes" = Attribute{OR(Attribute > .name=="title", Attribute.name=="author")})}.... > > > Best, > > > Peter > > > Am 28.02.2017 um 14:06 schrieb José Vicente Moyano Murillo: > > Hi Peter, we have another question regarding the same example. > > > > Right now all is working properly (many thanks) and it seems that > > 2.5.1-SNAPSHOT it's fine. > > > > Now we are planning to store some information in the created annotation. > We > > want to store all the attributes that matches the RUTA rule. > > > > It is possible to store a1 and a2 in a feature (attributes) of NeilsBook? > > > > The example: > > > > Book{-> NeilsBook}<-{ > > a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"} > > % > > a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"}; > > }; > > > > We are using this aproach: > > > > Book{-> NeilsBook("attributes" = Attribute )}<-{ > > a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"} > > % > > a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"}; > > }; > > > > This example works but it is storing all the annotations "Attribute" > > covered by "Book" and we just want the attributes that matches the rule. > > > > Thanks in advance. > > > > > > > > > > 2017-02-24 10:29 GMT+01:00 José Vicente Moyano Murillo <[email protected]>: > > > >> Many thanks Peter ¡¡¡ > >> > >> 2017-02-24 9:46 GMT+01:00 Peter Klügl <[email protected]>: > >> > >>> Hi, > >>> > >>> > >>> the repo: > >>> > >>> <repository> > >>> <id>apache.snapshots</id> > >>> <name>Apache Snapshot Repository</name> > >>> <url>http://repository.apache.org/snapshots</url> > >>> <releases> > >>> <enabled>false</enabled> > >>> </releases> > >>> </repository> > >>> > >>> > >>> the folder: > >>> > >>> https://repository.apache.org/content/groups/snapshots/org/a > >>> pache/uima/ruta-core/2.5.1-SNAPSHOT/ > >>> > >>> > >>> Best, > >>> > >>> Peter > >>> > >>> > >>> > >>> Am 23.02.2017 um 13:47 schrieb José Vicente Moyano Murillo: > >>>> Hi, > >>>> > >>>> ruta-core.jar it's enough. > >>>> > >>>> It will be fantastic if i could access the snapshot repository. > >>>> > >>>> 2017-02-23 13:03 GMT+01:00 Peter Klügl <[email protected]>: > >>>> > >>>>> Hi, > >>>>> > >>>>> > >>>>> what do you need? Only ruta-core.jar or also the Eclipse > plugins/update > >>>>> site? > >>>>> > >>>>> I will prepare a new RC for the next release soon. > >>>>> > >>>>> There should be snapshot artifacts built by jenkins in the snapshot > >>>>> repository. I am out-of-office today so do not have the link right > >>> now. (If > >>>>> you want to build it yourself, the svn source repo can be accessed by > >>>>> anyone) > >>>>> > >>>>> > >>>>> Best, > >>>>> > >>>>> > >>>>> Peter > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> Am 23.02.2017 um 08:06 schrieb José Vicente Moyano Murillo: > >>>>> > >>>>>> Hi Peter, good morning. > >>>>>> > >>>>>> Have we any opportunity to get a fixed version? I mean a snapshot or > >>> an > >>>>>> access to the repo. > >>>>>> > >>>>>> Regards > >>>>>> > >>>>>> 2017-02-22 10:38 GMT+01:00 José Vicente Moyano Murillo < > >>> [email protected]>: > >>>>>> 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=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 > >>>>>>>>>>>> > >>>>>>>>>>>> > >>> > >
