Re: [basex-talk] Lookups and arrows
Thanks very much for this info, Christian! I'll pass your observations on to the eXist team. Joe On Sun, Jan 10, 2016 at 3:50 AM, Christian Grün <christian.gr...@gmail.com> wrote: > Hi Tim, hi Joe, > > The query works if you use parentheses around the arrow operands: > > (json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") > => json-doc())("@context") > > This is in compliance with the XQuery 3.1 spec [1]. > > Out of interest, I spent some time and looked up the W3 bug tracker > history, and I spotted a change in the precedence of the arrow > operator [2]. Maybe this change is not reflected in eXist? > > Hope this helps, > Christian > > [1] http://www.w3.org/TR/xquery-31/#doc-xquery31-ArrowExpr > [2] https://www.w3.org/Bugs/Public/show_bug.cgi?id=27537 > > > > >> I tested your code with the closest thing at hand - a local build of >> branch of Wolfgang Meier's eXist repo with support for the arrow >> operator (https://github.com/wolfgangmm/exist/tree/feature/arrowop) - >> and your code worked fine there. So my hunch is that there's a bug in >> BaseX or some syntax error I'm not seeing in your code. For the >> record, here's the code I'm running: >> >> -- >> xquery version "3.1"; >> >> json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") >> => json-doc()("@context") >> -- >> >> To check the results I actually use `=> >> serialize(> xmlns="http://www.w3.org/2010/xslt-xquery-serialization;>jsonyes)` >> on the results since eXist doesn't support adaptive serialization. >> >> I hope this is helpful. >> >> Joe >> >> On Sat, Jan 9, 2016 at 6:20 PM, Tim Thompson <timat...@gmail.com> wrote: >>> Thanks, Joe! I guess I'd glossed over the "funky" example ;-) Regarding the >>> arrow operator, I was wondering whether something like this was possible: >>> >>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => >>> json-doc()("@context") >>> >>> which throws an error: [XPST0003] Unexpected end of query: '("@context")'. >>> >>> Tim >>> >>> On Sat, Jan 9, 2016 at 3:53 PM, Joe Wicentowski <joe...@gmail.com> wrote: >>>> >>>> Hi Tim, >>>> >>>> For your first question, I think your example falls into what the spec >>>> calls "funky looking" keys. See the 3rd bullet point example under >>>> http://www.w3.org/TR/xquery-31/#id-lookup: >>>> >>>> > funky / >>> > @string"), an appropriate lookup for a map with rather odd conventions >>>> > for >>>> > keys. >>>> >>>> In other words, I think you're stuck with the ("@context") approach. >>>> >>>> As to your second question, it looks like what you're proposing should >>>> work - but am I reading you as saying you get an error with your proposed >>>> approach? If so, what's the error? >>>> >>>> Joe >>>> >>>> Sent from my iPad >>>> >>>> _ >>>> From: Tim Thompson <timat...@gmail.com> >>>> Sent: Saturday, January 9, 2016 3:11 PM >>>> Subject: [basex-talk] Lookups and arrows >>>> To: BaseX <basex-talk@mailman.uni-konstanz.de> >>>> >>>> >>>> >>>> Hello, >>>> >>>> I'm testing some XQuery 3.1 features against a JSON-LD[1] document and had >>>> a few questions. In the JSON-LD format, the "@" symbol has special >>>> semantics >>>> in key names, but seems to cause problems with the 3.1 lookup operator. >>>> >>>> For example: >>>> >>>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") >>>> >>>> works as expected, but >>>> >>>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)?@context >>>> >>>> throws an error: [XPST0003] No specifier after lookup operator: '@'. >>>> >>>> Also, when using the "=>" operator, should it be possible to perform a >>>> lookup on the last expression in a chain, if that expression returns a map? >>>> >>>> For example: >>>> >>>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") >>>> evaluates to " http://iiif.io/api/presentation/2/context.json; >>>> >>>> and >>>> >>>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => >>>> json-doc() >>>> >>>> returns another map object. So, how would one achieve this: >>>> >>>> json-doc(json-doc(" >>>> http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context"))("@context") >>>> >>>> using the arrow operator? >>>> >>>> Thanks, >>>> Tim >>>> >>>> >>>> [1] http://www.w3.org/TR/json-ld/ >>>> >>>> >>>> -- >>>> Tim A. Thompson >>>> Metadata Librarian (Spanish/Portuguese Specialty) >>>> Princeton University Library >>>> >>>> >>>> >>>
Re: [basex-talk] Lookups and arrows
Hi Tim, hi Joe, The query works if you use parentheses around the arrow operands: (json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => json-doc())("@context") This is in compliance with the XQuery 3.1 spec [1]. Out of interest, I spent some time and looked up the W3 bug tracker history, and I spotted a change in the precedence of the arrow operator [2]. Maybe this change is not reflected in eXist? Hope this helps, Christian [1] http://www.w3.org/TR/xquery-31/#doc-xquery31-ArrowExpr [2] https://www.w3.org/Bugs/Public/show_bug.cgi?id=27537 > I tested your code with the closest thing at hand - a local build of > branch of Wolfgang Meier's eXist repo with support for the arrow > operator (https://github.com/wolfgangmm/exist/tree/feature/arrowop) - > and your code worked fine there. So my hunch is that there's a bug in > BaseX or some syntax error I'm not seeing in your code. For the > record, here's the code I'm running: > > -- > xquery version "3.1"; > > json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") > => json-doc()("@context") > -- > > To check the results I actually use `=> > serialize( xmlns="http://www.w3.org/2010/xslt-xquery-serialization;>jsonyes)` > on the results since eXist doesn't support adaptive serialization. > > I hope this is helpful. > > Joe > > On Sat, Jan 9, 2016 at 6:20 PM, Tim Thompson <timat...@gmail.com> wrote: >> Thanks, Joe! I guess I'd glossed over the "funky" example ;-) Regarding the >> arrow operator, I was wondering whether something like this was possible: >> >> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => >> json-doc()("@context") >> >> which throws an error: [XPST0003] Unexpected end of query: '("@context")'. >> >> Tim >> >> On Sat, Jan 9, 2016 at 3:53 PM, Joe Wicentowski <joe...@gmail.com> wrote: >>> >>> Hi Tim, >>> >>> For your first question, I think your example falls into what the spec >>> calls "funky looking" keys. See the 3rd bullet point example under >>> http://www.w3.org/TR/xquery-31/#id-lookup: >>> >>> > funky / >> > @string"), an appropriate lookup for a map with rather odd conventions for >>> > keys. >>> >>> In other words, I think you're stuck with the ("@context") approach. >>> >>> As to your second question, it looks like what you're proposing should >>> work - but am I reading you as saying you get an error with your proposed >>> approach? If so, what's the error? >>> >>> Joe >>> >>> Sent from my iPad >>> >>> _ >>> From: Tim Thompson <timat...@gmail.com> >>> Sent: Saturday, January 9, 2016 3:11 PM >>> Subject: [basex-talk] Lookups and arrows >>> To: BaseX <basex-talk@mailman.uni-konstanz.de> >>> >>> >>> >>> Hello, >>> >>> I'm testing some XQuery 3.1 features against a JSON-LD[1] document and had >>> a few questions. In the JSON-LD format, the "@" symbol has special semantics >>> in key names, but seems to cause problems with the 3.1 lookup operator. >>> >>> For example: >>> >>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") >>> >>> works as expected, but >>> >>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)?@context >>> >>> throws an error: [XPST0003] No specifier after lookup operator: '@'. >>> >>> Also, when using the "=>" operator, should it be possible to perform a >>> lookup on the last expression in a chain, if that expression returns a map? >>> >>> For example: >>> >>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") >>> evaluates to " http://iiif.io/api/presentation/2/context.json; >>> >>> and >>> >>> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => >>> json-doc() >>> >>> returns another map object. So, how would one achieve this: >>> >>> json-doc(json-doc(" >>> http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context"))("@context") >>> >>> using the arrow operator? >>> >>> Thanks, >>> Tim >>> >>> >>> [1] http://www.w3.org/TR/json-ld/ >>> >>> >>> -- >>> Tim A. Thompson >>> Metadata Librarian (Spanish/Portuguese Specialty) >>> Princeton University Library >>> >>> >>> >>
Re: [basex-talk] Lookups and arrows
Hi Tim, For your first question, I think your example falls into what the spec calls "funky looking" keys. See the 3rd bullet point example under http://www.w3.org/TR/xquery-31/#id-lookup: > funky / an appropriate lookup for a map with rather odd conventions for keys. In other words, I think you're stuck with the ("@context") approach. As to your second question, it looks like what you're proposing should work - but am I reading you as saying you get an error with your proposed approach? If so, what's the error? Joe Sent from my iPad _ From: Tim Thompson <timat...@gmail.com> Sent: Saturday, January 9, 2016 3:11 PM Subject: [basex-talk] Lookups and arrows To: BaseX <basex-talk@mailman.uni-konstanz.de> Hello, I'm testing some XQuery 3.1 features against a JSON-LD[1] document and had a few questions. In the JSON-LD format, the "@" symbol has special semantics in key names, but seems to cause problems with the 3.1 lookup operator. For example: json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") works as expected, but json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)?@context throws an error: [XPST0003] No specifier after lookup operator: '@'. Also, when using the "=>" operator, should it be possible to perform a lookup on the last expression in a chain, if that expression returns a map? For example: json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") evaluates to " http://iiif.io/api/presentation/2/context.json; and json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => json-doc() returns another map object. So, how would one achieve this: json-doc(json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context"))("@context") using the arrow operator? Thanks, Tim [1]http://www.w3.org/TR/json-ld/ -- Tim A. Thompson Metadata Librarian (Spanish/Portuguese Specialty) Princeton University Library
[basex-talk] Lookups and arrows
Hello, I'm testing some XQuery 3.1 features against a JSON-LD[1] document and had a few questions. In the JSON-LD format, the "@" symbol has special semantics in key names, but seems to cause problems with the 3.1 lookup operator. For example: json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") works as expected, but json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)?@context throws an error: [XPST0003] No specifier after lookup operator: '@'. Also, when using the "=>" operator, should it be possible to perform a lookup on the last expression in a chain, if that expression returns a map? For example: json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") evaluates to "http://iiif.io/api/presentation/2/context.json; and json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => json-doc() returns another map object. So, how would one achieve this: json-doc(json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld ")("@context"))("@context") using the arrow operator? Thanks, Tim [1] http://www.w3.org/TR/json-ld/ -- Tim A. Thompson Metadata Librarian (Spanish/Portuguese Specialty) Princeton University Library
Re: [basex-talk] Lookups and arrows
Thanks, Joe! I guess I'd glossed over the "funky" example ;-) Regarding the arrow operator, I was wondering whether something like this was possible: json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => json-doc()("@context") which throws an error: [XPST0003] Unexpected end of query: '("@context")'. Tim On Sat, Jan 9, 2016 at 3:53 PM, Joe Wicentowski <joe...@gmail.com> wrote: > Hi Tim, > > For your first question, I think your example falls into what the spec > calls "funky looking" keys. See the 3rd bullet point example under > http://www.w3.org/TR/xquery-31/#id-lookup: > > > funky / @string"), an appropriate lookup for a map with rather odd conventions for > keys. > > In other words, I think you're stuck with the ("@context") approach. > > As to your second question, it looks like what you're proposing should > work - but am I reading you as saying you get an error with your proposed > approach? If so, what's the error? > > Joe > > Sent from my iPad > > _____________ > From: Tim Thompson <timat...@gmail.com> > Sent: Saturday, January 9, 2016 3:11 PM > Subject: [basex-talk] Lookups and arrows > To: BaseX <basex-talk@mailman.uni-konstanz.de> > > > > Hello, > > I'm testing some XQuery 3.1 features against a JSON-LD[1] document and had > a few questions. In the JSON-LD format, the "@" symbol has special > semantics in key names, but seems to cause problems with the 3.1 lookup > operator. > > For example: > > json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") > > works as expected, but > > json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)?@context > > throws an error: [XPST0003] No specifier after lookup operator: '@'. > > Also, when using the "=>" operator, should it be possible to perform a > lookup on the last expression in a chain, if that expression returns a map? > > For example: > > json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") > evaluates to " http://iiif.io/api/presentation/2/context.json; > > and > > json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => > json-doc() > > returns another map object. So, how would one achieve this: > > json-doc(json-doc(" > http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context"))("@context") > > > using the arrow operator? > > Thanks, > Tim > > > [1] http://www.w3.org/TR/json-ld/ > > > -- > Tim A. Thompson > Metadata Librarian (Spanish/Portuguese Specialty) > Princeton University Library > > > >
Re: [basex-talk] Lookups and arrows
Hi Tim, "Funky" made me chuckle too! I tested your code with the closest thing at hand - a local build of branch of Wolfgang Meier's eXist repo with support for the arrow operator (https://github.com/wolfgangmm/exist/tree/feature/arrowop) - and your code worked fine there. So my hunch is that there's a bug in BaseX or some syntax error I'm not seeing in your code. For the record, here's the code I'm running: -- xquery version "3.1"; json-doc("http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => json-doc()("@context") -- To check the results I actually use `=> serialize(http://www.w3.org/2010/xslt-xquery-serialization;>jsonyes)` on the results since eXist doesn't support adaptive serialization. I hope this is helpful. Joe On Sat, Jan 9, 2016 at 6:20 PM, Tim Thompson <timat...@gmail.com> wrote: > Thanks, Joe! I guess I'd glossed over the "funky" example ;-) Regarding the > arrow operator, I was wondering whether something like this was possible: > > json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => > json-doc()("@context") > > which throws an error: [XPST0003] Unexpected end of query: '("@context")'. > > Tim > > On Sat, Jan 9, 2016 at 3:53 PM, Joe Wicentowski <joe...@gmail.com> wrote: >> >> Hi Tim, >> >> For your first question, I think your example falls into what the spec >> calls "funky looking" keys. See the 3rd bullet point example under >> http://www.w3.org/TR/xquery-31/#id-lookup: >> >> > funky / > > @string"), an appropriate lookup for a map with rather odd conventions for >> > keys. >> >> In other words, I think you're stuck with the ("@context") approach. >> >> As to your second question, it looks like what you're proposing should >> work - but am I reading you as saying you get an error with your proposed >> approach? If so, what's the error? >> >> Joe >> >> Sent from my iPad >> >> _ >> From: Tim Thompson <timat...@gmail.com> >> Sent: Saturday, January 9, 2016 3:11 PM >> Subject: [basex-talk] Lookups and arrows >> To: BaseX <basex-talk@mailman.uni-konstanz.de> >> >> >> >> Hello, >> >> I'm testing some XQuery 3.1 features against a JSON-LD[1] document and had >> a few questions. In the JSON-LD format, the "@" symbol has special semantics >> in key names, but seems to cause problems with the 3.1 lookup operator. >> >> For example: >> >> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") >> >> works as expected, but >> >> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)?@context >> >> throws an error: [XPST0003] No specifier after lookup operator: '@'. >> >> Also, when using the "=>" operator, should it be possible to perform a >> lookup on the last expression in a chain, if that expression returns a map? >> >> For example: >> >> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") >> evaluates to " http://iiif.io/api/presentation/2/context.json; >> >> and >> >> json-doc(" http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context") => >> json-doc() >> >> returns another map object. So, how would one achieve this: >> >> json-doc(json-doc(" >> http://lae.princeton.edu/catalog/0bp35.jsonld;)("@context"))("@context") >> >> using the arrow operator? >> >> Thanks, >> Tim >> >> >> [1] http://www.w3.org/TR/json-ld/ >> >> >> -- >> Tim A. Thompson >> Metadata Librarian (Spanish/Portuguese Specialty) >> Princeton University Library >> >> >> >