The GCX XQuery Engine – Download
G(arbage) C(collected) X(query) Engine – An open source in-memory XQuery engine
GCX is an efficient and effective open source in-memory XQuery engine implemented in C++. At runtime, GCX aims at minimizing the amount of data that is kept in main memory. This strategy does not only allow for evaluating large data streams with low main memory consumption, but also speeds up query evaluation as small buffers in many cases enable for fast XQuery evaluation (see also our benchmark results). If you are interested in the theoretical background of GCX you might take a look at the publications on GCX, which provide detailed information on the evaluation strategy. Furthermore, there is a compact FAQ section, which answers additional questions around GCX.
Supported fragment of XQuery 1.0
The current GCX version 2.1 (v2.1) supports an expressive fragment of the XQuery 1.0 standard. Below you can find a list of currently supported features for the latest and previous GCX releases.
Downloads
Since April 2009, GCX is a Sourceforge project. Your can download the latest version (and also older versions of GCX) at the Sourceforge GCX project page. Below we provide a short summary of all GCX versions together with their changes and/or addtions. The GCX bundles contain either the source code or the binary and a set of example queries. Please download the manual separately or use the online version of the manual.
Version (Release Date) |
Type | Benchmark Results | Changes/Additions | Download |
---|---|---|---|---|
v2.1 (2009-06-01) |
Independent Work | n/a |
|
Binaries/Sources Manual Developers Stuff |
v2.0 (unreleased) |
Diploma Thesis | n/a |
|
n/a |
Gunnar Jehl: Erweiterung und Optimierung der Garbage Collected XQuery Engine – Pfade mit mehreren Schritten und Aggregatfunktionen – (engl. Extension and Optimization of the Garbage Collected XQuery Engine – Multi-step Paths and Aggregate Functions –), Diploma Thesis 2008 [.pdf] (only available in german) |
||||
v1.0β (2007-01-26) |
Diploma Thesis | Results | n/a |
Binaries/Sources Manual |
Publications/Papers/Presentations
-
Publications:
Michael Schmidt, Stefanie Scherzinger, Christoph Koch:
Combined Static and Dynamic Analysis for Effective Buffer Minimization in Streaming XQuery Evaluation, In Proc. ICDE 2007 [.pdf]
Christoph Koch, Stefanie Scherzinger, Michael Schmidt:
The GCX System: Dynamic Buffer Minimization in Streaming XQuery Evaluation, In Proc. VLDB 2007, Demo paper [.pdf]
Supported Features
GCX v2.1 supported fragment of XQuery 1.0
The following syntactic constructs are supported by the GCX v2.1 release (changes/additions marked red):- arbitrary (well-formed) XML elements (with or without PCDATA content)
- string constants in output or conditions
- numeric constants in output or conditions
- aggregate function expressions in output or conditions supporting
- standard functions: fn:sum, fn:avg, fn:min, fn:max and fn:count
- non-standard functions: fn:stddev_samp, fn:stddev_pop, fn:var_samp, fn:var_pop and fn:median (fn:list removed)
- rounding function expressions in output or conditions supporting
- standard functions: fn:ceiling, fn:floor, fn:round and fn:round-half-to-even
- non-standard functions: fn:abs, fn:cover and fn:truncate
- arbitrarily deep-nested sequences of expressions
- nested FWR (for-where-return) expressions
- if-then-else expressions
- conditions support
- conjunctions: and, or
- functions: fn:not, fn:exists, fn:empty, fn:true, fn:false, all aggregate function expressions and all rounding function expressions
- relational operators: <, ≤, =, ≥, >, ≠
- variables defined by FWR expressions (no let-clause support) in output or conditions (with or without multi-step path expressions)
- multi-step path expressions (arbitrarily length) with (optional) fn:doc function expression for specifying absolute paths using
- axis: / (child::) or // (descendant::)
- node tests: node(), text(), wildcard (∗) or a tagname
- comment expressions "above" a query (not supported inside a query)
GCX v2.0 supported fragment of XQuery 1.0
The following syntactic constructs are supported by the GCX v2.0 release (changes/additions marked red):- arbitrary (well-formed) XML elements (with or without PCDATA content)
- string constants in output or conditions
- aggregate function expressions in output or conditions supporting
- standard functions: fn:sum, fn:avg, fn:min, fn:max and fn:count
- non-standard functions: fn:stddev_samp, fn:stddev_pop, fn:var_samp, fn:var_pop and fn:list
- arbitrarily deep-nested sequences of expressions
- nested FWR (for-where-return) expressions
- if-then-else expressions
- conditions support
- conjunctions: and, or
- functions: fn:not, fn:exists, fn:true, fn:false and all aggregate function expressions
- relational operators: <, ≤, =, ≥, >, ≠
- variables defined by FWR expressions (no let-clause support) in output or conditions (with or without multi-step path expressions)
- multi-step path expressions (arbitrarily length) using
- axis: / (child::) or // (descendant::)
- node tests: node(), text(), wildcard (∗) or a tagname
GCX v1.0β supported fragment of XQuery 1.0
The following syntactic constructs are supported by the GCX v1.0β release:- arbitrary (well-formed) XML elements (with or without PCDATA content)
- string constants in output or conditions
- arbitrarily deep-nested sequences of expressions
- nested FWR (for-where-return) expressions
- if-then-else expressions
- conditions support
- conjunctions: and, or
- functions: fn:not, fn:exists, fn:true and fn:false
- relational operators: <, ≤, =, ≥, >, ≠
- variables defined by FWR expressions (no let-clause support) in output or conditions (with or without single-step path expressions)
- single-step path expressions using
- axis: / (child::) or // (descendant::)
- node tests: node(), text(), wildcard (∗) or a tagname
Last updated: 2009-11-11