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ünwrote: > 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 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 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 Sent: Saturday, January 9, 2016 3:11 PM Subject: [basex-talk] Lookups and arrows To: BaseX 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 Thompsonwrote: >> 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 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 >>> Sent: Saturday, January 9, 2016 3:11 PM >>> Subject: [basex-talk] Lookups and arrows >>> To: BaseX >>> >>> >>> >>> 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] Fulltext Stemming
Hi all, with query options: contains text "grün" all using diacritics sensitive using stemming using language 'German' I'll get: "grüne", "grüner", "Grüns" etc. But I also get "Gruß", "Grüße", "grüßen" or something like "Gruner" (Eigenname) Does the stemming have problems with german umlaute and "ß"? with query options: contains text "grün" all using stemming using language 'German' same results, but less. Why is that? The indexes of the database are the following: Indexes Up-to-date: true TEXTINDEX: true ATTRINDEX: true FTINDEX: true TEXTINCLUDE: ATTRINCLUDE: FTINCLUDE: LANGUAGE: German STEMMING: true CASESENS: true DIACRITICS: true STOPWORDS: UPDINDEX: false AUTOOPTIMIZE: false MAXCATS: 100 MAXLEN: 96 INDEXSPLITSIZE: 0 FTINDEXSPLITSIZE: 0 Optimized Query is the following: Optimized Query: let $hits_137 := ft:mark((db:open-pre("kleist-searchindex",147544), ...)/(((descendant::tei:s union descendant::tei:l)))[descendant::text() contains text "grün" all using diacritics sensitive using stemming using language 'German']) return element div { (element p { ("grün") }, element p { (count($hits_137)) }, element ul { (for $hit_139 in $hits_137 return element li { ($hit_139/descendant-or-self::node()/ancestor::tei:TEI/descendant-or-self::node()/tei:classCode[position() = 1]/string(), $hit_139) }) }) } Best, Günter