Awesome
Corpus Query Language module for eXist-db
This is an XQuery Function Extension Module for eXist-db. The module provides a CQL (Corpus Query Language) to XML parser based on exquery/corpusql-parser.
Compiling
Requirements: Java 8, Maven 3.
-
git clone https://github.com/bcdh/cql-module.git
-
cd cql-module
-
mvn package
Installation into eXist-db
You can install the module into eXist-db in either one of two ways:
- As an EXPath Package (.xar file)
- Directly as a XQuery Java Extension Module (.jar file)
EXPath Package Installation into eXist-db (.xar)
-
If you have compiled yourself (see above), you can take the
cql-module/target/cql-module-1.4.0-SNAPSHOT.xar
file and upload it via eXist's EXPath Package Manager app in its Dashboard -
Otherwise, the latest release version will also be available from the eXist's EXPath Package Manager app in its Dashboard
Direct Installation into eXist-db (.jar)
-
If you have compiled yourself (see above), copy
cql-module/target/cql-module-1.4.0-SNAPSHOT-exist.jar
to$EXIST_HOME/lib
, or downloadcql-module-1.3.0-exist.jar
from Maven Central to$EXIST_HOME/lib
-
Edit
$EXIST_HOME/etc/conf.xml
and add the following to the<builtin-modules>
:<module uri="http://humanistika.org/ns/exist/module/cql" class="org.humanistika.exist.module.cqlmodule.CQLModule"/>
-
Edit
$EXIST_HOME/etc/startup.xml
and add the following to the<dependencies>
:
<dependency>
<groupId>org.humanistika.exist.module</groupId>
<artifactId>cql-module</artifactId>
<version>1.4.0-SNAPSHOT</version> <!-- modify to the version you are using -->
<relativePath>cql-module-1.4.0-SNAPSHOT-exist.jar</relativePath> <!-- this should reflect the exact filename in lib folder -->
</dependency>
- Restart eXist-db
Usage
The module exports a single function for use in your XQuery(s), for example:
xquery version "3.1";
import module namespace cql = "http://humanistika.org/ns/exist/module/cql";
cql:parse("[lemma='bob' & ana='x']")
would produce the output:
<cql:query xmlns:cql="http://humanistika.org/ns/exist/module/cql">
<cql:position>
<cql:and>
<cql:attribute name="lemma">bob</cql:attribute>
<cql:attribute name="ana">x</cql:attribute>
</cql:and>
</cql:position>
</cql:query>
For further examples of the XML that will be produced see CorpusQLXMLVisitorTest