Dear all,
It’s been around 15 years ago when the first Open-Source version of
BaseX was released. Thanks to the continuous support of all of you, we
are thrilled today to announce the first double-digit version of our
XML framework:
https://basex.org/
BaseX 10 assists you with your everyday da
Dear all,
We provide you with a new and fresh version of BaseX, our open source
XML framework, database system and XQuery 3.1 processor:
https://basex.org/
Apart from our main focus (query rewritings and optimizations), we
have added the following enhancements:
XQUERY: MODULES, FEATURES
- Arc
Dear all,
We are more than happy to provide you with a new and fresh version of
BaseX, our XML framework, database system and XQuery 3.1 processor:
https://basex.org/
BaseX is getting faster and faster! We have spent most of our time on
query rewritings and optimizations, which will speed up t
>
> Of course, in the end, I am going to take the one, which has the
> best performance. Do you expect it to be the `FLOWR` based or
> the `fold-left#3` based, you demonstrated in the follow-up?
>
Solutions with fold-left are usually the most efficient ones, but it also
depends on the XQuery proce
27;, (1 to 100) ! 1, 'x'))
On 8/1/20, Christian Grün wrote:
> Hi Andreas,
>
> Try this:
>
> declare function local:distinct-items($items as item()*) as item()* {
> let $h := head($items)
> where exists($h)
> let $t := tail($items)[not(deep-equal(., $
Hi Andreas,
Try this:
declare function local:distinct-items($items as item()*) as item()* {
let $h := head($items)
where exists($h)
let $t := tail($items)[not(deep-equal(., $h))]
return ($h, local:distinct-items($t))
};
If the FLWOR expression is avoided, it may increase the runtime:
de
Dear all,
We are glad to give you Version 9.4 of BaseX, our XML framework,
database system and XQuery 3.1 processor:
https://basex.org/
We have focused on rewriting and optimizing complex XQuery code and
speeding up your RESTXQ apps:
WEB APPLICATIONS
- DBA: support for millions of log entries
Dear all,
We are glad to announce version 9.3 of BaseX, our XML framework,
database system and XQuery 3.1 processor:
http://basex.org/
The focus has been put on in-depth optimizations of complex XQuery
code and faster processing of RESTXQ web applications:
RESTXQ
- seamless streaming of custo
Dear all,
We are more than pleased to announce version 9.2 of BaseX, our XML
framework, database system and XQuery 3.1 processor:
http://basex.org/
This time, we have put a special focus on performance improvements:
XQUERY PERFORMANCE
- comparisons will more often be rewritten to hash joins
-
Hi Adam,
> Am I right in thinking that Saxon evaluates this because it supports
> [Schema 1.1 Part 2], whereas eXist-db and BaseX do not?
This would be my guess, too.
> Also if anyone has any bright ideas, about a type that I could
> explicitly declare for a function argument, but that CANNOT be
Dear XQuery aficionados,
It’s been exactly 5 months ago when BaseX 9 was released, and we are
happy to announce version 9.1 of our XML framework, database system
and XQuery 3.1 processor! Find it here: http://basex.org
The most exciting addition is support for WebSockets, which enable you
to do b
Dear BaseX aficionados,
We are very happy to announce the release of BaseX 9.0!
The new version of our XML database system and XQuery 3.1 processor
includes some great new features and a vast number of minor
improvements and optimizations. It’s both the usage of BaseX in
productive environments a
Hi Michael,
As far as I know, most XQuery processors (such as ours) currently rely on
Charles Foster’s XQJ implementation.
In the past, we had our own implementations, but we stopped maintaining it
some years ago. Users keep asking us why they cannot use XQuery 3.1 with
XQJ; due to the unfortunat
Hi Benito, hi all,
W. S. Hager just indicated that some answers landed in spam. As his
reply also landed in my spam folder, I’ll quote the interesting
references again (and I hope that my e-mail will make it to everyone’s
inbox):
This was Joe Wicentowski’s link to his comprehensive »Learn XQuery«
Hi Michael (Sahm),
maybe you’ll need to additionally give us more information on your requirements:
> I want to transform a very simple SQL Create Table statement into XML.
Would you like to parse your SQL (or just DDL) expressions in XQuery
and execute them in a second step? Do you want to stor
> Why can't the context contain a sequence?
Please have a look at the specification for more information on the
context item:
https://www.w3.org/TR/xquery-31/#dt-context-item
> 2017-08-02 16:31 GMT+02:00 Ghislain Fourny :
>>
>> Dear Wouter,
>>
>> I see your point and it makes sense. The tri
> This I understand, but the only thing that bothers me is that the implicit
> binding of the first argument prevents the use of other arguments, whereas
> an explicit context would've allowed for the more flexible option of
> designating the argument yourself, while the arity would read more clear
Hi Wouter,
> That's why, for cases where it's possible, I preferred to write the simple
> mapping operator, as it's easier to read IMO.
In practice, in our trainings and courses, we usually present the
arrow operator as alternative for nested functions. It turned out that
most people seem to love
Hi Wouter,
The arrow operator takes all items of the left side as first argument,
whereas the simple map operator processes all items one by one:
(1,2,3) => count() → 3
(1,2,3) ! count(.) → 1 1 1
Cheers,
Christian
On Tue, Aug 1, 2017 at 2:27 PM, W.S. Hager wrote:
> Hi,
>
> Is there an
Hi Wouter,
> What I meant is that the cost of immutability can be avoided in some cases.
> That's primarily a matter of low level short-circuiting, not so much of
> writing something new. I don't know if this can be done in Java, I know the
> Clojure compiler does this, and I'm not aware of XQ eng
Hi Ghislain,
I completely agree with your assessment. I would expect the two writings…
$map?*
map:for-each($map, function($key, $value) { $value })
…to be faster than…
$key ! map:get($map, $key)
$key ! $map($key)
…because the latter ones require one additional lookup per key.
However,
Hi Wouter,
In my experience, XQuery maps can be surprisingly efficient, even if
millions of items need to be processed. Obviously, no programming
language solves all problems best, though (even today, an assembler
language can a better choice than C).
Did you come across particular use cases in w
Hi Joe, hi Emmanuel,
Here is yet another alternative that can be efficient (but it’s not
the most compact one):
let $map := map { "a": 1, "b": 2, "c": 3 }
return (
array { map:keys($map) },
array { map:for-each($map, function($key, $value) { $value }) }
)
Last but not least, map:ge
Dear all,
BaseX 8.6 is out! The new version of our XML database system and
XQuery 3.1 processor includes countless improvements and
optimizations. Many of them have been triggered by your valuable
feedback, many others are the result of BaseX used in productive and
commercial environments.
The mo
Dear all,
A new Summer Edition of BaseX is available! Our XML database system
and XQuery 3.1 processor provides the following new stunning features:
DATABASE JOBS
- all registered database jobs are now centrally administered
- jobs can be scheduled (periodical execution, start/end time)
- job
eq $max) then $color else ()
})
The more cryptical (and not that efficient) one:
let $m := map:merge(
for $v in distinct-values(//color)
return map { $v: count(//color[. eq $v]) }
)
return map:keys($m)[$m(.) = max($m?*)]
On Tue, Apr 26, 2016 at 12:17 PM, Christian Grün
wrote
Hi Leo,
here’s one more solution. It is not much shorter than yours, but may
be a bit more readable:
let $cols :=
for $colors in //color
group by $value := $colors/data()
return
let $max := max($cols/@count)
return $cols[@count = $max]/@value/data()
I think that in every case
Dear all,
Aligned with the XML Prague 2016 Conference, we are more than happy to
provide you with a great new version of BaseX, your XML database
system and XQuery processor! These are the new features:
GUI
- Project View: all modules of the project are now parsed in the background
- Create Da
> Well, so, to continue, let's assume that there are no user-defined
> functions, and in fact the only thing we want to proof is select+filter,
> where a filter is limited to the default operators. From that is it follows
> that
>
> -path1:
> select-child-nodes-by-name(select-child-nodes-by-name($c
wants to prove later on.
>>> On 27 Jan 2016, at 09:51, Pavel Velikhov wrote:
>>>
>>>
>>>> On 27 Jan 2016, at 12:37, Christian Grün wrote:
>>>>
>>>>> Its a common practice for everybody, who needs to come up with formal
> Its a common practice for everybody, who needs to come up with formal proofs.
> You start with the most simplified definitions possible, that capture the
> essence of the problem.
> Then you get the skeleton of the proof that is hopefully very simple. Then
> you can add details back, hoping th
Hi Bridger,
I know too little about the API you are working, and your query
processor (parts of the semantics of fn:doc are
implementation-defined), but I noticed that the URL construction might
need to be revised:
OLD:
local:getPID(doc("$in" || "&sessionToken=" || "$rQ"))
NEW:
local:getPID(
Rob, Michael,
Thanks for your enlightening answers. The hint to fn:reverse was
helpful – I completely missed it – and I was not aware of the
punched-card technique (I overlooked that sort is stable).
One more use I case had in mind were top-k queries:
fn:sort(...)[position() = 1 to 5]
From th
Hi everyone,
As you may know, XQuery 3.1 introduces an interesting new fn:sort
function, which can be used as alternative for the order by clause in
FLWOR expressions [1]. It can e.g. be used to sort numbers in a
descending order:
sort(
1 to 10,
function($k) { -$k }
)
I would be inte
er that as the current job and return the job
>> that has blank as the output.
>
>
> Thank you for your response.
>
>
> From: Christian Grün
> To: sudheshna iyer
> Cc: "talk@x-query.com"
> Sent: Sunday, November 15, 2015 4:3
in doc('x.xml')//job
> order by
> xs:date(replace($job/StartDate,
> "(\d{2})-(\d{2})-(\d{4})", "$3-$1-$2")
>) descending
> return $job
> return $seq[1]
>
&g
If your XQuery processor supports XQuery Update, this would be one solution:
copy $xml := doc('x.xml')
modify (
delete node subsequence(
for $job in $xml//job
order by xs:date(replace($job/StartDate,
"(\d{2})-(\d{2})-(\d{4})", "$3-$1-$2")
) descending
return
Dear all,
Summer is over, and a new version of BaseX is here! We are more than
happy to present Version 8.3 of our XML database and XQuery 3.1
processor. This is what you get:
SELECTIVE INDEXING
- restrict value indexing to given elements and attributes
- support extended to updatable and main
Hi Dana,
Indeed we thought about implementing the XQSE and JSONiq. The main
reason why we eventually focused on other things was that we are a
small team, and we thought it would take us too much time to implement
the features. Back then, together with Matthias Brantner, we designed
some XQuery Mo
That's great news! Thanks for the update.
Christian
On Fri, Jul 31, 2015 at 4:16 PM, Federico Cavalieri
wrote:
> Dear Zorba users,
>
> We are proud to announce the release of Zorba 3.1, codename Leto.
>
> This release introduces a new query profiler for performance analysis and a
> revamped funct
Hi Eliot,
> In terms of processing optimization, is there any reason to prefer one
> formulation over the other (meaning, is it possible to predict how XPath
> processors will be able to optimize this type of expression)?
I like Ken's solution, but mostly because it's more concise. You will
never
points remain in array support/semantics. I thought it
>> best to let it rest for a while and see if the workarounds proof to be
>> feasible. I think I was too eager to address this in the first place.
>>
>> Regards,
>> Wouter
>>
>> 2015-06-28 0:07 GM
> Personally I would also like to see a ternary operator, but I haven't
> mentioned it until now ;-)
+1 ;) But if I remember right, it has already been motivated and
discussed in the group before.
Talking about conditions: An if expression without 'else' branch would
often be nice as well (if not
> On the whole I agree, and I respect the current status quo of the
> specification. However, I expect more changes will follow from actually
> working with it. IMHO the current distinction between sequences and arrays
> could eventually be abolished.
While I haven't actively participated in th
Hi William,
the Github integration is pretty cool! Thanks for updating everyone.
All the best,
Christian
On Mon, Jun 15, 2015 at 11:53 PM, William Candillon
wrote:
> Dear gang,
>
> Development tools like Github and CircleCI have completely transformed
> our software engineering day to day task
Dear all,
We invite you to check out Version 8.2, the Summer Edition, of BaseX,
our XML database system and XQuery 3.1 processor! You can expect the
following features:
XQUERY
- much faster sequence modification via finger trees
- improved compliance with XQuery 3.1
DBA
- open, save and del
Hi Benito,
These ones are valid:
> 3!(10---.)
> 12!(.div 3)
...and these ones are not:
> 12!(12 div.)
> 1<2
> 12 div-3
> 3!(12 div-.)
It would take some time to elaborate all the reasons for that (I would
surely need to look it up as well), but "12 div-3" is maybe easy to
explain: div-3 is als
Dear XML aficionados,
We are happy to present you Version 8.0 of BaseX, our XML database
system and XQuery processor (http://basex.org). It is being released
in alignment with the XML Prague 2015 Conference. We provide you with
quite a bunch of new and exciting features:
XQUERY
- Support for XQ
Hi Adam,
congratulations for the successful publication! Don't hesitate to
advertise it wheresoever.
Best,
Christian
On Wed, Jan 7, 2015 at 1:55 PM, Ihe Onwuka wrote:
> Got my copy a week ago - and it's now on my procrastination list.
>
> I really ha...erenvy people who can read technical
> Is xquery version "3.1"; valid?
I think it should be (although it seems not to be mentioned in the
current version of the spec [1]).
> What should a XQuery processor that understands 3.1 do, if the query starts
> with xquery version "3.0";
> but contains expressions that are only valid in 3.1 a
> /
> {
> @rtID,
> attribute imdb_id {format-number(@imdbID,'000')}
> }
I tried to other processors, and the result I got was…
…so I looks more an implementation issue.
Best,
Christian
___
talk@x-query.com
http:
Hi Leo,
the reason is that the XML document in your first example does not
have any namespace; so there won't be any conflicts. Instead, the new
namespace will be assigned to the addressed element.
This is different in the second case. The specification [1] says that
"If the namespace binding of
Hi Leo,
> I thought the function local-name() produces an output without namespace
> binding? Can anyone explain?
You are completely right. The problem is that your original document
uses the default namespace "http://www.mygym.com";, and your query uses
"http://www.gym.com";. In other words, t
Dear XQuery aficionados,
in the midst of summertime, we provide you with a new version of BaseX,
our XML database system and XQuery 3.0 processor. This is what you get:
XQUNIT
- Unit testing has been improved a lot. All test functions will now be
evaluated separately; this way, updates can b
This should help you:
('1999-12-31','2003-11-04') ! (. castable as xs:date)
On Thu, Jun 12, 2014 at 9:10 PM, Ihe Onwuka wrote:
> So I naively thought I'd try
>
> xquery version "3.0";
>
> ('1999-12-31','2003-11-04') / castable as xs:date
>
> because I am dealing with dirty data that shouldn'
> Yes, we don't have any machinery in the language semantics for declaring
> something as nondeterministic (easy to solve) or defining the semantics of
> how it should behave if thus annotated (much harder).
>
> For example, if f() and g() are non-deterministic functions, how do we say in
> the
And here is the Random Module of BaseX:
http://docs.basex.org/wiki/Random_Module
Similar to Zorba, most functions are non-deterministic. Is there any
particular reason why the official random functions need to be
deterministic?
Hope this helps,
Christian
On Tue, May 6, 2014 at 7:42 PM, Matth
Dear all,
We are very pleased to announce Version 7.8 of BaseX (a.k.a. the
XMLPrague Edition)! These are the features you can expect:
* A new project view allows you to open, edit and manage your project
files directly in the GUI and search files and contents in realtime.
* The integrated editor
Hi Hermann,
thanks for your interesting comparison. I'd like to point out that the
loop around the calculation (for $h in 1 to $N) might be optimized
away by a query compiler. If this happens, the only thing that would
be measured in the query would be the concatenation of 10 million
results.
But
> but how close would
> (floor,ceiling)[@firstpage + 1]($totalPagesDecimal) have been
Try this:
(floor#1,ceiling#1)[@firstpage + 1]($totalPagesDecimal)
___
talk@x-query.com
http://x-query.com/mailman/listinfo/talk
> P-( ARRGH! This doesn't work either! )-d
{ ((: This ௐ ㋛ ௵ ㋛ ௐ works! :)) }
On Sat, Jan 18, 2014 at 7:35 PM, Joe Wicentowski wrote:
> In fact, while I (of course) was expecting you to read my mind, I don't even
> think I know what I wanted in the first place.
Hi Chris,
> Can the below code be improved to retrieve the current effective price
> (4000) given the following:
each query processor may benefit from different optimizations, but
this is what I noticed:
> xs:date($price/@effective/string())
Your input (01/01/2014) doesn’t seem to be valid (201
Hi David,
> […]
> try {attribute id { "new-id" }} catch * {()},
> […]
>
> but it doesn't trap the error (in any XQuery 3 processor I've checked). The
> try/catch will work only if put around the entire element constructor.
The reason for this is that the attribute constructor itself is
correct.
> Let's say I want to do an insertion as this point:
>
> doc("example.html")/ABC
>
> where attribute x in ABC is equal to "123". How can this be achieved?
If your processor supports XQuery Update, you can do the following:
insert node
into doc("example.html")/ABC[@x = "123"]
Please note t
> From all the recommendations, is it correct to assume that a dedicated
> web server will need to be used, where permissions are provided to
> install these various software products?
If you simply want to learn the language, there is no need to look out
for professional hosting solutions. Some X
Hi Jean-Marc,
> To report over this topic, I've written in XQUERY a Map that have the
> desired properties, rewriting John Snelson rbtree.xq
> - It can handle nodes or functions as keys, if of course the user provides
> its external ordering function, this point being left under the user
> respons
> Everything in XQuery is elegant.
I wish I could agree… :)
>
> David A. Lee
> d...@calldei.com
> http://www.xmlsh.org
>
> -Original Message-
> From: talk-boun...@x-query.com [mailto:talk-boun...@x-query.com] On Behalf Of
> Michael Kay
> Sent: Tu
Dear all,
we are excited to give you Version 7.7 of BaseX -- the Happy-Birthday-Leo
Edition -- which provides a bunch of new and improved features:
XQUERY
- Support for XQuery 3.0 has been finalized
http://docs.basex.org/wiki/XQuery_3.0
- the Unit Module allows standardized testing of XQuer
Personally, I am more than happy to have some coding style conventions
for languages such as Java. I would love to also have them in XQuery,
but I fear that the flexibility of that language makes it difficult to
find solutions which are strict, consistent and nice to read at the
same time: we have
Maps will most probably be added to XQuery 3.1, but there are already
some implementations available (e.g. check out Saxon [1] BaseX [2], or
eXist-db [3]). Note that the exact map syntax is still subject to
change.
[1] http://www.saxonica.com/documentation/index.html#!expressions/xpath30maps
[2] h
Liam,
thanks for the reminder! We are working on the finalization of XQuery
3.0, and we will submit our results as soon as we are approximating
100%.
Yoshi OKAMOTO san: our implementation of format-integer() still needs
to be adjusted to the latest version of the specification. I can just
confirm
Hi all,
we are excited to announce Version 7.6 of BaseX, which provides some
fresh new features that will further
boost your productivity:
DATABASE LOCKING:
- updates on different databases can now be executed in parallel and
won't lock your read-only queries anymore:
http://docs.basex.org/wi
Hi Joe,
in BaseX, .xq is used for main modules and .xqm for library modules
(including RESTXQ modules). The main motivation for this was similar
to yours: .xq is short, there was some need to distinguish between
main and library modules, and there was no convention what would be
the best choice.
Dear all,
we are excited to announce the release of BaseX 7.5, aka the BaseXMas Edition:
http://basex.org/downloads
The latest features and changes are as follows:
XQUERY UPDATE
- bulk updates are now much faster than before
- insert and replace operations take much less memory
- databases ca
You may as well want to use XML comments, as long as you are moving within
XML constructs:
Of course, this comment will then also be part of the constructed XML
fragment.
Christian
___
> As per the mailing list archive link I sent yesterday.
> Use this to comm
..great news, thanks for the links!
Christian
___
> having fun with Adam Retter's RESTXQ
>
> src at https://github.com/xquery/rxq
>
> -Jim Fuller
> ___
> talk@x-query.com
> http://x-query.com/mailman/listinfo/talk
Hi everyone,
we are glad to announce a great new release of BaseX, our XML database
and XPath/XQuery 3.0 processor! Here are the latest features;
- Many new internal XQuery Modules have been added, and existing ones
have been revised to ensure long-term stability of your future XQuery
application
Dear all,
once more, we are proud to announce a new version of BaseX!
And once more, we can provide you with a whole bunch of
new features:
* Our value indexes now support string-based range queries:
http://docs.basex.org/wiki/Indexes#Value_Indexes
A big thank you to our sponsors who made this
Dear all,
after some busy weeks, we are glad to announce BaseX 7.2, the EDBT
Release! The latest version offers the following new features:
* support for the new RESTXQ API for building XQuery web services [1]
* improved support for running BaseX as web application [2]
* XQuery: higher order func
> OK, I submitted https://www.w3.org/Bugs/Public/show_bug.cgi?id=16311
> However as I have a rather hard time expressing myself,
> perhaps those who know what I am saying could add some detail to the
> bug. In the rare case the detail is wrong, I will chime in there. Thanks.
I've added the followi
..please check out BaseX, or Zorba, or eXist..
Am 13.02.2012 03:43 schrieb "Gajanan Chinchwadkar" :
> MarkLogic supports format-number() and other formatting functions (date,
> time, dateTime) from MarkLogic server 4.2.1 onwards.
>
> Thanks,
>
> Gajanan
>
> On Sun, Feb 12, 2012 at 6:35 PM, Matthia
Dear all,
three months have passed, and we are now proud to release the
XMLPrague 2012 Edition of BaseX! These are some of the new exciting
features (a full list is attached below):
* GUI: the management of your databases, documents & binary files and
index structure has got easier than ever be
Dear all,
thanks everyone for your support! We are more than excited to announce
BaseX 7.0, the best version we have released so far. Once more, it
includes quite a bunch of new features:
STORAGE: Files of any data type can now be stored in BaseX in their
raw representation. This means that BaseX
83 matches
Mail list logo