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(<serialization-parameters xmlns="http://www.w3.org/2010/xslt-xquery-serialization"><method>json</method><indent>yes</indent></serialization-parameters>)` 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 / <looking @string") is equivalent to .("$funky / <looking >> > @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 >> >> >> >