Zorba (XQuery processor)

Short description: Open-source query processor

Zorba is an open source query processor written in C++, implementing

* several W3C XQuery and XML specifications and
* the JSONiq language for processing JSON data.

Zorba is distributed under Apache License, Version 2.0. The project is mainly supported by the FLWOR Foundation, Oracle, and 28msec.

## Contents

* 1 Specifications
* 1.1 Scripting
* 1.2 Data Definition Facility
* 2 Storage
* 3 APIs
* 4 Modules
* 5 External links

## Specifications

Zorba provides the implementation of the following W3C specifications:

* XQuery 1.0
* XQuery 3.0
* XQuery Update Facility 1.0
* XQuery and XPath Full Text 1.0
* XML Syntax for XQuery 1.0
* XML Schema
* XSL Transformations (XSLT)
* XSL Formatting Objects

Zorba also provides implementations of:

* JSONiq
* Scripting Extension
* Data Definition Facility

### Scripting

Scripting Extension is an open specification that provides semantic for side-effects in XQuery or JSONiq programs. It also provides a user-friendly syntax for imperative programming within such programs. The following code snippet is an example of the Scripting syntax. It computes a sequence containing all the Fibonacci numbers that are less than 100.

(: this is a variable declaration statement :)
variable $a as xs:integer := 0;
variable $b as xs:integer := 1;
variable $c as xs:integer := $a + $b;
variable $fibseq as xs:integer* := ($a, $b);

while ($c lt 100) {
(: this is a variable assignment statement :)
$fibseq := ($fibseq, $c);
$a := $b;
$b := $c;
$c := $a + $b;

$fibseq

The following is an example of CRUD operations using Scripting, XQuery, and XQuery Update.

variable $stores := doc("stores.xml")/stores;

(: Create :)
insert node <store><store-number>4</store-number><state>NY</state></store> into $stores;

(: Update :)
replace value of node $stores/store[state="NY"]/store-number with "5";

(: Delete :)
delete node $stores/store[state != "NY"];

(: Read :)
$stores

### Data Definition Facility

Data Definition Facility provides a semantic for persistent artifacts such as collections and indexes in XQuery or JSONiq programs. For instance, the following code snippets declares a collection named entries and an index on that collection named entry.

module namespace g = "http://www.zorba-xquery.com/guestbook";

import module namespace db = "http://www.zorba-xquery.com/modules/store/static/collections/dml";

declare namespace an = "http://www.zorba-xquery.com/annotations";

(: Declares a collection named entries :)
declare collection g:entries as element(entry);
(: Declares a variable that points to the g:entries collection :)
declare variable $g:entries := xs:QName('g:entries');

(: Declares an index named entry on top of the entries collection :)
declare %an:automatic %value-equality index g:entry
on nodes db:collection(xs:QName('g:entries'))
by xs:string(@id) as xs:string;

## Storage

Zorba provides a pluggable store so it can be used on different kind of environments: disk, database, browser. By default, Zorba is built with a main memory store. 28msec implements a store on top of MongoDB. The XQuery in the Browser project has built a browser plugin for Zorba and leverages the DOM as its store.

## APIs

Zorba is usable through different host languages: C++, C, XQJ / Java, PHP, Python, C#, Ruby, and even XQuery/JSONiq.

Zorba is also available as a command-line tool.

XQDT is an XQuery plugin for the Eclipse (IDE). It fully supports Zorba API and syntax.

## Modules

Zorba provides more than 70 XQuery modules for building applications. Some of these modules are:

* File system, Email, HTTP client, OAuth client
* XQuery and JSONiq Data Model Processing: typing, atomic items, and nodes.
* Full-text: tokenizer, stemmer, thesaurus lookup.
* Data Cleaning: phonetic similarities, set similarities, conversions.
* Data Conversion: Base64, CSV, HTML, JSON, XML
* Data Formatting: XSL-FO
* Introspection and Reflection
* Cryptography
* Image processing

## External links

* Zorba website
* Zorba live demo
* Zorba modules

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Zorba (XQuery processor). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Zorba_(XQuery_processor)&oldid=267504"