Sorry to bother you again, but I think there is still something wrong with my code and I can't figure it out. This time I checked it consistently on BaseX 9.0.1 (Windows and Linux, console and web server), results are always the same:
xquery version "3.1"; declare namespace array = "http://www.w3.org/2005/xpath-functions/array"; let $array1 := [] let $array2 := array:for-each([], function($i) { lower-case($i) }) let $array3 := array:for-each([], function($i) { $i + 1 }) return ( empty($array1!?*), empty($array2!?*), empty($array3!?*), empty( for $i in 1 to array:size($array1) return $array1($i) ), empty( for $i in 1 to array:size($array2) return $array2($i) ), empty( for $i in 1 to array:size($array3) return $array3($i) ) )
The results I get are:
true
false
true
true
true
true
Why isn't the second result "true" too?
Best regards,
Sebastian
Hi again,
the problem is gone now after a reboot. It seems that the web server was running on another version while the console was running with 9.0.1
Sorry for the inconvenience.
Best,
SebastianAm 11.05.2018 um 11:04 schrieb Sebastian Zimmer:
Hi Giuseppe,
thanks for checking. I double-checked again. The problem is even weirder now:
When using the console, I too get 2x true:
$ ./bin/basex "./webapp/array_test.xql"
true
trueWhen using the web server, I still get this:
$ curl localhost:8994/rest?run=array_test.xql
false
true
At first I thought there was some cache at work, preventing the update, but it doesn't seem to be the case. I can edit the XQL und both outputs change accordingly, but the first boolean is still different.
Best regards,
Sebastian
Am 11.05.2018 um 08:28 schrieb Giuseppe Celano:
Hi Sebastian,
In my Basex 9.0.1 and 8.6.7 you get two "true".
Best,Giuseppe
Universität Leipzig
Institute of Computer Science, NLP
Augustusplatz 10
04109 Leipzig
Deutschland
E-mail: celano@informatik.uni-leipzig.de
E-mail: giuseppegacelano@gmail.com
Web site 1: http://www.dh.uni-leipzig.de/wo/team/
Web site 2: https://sites.google.com/site/giuseppegacelano/
On May 11, 2018, at 1:50 AM, Sebastian Zimmer <sebastian.zimmer@uni-koeln.de> wrote:
Hi,
I have this script where I use the lookup operator to perform a unary lookup:
xquery version "3.1"; declare namespace array = "http://www.w3.org/2005/xpath-functions/array"; let $array := [] return ( empty($array!?*), (: returns false :) empty( for $i in 1 to array:size($array) return $array($i) ) (: returns true :) )I'm curious that the first expression returns false even though it should be equivalent to the second expression, if I read the XQuery spec [1] right:
If the context item is an array:If the KeySpecifier is a wildcard ("*
"), the UnaryLookup operator is equivalent to the following expression:for $k in 1 to array:size(.) return .($k)But maybe I'm missing something. I'd be glad if you could help.
Best regards,
Sebastian Zimmer
[1] https://www.w3.org/TR/2017/REC-xquery-31-20170321/#id-unary-lookup
--
Sebastian Zimmer
sebastian.zimmer@uni-koeln.de
Cologne Center for eHumanities
DH Center at the University of Cologne
<twitter_logo.png>@CCeHum
--
Sebastian Zimmer
sebastian.zimmer@uni-koeln.de
Cologne Center for eHumanities
DH Center at the University of Cologne
@CCeHum
--
Sebastian Zimmer
sebastian.zimmer@uni-koeln.de
Cologne Center for eHumanities
DH Center at the University of Cologne
@CCeHum
Cologne Center for
eHumanities
DH Center at the University of Cologne
@CCeHum