<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>ANN: HXQ: An XQuery Compiler/Interpreter for Haskell</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Dear Haskell cafe members,<BR>
I would like to announce the release of an XQuery compiler/interpreter<BR>
for Haskell, called HXQ. You can get more info and download it at:<BR>
<BR>
<A HREF="http://lambda.uta.edu/HXQ/">http://lambda.uta.edu/HXQ/</A><BR>
<BR>
HXQ is a fast and space-efficient translator from XQuery (the standard<BR>
query language for XML) to embedded Haskell code. The translation is<BR>
based on Haskell templates. HXQ takes full advantage of Haskell's lazy<BR>
evaluation to keep in memory only those parts of XML data needed at<BR>
each point of evaluation, thus performing stream-based evaluation for<BR>
forward queries (queries that do not contain backward steps). This<BR>
results to an implementation that is as fast and space-efficient as<BR>
any stream-based implementation based on SAX filters or finite state<BR>
machines. Furthermore, the coding is far simpler and extensible since<BR>
its based on XML trees, rather than SAX events.<BR>
<BR>
For example, a complex XQuery against the DBLP bibliography (420MB XML)<BR>
runs in 39 seconds on my laptop (using 18MB of max heap space in ghc).<BR>
To contrast this, Qexo, which compiles XQueries to Java bytecode, took<BR>
1 minute 17 seconds (using no less than 1400MB of heap space).<BR>
Also XQilla, which is written in C++, took 1 minute and 10 secs<BR>
(using 1150MB heap).<BR>
<BR>
Current Status: HXQ supports most essential XQuery features, although<BR>
some system functions are missing (but are easy to add). HXQ has<BR>
little support for backward step axes, such as /.. (parent). Some, but<BR>
not all, parent axis steps are removed using optimization rules; all<BR>
others cause a compilation error. Finally, HXQ does not comply to the<BR>
XQuery semantics that requires duplicate elimination and sorting by<BR>
document order for every XPath step, which is very expensive and<BR>
unnecessary in most cases.<BR>
<BR>
Please email me any suggestions for improvements or extensions you'd<BR>
like to see. My plan is to use it as a base for various XQuery<BR>
projects, such as adding SQL connectivity, as well as native storage<BR>
and indexing.<BR>
Best,<BR>
Leonidas Fegaras<BR>
U. of Texas at Arlington<BR>
<A HREF="http://lambda.uta.edu/">http://lambda.uta.edu/</A><BR>
</FONT>
</P>

</BODY>
</HTML>