Hi,

I have made a PR after squashing the commits[1]

[1] https://github.com/apache/vxquery/pull/84

Thank you.

Yours sincerely,
Riyafa

On 5 July 2016 at 14:34, Riyafa Abdul Hameed <[email protected]>
wrote:

> Hi,
>
> If I use jn:keys for object navigation instead of jdm:keys in [1], the
> following would be correct:
>
>
> *let $seq := ("foo", [ 1, 2, 3 ], { "a" : 1, "b" : 2 }, { "a" : 3, "c" : 4
> })return $seq() *
>
> and would return: *("a", "b", "c")*
>
> But the jdm:keys only works for objects, hence only the following should
> be correct:
>
>
>
> *let $map := { "eyes" : "blue", "hair" : "fuchsia" }return $map()*
> which should return: *("eyes", "hair")*
>
> [1]
> https://github.com/apache/vxquery/blob/master/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java#L1560
>
> Thank you.
>
> Yours sincerely,
> Riyafa
>
> On 4 July 2016 at 11:31, Till Westmann <[email protected]> wrote:
>
>> Hi Riyafa,
>>
>> responses are inline.
>> Hope this helps.
>>
>> Cheers,
>> Till
>>
>> On 3 Jul 2016, at 5:02, Riyafa Abdul Hameed wrote:
>>
>> I am not sure I am very clear about the suggestions:
>>>
>>> 1) How to implement jn:keys by using jdm:keys?
>>>
>>
>> One way to implement jn:keys($seq) would be to translate it to the JSONiq
>> expression:
>>
>> distinct-values(
>>   for $item in $seq
>>   return
>>     typeswitch ($item)
>>       case $o as object() return jdm:keys($o)
>>       default return ()
>> )
>>
>> This way we would only need a runtime for jdm:keys and could re-use
>> existing functionality for everything else. However, since we are not very
>> good at "optimizing away" all these intermediate expressions, there
>> probably
>> is some value in "natively" implementing the jn:keys function.
>>
>> 2) I am not sure if it's possible to implement everything inside jn:keys
>>> because it "returns all keys of all objects in the supplied sequence"
>>> while
>>> jdm:keys returns all keys only in a single object.
>>>
>>
>> It seems that your current implementation of jn:keys already does
>> everything
>> that is needed. The case where the input is a single object does exactly
>> what
>> the implementation of jdm:keys does. If the input is a sequence, then the
>> keys
>> are extracted from each object, duplicates are eliminated and the keys are
>> returned.
>>
>> So I think that we would be ok, if we just removed jdm:keys from the code.
>>
>>
>> On 3 July 2016 at 03:02, Till Westmann <[email protected]> wrote:
>>>
>>> Hi Riyafa,
>>>>
>>>> the change looks good, I've added just one comment.
>>>>
>>>> On the question of jdm:keys vs. js:keys the specification says in [4]:
>>>>
>>>> The XQuery data model uses accessors to explain the data model.
>>>> Accessors
>>>> are
>>>> not exposed to the user and are only used for convenience in this
>>>> specification. Objects have the following accessors: jdm:keys [...]
>>>>
>>>> So jdm:keys is not supposed to be accessible to the user. Now I think
>>>> there
>>>> are 2 things that we could do:
>>>> 1) have both the jdm:keys accessor and the jn:keys function and
>>>> implement
>>>>    jn:keys by using jdm:keys or
>>>> 2) just implement everything inside of the jn:keys evaluator.
>>>>
>>>> Does this make sense?
>>>>
>>>> Cheers,
>>>> Till
>>>>
>>>> [4]
>>>>
>>>> http://jsoniq.org/docs/JSONiqExtensionToXQuery/html-single/index.html#idm139680641300880
>>>>
>>>>
>>>> On 2 Jul 2016, at 1:24, Riyafa Abdul Hameed wrote:
>>>>
>>>> Hi,
>>>>
>>>>>
>>>>> I have created a PR with the suggested changes[1] except for the 3rd
>>>>> suggestions. The implementation of jdm:keys is based on [2] and
>>>>> jn:keys is
>>>>> based on [3].
>>>>>
>>>>> [1] https://github.com/apache/vxquery/pull/80
>>>>> [2]
>>>>>
>>>>>
>>>>> http://jsoniq.org/docs/JSONiqExtensionToXQuery/html-single/index.html#idm139680641300880
>>>>> [3]
>>>>>
>>>>>
>>>>> http://jsoniq.org/docs/JSONiqExtensionToXQuery/html-single/index.html#idm139680622840960
>>>>>
>>>>> Thank you.
>>>>>
>>>>> Yours sincerely,
>>>>> Riyafa
>>>>>
>>>>> On 2 July 2016 at 00:33, Till Westmann <[email protected]> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>>>
>>>>>> it’s really great to see the object navigation. This is really nice
>>>>>> progress!
>>>>>>
>>>>>> Looking at the commits I saw a few things that don’t seem to be quite
>>>>>> right.
>>>>>> Could you take a look if those can be fixed?
>>>>>>
>>>>>> 1) The return type for jn:null is specified to be xs:string*, that
>>>>>> seems
>>>>>> wrong.
>>>>>> 2) The return type jdm:keys is specified to be item(), that seems
>>>>>> wrong
>>>>>> as
>>>>>> well.
>>>>>> 3) There’s a lot of overlap between jdm:keys and jn:keys. Do we
>>>>>> actually
>>>>>> need jdm:keys?
>>>>>> 4) A number of the new tests don’t have a new-line at the end of the
>>>>>> file.
>>>>>> Could we add those?
>>>>>>
>>>>>> Cheers,
>>>>>> Till
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Riyafa Abdul Hameed
>>>>> Undergraduate, University of Moratuwa
>>>>>
>>>>> Email: [email protected]
>>>>> Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/>
>>>>> <http://facebook.com/riyafa.ahf>  <http://lk.linkedin.com/in/riyafa>
>>>>> <http://twitter.com/Riyafa1>
>>>>>
>>>>>
>>>>
>>>
>>> --
>>> Riyafa Abdul Hameed
>>> Undergraduate, University of Moratuwa
>>>
>>> Email: [email protected]
>>> Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/>
>>> <http://facebook.com/riyafa.ahf>  <http://lk.linkedin.com/in/riyafa>
>>> <http://twitter.com/Riyafa1>
>>>
>>
>
>
> --
> Riyafa Abdul Hameed
> Undergraduate, University of Moratuwa
>
> Email: [email protected]
> Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/>
> <http://facebook.com/riyafa.ahf>  <http://lk.linkedin.com/in/riyafa>
> <http://twitter.com/Riyafa1>
>



-- 
Riyafa Abdul Hameed
Undergraduate, University of Moratuwa

Email: [email protected]
Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/>
<http://facebook.com/riyafa.ahf>  <http://lk.linkedin.com/in/riyafa>
<http://twitter.com/Riyafa1>

Reply via email to