Hi Peter,

That's great, thanks a ton in advance!
For us this means we can proceed just in time with a task which requires the 
new RUTA feature.

Keeping fingers crossed.

Best,
Sebastian

----- Ursprüngliche Mail -----
Von: "Peter Klügl" <peter.klu...@averbis.com>
An: "user" <user@uima.apache.org>
Gesendet: Donnerstag, 29. September 2016 10:32:45
Betreff: Re: RUTA in Java: access object contents

Hi,


yes, I hope I can implement it today or tomorrow.


Best,


Peter


Am 29.09.2016 um 10:30 schrieb Sebastian Schaaf:
> Hi Peter,
>
> As yesterday the RUTA 2.5 release was announced (congrats :) ) and the end of 
> the month is near: do you see chances to work on the ticket for feature 
> structure support?
>
> Best,
> Sebastian
>
>
> ----- Ursprüngliche Mail -----
> Von: "Sebastian Schaaf" <sebastian.sch...@scai.fraunhofer.de>
> An: "user" <user@uima.apache.org>
> Gesendet: Mittwoch, 14. September 2016 22:08:39
> Betreff: Re: RUTA in Java: access object contents
>
> Sounds great, thank you in advance!
> Whatever comes up, don't hesitate to query back to us.
>
> Cheers,
> Sebastian
>
>
> ----- Ursprüngliche Mail -----
> Von: "Peter Klügl" <peter.klu...@averbis.com>
> An: "user" <user@uima.apache.org>
> Gesendet: Mittwoch, 14. September 2016 18:33:56
> Betreff: Re: RUTA in Java: access object contents
>
> Hi,
>
>
> I created an issue for it: https://issues.apache.org/jira/browse/UIMA-5108
>
>
> I won't be able to fix it this week, and maybe not next week because of
> some deadlines. I guess it will be fixed at least in the trunk before of
> the end of the month.
>
>
>
> Best,
>
>
> Peter
>
>
> Am 14.09.2016 um 18:25 schrieb Sebastian Schaaf:
>> Hi Peter,
>>
>> Indeed, I was talking about UIMA objects.
>>
>> We tried to hunt down the error in deeper means and understood more of the 
>> codes. Ahead of any details: again yes, we fail on types extending from TOP. 
>> In our case it is "concept", which does not have a covering text.
>>
>> In "SimpleFeatureEx", the public method "getFeatures" contains a for loop in 
>> which the different handleable cases are listed in some 'if else' cascade - 
>> this one also contains the support for arrays you wrote about. For our 
>> concept type the else case holds, so that an UIMA method 
>> "getFeatureByBaseName" gets called. This one fails, because it checks if the 
>> extracted feature comes from a type that extends from the type we want to 
>> use the feature content for. In other words: our NormalizedNamedEntity type 
>> (extending from Annotation) is queried for a feature contained in an 
>> instance of type concept. As the latter one extends from TOP (and not from 
>> NormalizedNamedEntity) getFeatureByBaseName throws the error. Although the 
>> desired content is fine (we get the string we want!).
>>
>> We also tried to manipulate types, temporarily declaring concept extends 
>> legally, so that this check does not fail. And it is fine. For the moment, 
>> because regarding our environment this is not an option. Testing with ruta 
>> source codes to implement ourselves resulted in many lines of code to be 
>> subject to adaptation. Also, the variable 'result' in the discussed for loop 
>> may be changed in an inadequate way . we don't know about the details of 
>> RUTA.
>>
>> So, the question is may it be possible for you to implement the handling of 
>> cases where features extend from TOP? Maybe first as a patch, so that it has 
>> not to be integrated into your release. And we could test whether it fails 
>> in our setting.
>>
>> So far,
>> Best,
>>
>> Sebastian
>>
>> ----- Ursprüngliche Mail -----
>> Von: "Peter Klügl" <peter.klu...@averbis.com>
>> An: "user" <user@uima.apache.org>
>> Gesendet: Montag, 12. September 2016 13:26:07
>> Betreff: Re: RUTA in Java: access object contents
>>
>> Hi,
>>
>>
>> first of all: what do you mean exactly by "our objects" and "given Java
>> objects"? Real Java objects of some arbitrary class or feature
>> structures (annotations) in UIMA? I assume that you were referring to
>> UIMA objects and the getters are the getters of features in JCasGen
>> cover classes. If not, you can skip the answer below ;-)
>>
>>
>> What you describe that should work just fine, if there weren't the
>> feature structures (the types extending TOP). Plain feature structures
>> are hardly supported in Ruta mainly for historical reasons. And many
>> language elements do not make much sense without annotation offsets,
>> e.g., sequential matching, conditions like contains and partof, ...
>>
>>
>> There is no real technical reason that feature structures are not
>> completely supported, there was just no reason to support them. I
>> personally just extended Annotation instead of Feature Structure even if
>> there was no explicit semantics of the offsets. This is of course not an
>> option if you already have a type system.
>>
>>
>> I actually have to admit that I do not know right now where feature
>> structures are and are not supported in Ruta. I added some minimal
>> support for Arrays lately, and they are also just feature structures. I
>> have to take a look...
>>
>>
>> Back to your example:
>>
>> If you have
>>
>> - Type X extends Annotation with feature a with range A
>>
>> - Type A extends TOP with feature b with range B
>>
>> - Type B extends TOP with feature z with range String
>>
>> ... you would normally write:
>>
>> X.a.b.z=="z";
>>
>> to match on each annotation of type X, get the value of feature a of
>> annotation X, get the value of feature b of the feature structure  of
>> type A, get the value of feature z of the feature structure of the type
>> B, and compare it to the string "z".
>>
>>
>> The short answer is that you can access the getter just with the name of
>> the feature.
>>
>>
>> If this simple example does not work, then the reason is probably a
>> simple instanceof comparing the feature structure to AnnotationFS.
>> Allowing feature structures in feature expression only should not be
>> much work.
>>
>>
>> Do you want me to add this support in Ruta? However, I cannot promise
>> that the changes will be part of the upcoming release.
>>
>>
>> Best,
>>
>>
>> Peter
>>
>>
>> Am 12.09.2016 um 09:42 schrieb Sebastian Schaaf:
>>> Dear all,
>>>
>>> As we needed to integrate a rule-based analysis engine into our UIMA 
>>> framework, we ended up using RUTA. The package was encouraging, we 
>>> proceeded well with projecting our ideas into RUTA (thanks to the 
>>> comprehensive documentation).
>>>
>>> We also saw that there are efforts to offer RUTA in plain Java code 
>>> for developers, ignoring the delivered workbench. We could integrate 
>>> it well with our modified type system, it is finally running. But, 
>>> and that's the reason for this email, currently we are stuck with 
>>> extracting some information from our objects, which is not 
>>> represented as simple feature. Leaving out the option to introduce 
>>> major changes to our codes and not liking the idea of permanent 
>>> workarounds, we were wondering if (and if not maybe when) there is 
>>> the possibility to generically call methods on given Java objects.
>>> Precisely, we have objects with attributes being (linked from other) 
>>> objects, plus respective getter methods. So, the information we need 
>>> from our objects is retrievable by calling a getter X.getA, resulting 
>>> in (background) object A which in turn knows a method .getB, 
>>> resulting in the desired B (or more precisely: its string Z):
>>>
>>> ### Example ###
>>> Type X (extends Annotation, has offsets)
>>> Type A (extends TOP, has no offsets)
>>> Type B (extends TOP, has no offsets)
>>> String Z
>>>
>>> How to call "X.getA().getB().getZ()"?
>>> ##############
>>>
>>> It appeared that RUTA is capable by some whatever (UIMA-?)magic to 
>>> get e.g. the covered text of a text annotation by "X.coveredText", 
>>> although the object only knows a "getCoveredText" method. Let's call 
>>> it a 'pseudo-feature'. No idea how generic this is, but: if just 
>>> querying "X.A" RUTA seems to do well, ultimately receiving A. While A 
>>> is an object (simple data type expected, like integer and string?) 
>>> everything stops. So no obvious chance to receive our B.
>>>
>>> Is there an easy, somewhat 'native' way to deal with object-derived 
>>> data like in the case described above?
>>>
>>> Thanks in advance!
>>>
>>> Sebastian
>>>
>>>
>>> ---
>>> Sebastian Schaaf, M.Sc. Bioinformatics
>>>
>>> Fraunhofer-Institute for Algorithms and Scientific Computing (SCAI)
>>> Department of Bioinformatics
>>> Schloss Birlinghoven
>>> D-53754 Sankt Augustin
>>>
>>> Room: C3-233
>>> Tel.: +49 2241 14 2280
>>> Email: sebastian.sch...@scai.fraunhofer.de
>>> Internet: http://www.scai.fraunhofer.de/
>>>

Reply via email to