Hi,
I think this is the same problem. The CREATE action just searches in its
match context. I will answer the context question is the other mail.
Best,
Peter
Am 11.10.2015 um 16:21 schrieb Mario Juric:
> I am still struggling with the use of variables in some CREATE statements.
> The features do not always have the expected values after CREATE. Let me give
> another more concrete example:
>
> TYPE pmcIdentifier;
> BLOCK(ForEach) IdentifierAnnotation.propertyName=="PMC"{} { // Just capturing
> scope
> IdentifierAnnotation.propertyName=="PMC" { -> ASSIGN(pmcIdentifier,
> IdentifierAnnotation), LOG(pmcIdentifier.ct)};
> }
>
> TYPE doiIdentifier;
> BLOCK(ForEach) IdentifierAnnotation.propertyName=="DOI"{} { // Just capturing
> scope
> IdentifierAnnotation.propertyName=="DOI" { -> ASSIGN(doiIdentifier,
> IdentifierAnnotation), LOG(doiIdentifier.ct)};
> }
>
> BLOCK(ForEach) XMLTagAnnotation.path=="article/front/article-meta"{} {
> XMLTagAnnotation.name=="article-meta" {
> -> CREATE(
> DocumentInfoAnnotation,
> “id" = pmcIdentifier,
> "doi" = doiIdentifier
> )
> };
> }
>
> The IdentifierAnnotation annotations have successfully been created in
> statements not shown here, which is also evident from a CAS inspection, and
> the LOG actions output the expected strings, but when I reference the
> variables in the CREATE action then the id and doi features of the
> DocumentInfoAnnotation end up pointing to the same identifier (pmc in the
> above example). Its puzzling me how this can happen.
>
>> On 09 Oct 2015, at 15:41 , Mario Juric <[email protected]> wrote:
>>
>> Hi,
>>
>> I have a annotation type variable that I am assigning a value in a statement
>> block and then use that value in match rule to set the attribute in a new
>> annotation like this:
>>
>> Type myvar;
>>
>> BLOCK(ForEach) UniqueMatch{} { // Capturing unique scope with this
>> “Some (\\w+) Regex" -> 1 = MatchedRegexAnnotation;
>> MatchedRegexAnnotation { -> ASSIGN(myvar, MatchedRegexAnnotation)};
>> }
>>
>> SomeOtherMatch{} {
>> -> CREATE(Markup, “myprop” = myvar)
>> };
>>
>> The “myprop” attribute never gets a value even though the
>> MatchedRegexAnnotation is created. A completely analog implementation
>> appears to work flawlessly in another context but not in the current.
>>
>> I am in the dark about this and my Ruta skills are sill infant so any idea
>> to what could be the problem is much appreciated.
>>
>> Cheers
>> Mario