Difference between revisions of "EXist"

From TEIWiki
Jump to navigation Jump to search
(added "User commentary" section)
(Sample implementations)
 
(62 intermediate revisions by 12 users not shown)
Line 6: Line 6:
  
 
== Synopsis ==
 
== Synopsis ==
 +
 +
[http://exist-db.org eXist-db] is an open source database management system built using [http://en.wikipedia.org/wiki/XML XML] technology.  It stores XML data according to the XML data model and features efficient, index-based XQuery processing.
 +
 +
eXist-db supports many [http://en.wikipedia.org/wiki/Web_2 Web 2.0] technology standards, making
 +
it an excellent platform for developing web-based applications:
 +
 +
*Technologies: [http://www.w3.org/TR/xquery-30/ XQuery 3.0], [http://www.w3.org/TR/xpath-30/ XPath 3.0], [http://www.w3.org/TR/xslt20/ XSLT 2.0] (based on [http://www.saxonica.com/ Saxon]), XForms 1.1 (based on [http://www.betterForm.de betterForm], [http://www.orbeon.com Orbeon] or [http://www.agencexml.com/xsltforms XSLTForms]) XProc, JSON and JSONP.
 +
 +
*Interfaces: [http://en.wikipedia.org/wiki/Representational_State_Transfer REST], [http://exquery.github.io/exquery/exquery-restxq-specification/restxq-1.0-specification.html RESTXQ], [http://www.webdav.org/ WebDAV], [http://www.w3.org/TR/soap/ SOAP], [http://en.wikipedia.org/wiki/XML-RPC XML-RPC], and [http://en.wikipedia.org/wiki/Atom_(standard) Atom Publishing Protocol]
 +
 +
*XML database specific features: [http://xmldb-org.sourceforge.net/xupdate/index.html XML:DB], [http://xmldb-org.sourceforge.net/xupdate/ XUpdate],  [http://exist.sourceforge.net/update_ext.html XQuery update extensions] (to be aligned with the new [http://www.w3.org/TR/xquery-update-10/ XQuery Update Facility 1.0]).
 +
           
 +
The 1.4 version added a new full text index based on  [http://lucene.apache.org/java/docs/index.html Apache Lucene], a lightweight [http://en.wikipedia.org/wiki/Rewrite_engine URL rewriting] and [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller Model–view–controller] framework, as well as support for [http://xproc.org/ XProc]. With version 1.4, the XQuery engine has seen a major redesign, resulting in improved performance.
 +
 +
The [http://exist.sourceforge.net/download.html 2.0 version] completely redesigned the Security subsystem introducing Access Control Lists and multiple realm authentication, and also introduced a re-write of the WebDAV Server making it more widely compatible with clients. In addition hundreds of bugfixes and performance improvements have been made since the 1.4 release.
 +
               
 +
eXist-db is highly compliant with the [http://www.w3.org/TR/xquery/ XQuery standard] (current [http://www.w3.org/XML/Query/test-suite/ XQuery Test Suite] score is [http://www.w3.org/XML/Query/test-suite/XQTSReportSimple.html 99.4%]).
 +
 +
The query engine is extensible and features a large collection of [http://demo.exist-db.org/exist/xquery/functions.xql XQuery Function Modules].
 +
 +
eXist-db provides a powerful environment for the development of web applications
 +
based on XQuery and related standards. Entire web applications can be written in
 +
XQuery, using XSLT, XHTML, CSS and Javascript (for AJAX functionality).
 +
 +
<!--           
 
[http://exist.sourceforge.net/ eXist] is a Native XML Database, used for storing and querying XML files. Since the first versions, made available between 2000 and 2001, eXist has considerably evolved, thanks also to an active community of developers and users, and in its latest releases, it has several functions, such as support for [http://www.w3.org/TR/xquery/ XQuery], [http://www.w3.org/2001/XInclude XInclude] and [http://xmldb-org.sourceforge.net/xupdate/ XUpdate]. Through an integration with [[ApacheCocoon]], [http://www.w3.org/TR/xslt XSLT] processing can be added to the whole workflow, using the pipeline concept of the [http://cocoon.apache.org/2.1/userdocs/concepts/sitemap.html Sitemap]. In this way data and documents can be queried and transformed using together, in the same process, [http://www.w3.org/TR/xquery/ XQuery] and [http://www.w3.org/TR/xslt XSLT]. Moreover [http://exist.sourceforge.net/ eXist] can be integrated as a block in [[ApacheCocoon]], so to use all the modules of this framework, and not the limited version shipped with this database. Recently, starting from version 1.1, [http://exist.sourceforge.net/ eXist] has changed the indexing core, becoming more efficient in being used with complex document-centric files, such as TEI encoded texts.
 
[http://exist.sourceforge.net/ eXist] is a Native XML Database, used for storing and querying XML files. Since the first versions, made available between 2000 and 2001, eXist has considerably evolved, thanks also to an active community of developers and users, and in its latest releases, it has several functions, such as support for [http://www.w3.org/TR/xquery/ XQuery], [http://www.w3.org/2001/XInclude XInclude] and [http://xmldb-org.sourceforge.net/xupdate/ XUpdate]. Through an integration with [[ApacheCocoon]], [http://www.w3.org/TR/xslt XSLT] processing can be added to the whole workflow, using the pipeline concept of the [http://cocoon.apache.org/2.1/userdocs/concepts/sitemap.html Sitemap]. In this way data and documents can be queried and transformed using together, in the same process, [http://www.w3.org/TR/xquery/ XQuery] and [http://www.w3.org/TR/xslt XSLT]. Moreover [http://exist.sourceforge.net/ eXist] can be integrated as a block in [[ApacheCocoon]], so to use all the modules of this framework, and not the limited version shipped with this database. Recently, starting from version 1.1, [http://exist.sourceforge.net/ eXist] has changed the indexing core, becoming more efficient in being used with complex document-centric files, such as TEI encoded texts.
 +
-->
  
 
== Features ==
 
== Features ==
Line 13: Line 39:
 
* Management of the stored documents in collections
 
* Management of the stored documents in collections
 
* XQuery engine with extentions for full-text search
 
* XQuery engine with extentions for full-text search
* Support for XQuery, XSLT, XInclude and XPointer (partial), XUpdate
+
* Support for XQuery, XSLT, XInclude and XPointer (partial), XUpdate, XSLT and XProc
* [http://xmldb-org.sourceforge.net/xapi/ XMLDB Api]
+
* [http://xmldb-org.sourceforge.net/xapi/ XML:DB API]
 
* Use of network protocols (HTTP/REST, XML-RPC, SOAP, WebDAV)
 
* Use of network protocols (HTTP/REST, XML-RPC, SOAP, WebDAV)
* Integration with [[ApacheCocoon]]
+
* Security Access Control Lists on Documents and Collections
 +
* Optional multi-realm integration with LDAP and Active Directory
 +
* Integration with [[ApacheCocoon]]
  
 
== User commentary ==
 
== User commentary ==
 
'''Please sign all comments.'''
 
'''Please sign all comments.'''
  
 +
Can be very sensitive to placement of certain files, in particular collection.xconf. Silently ignores config files in the wrong place. [[User:Stuartyeates|Stuartyeates]] 18:15, 26 April 2011 (EDT)
 +
 +
There is a [[XML_Whitespace#Bug_in_eXist|bug in eXist's handling of whitespace]]. [[User:Kshawkin|Kshawkin]] 15:48, 10 March 2015 (CET)
  
 
== System requirements ==
 
== System requirements ==
eXist is written in Java, and therefore requires a [http://java.sun.com/javase/downloads/index.jsp JDK] > 1.4. Being a Java application it can be used on most operating systems, from Windows 2000/XP to Linux or MacOs X, and it can be deployed in several ways, as a standalone application, as a web application inside a servlet container (such as [http://tomcat.apache.org/ Apache Tomcat] or [http://www.mortbay.org/ Jetty]) or as a Java library in a larger application.
+
eXist is written in Java, and therefore requires a [http://java.oracle.com JRE] ≥ 6. Being a Java application it can be used on most operating systems, including Windows, Linux, Mac OS X, Solaris and FreeBSD and it can be deployed in several ways, as a standalone server application, as a web application inside a servlet container (such as [http://tomcat.apache.org/ Apache Tomcat] or [http://www.mortbay.org/ Jetty]) or as a Java library embedded in a larger application.
  
 
== Source code and licensing ==
 
== Source code and licensing ==
eXist is open-source, released under the [http://www.gnu.org/copyleft/lesser.html GNU LGPL] license.
+
eXist is open-source, released under the [http://www.gnu.org/licenses/lgpl-2.1.html GNU LGPL 2.1] license.
  
 
== Support for TEI ==
 
== Support for TEI ==
Support for TEI is not out of the box, meaning that in the standard distribution there are not ready to use XQuery or XSLT files for TEI documents, even as examples. Notwithstanding implementation with TEI is really straightforward and there are several applications based on this software. In particular the development of the new indexing core, for a better management of complex document-centric file, such as TEI documents, has been supported by the TAPoR node of [http://tapor.uvic.ca/home.php University of Victoria].
+
Joe Wicentowski has a step-by-step introduction with full example files on how to publish TEI texts with eXist, presented at the Digital.Humanities@Oxford Summer School in 2011; see the [http://digital.humanities.ox.ac.uk/dhoxss/2011/sessions.html#xmldb session description] with links to slides and sample material.
 +
 
 +
 
 +
From the Package Manager, accessed through the eXist Dashboard, one can install the application Shakespeare's Works in TEI from the eXist Public Repository. All Shakespeare's plays from the [http://wordhoard.northwestern.edu/ WordHoard Shakespeare] can be queried with search results displayed in the hit list in KWIC format. See also the [https://github.com/wolfgangmm/ShakespeareDemo GitHub repo] for this application.
 +
 
 +
 
 +
A TEI module called Matumi is distributed as an eXist application. Matumi is still under development. It requires eXist version 1.5 and is installed from within eXist's Package Reposistory. After installation, it can be accessed from [http://localhost:8080/exist/apps/encyclopedia/ http://localhost:8080/exist/apps/encyclopedia/] on a default installation.
 +
 
 +
Matumi is not a full-blown TEI module yet, but it has some notable features, such as the ability to browse by filtering texts and core parts of the markup. It contains faceted search feeding off the markup, making possible "translingual" searches that utilise references added to name forms.
 +
 
 +
The app uses XQuery only.
 +
 
 +
Installation will store a number of basic TEI documents in the data directory. These files are excepts from encyclopaedias, whence the present orientation of the app.
 +
 
 +
If you access through browsing, you can arrange the data by four criteria - books, entry title, subjects and names.
 +
 
 +
If you access through search, in order to retrieve some sample results, select lemma and search for "nation", select term and search for "ars", select name and search for "marx", select text and search for "gouvernement", or select key and search for "http://dbpedia.org/page/French_Revolution".
 +
 
 +
 
 +
There is a comprehensive discussion of optimising eXist/XQuery for TEI on  [http://exist.2174344.n4.nabble.com/eXist-optimisation-and-large-TEI-collections-td3487406.html the eXist-open mailing list]
  
 
== Language(s) ==
 
== Language(s) ==
As wrote before, eXist is a Java application. Anyway, whole applications can be created without writing any line of programming code, but using only XQuery, XSLT, (X)HTML, CSS and Javascript. Using the available network interfaces is possible to query eXist not only with Java, and there are already available several modules for other languages ([http://www.bmuskalla.de/DB_eXist/ PHP], [http://query-exist.sourceforge.net/ Perl]) and frameworks ([http://sourceforge.net/projects/springxmldb/ Spring], [http://www.throwingbeans.org/tech/xml_databases_with_exist_and_coldfusion.html ColdFusion], [http://www.zope.org/Members/spilloz/existda Zope]).
+
As detailed above, eXist is itself written in the Java language. However, it enables complete applications to be created without writing any programming code, by just using only XQuery, XSLT, (X)HTML, CSS, XForms, XProc and Javascript. Using the available network interfaces is possible to query eXist not only with Java, and there are already available several modules for other languages ([http://www.bmuskalla.de/DB_eXist/ PHP], [http://query-exist.sourceforge.net/ Perl]) and frameworks ([http://sourceforge.net/projects/springxmldb/ Spring], [http://www.throwingbeans.org/tech/xml_databases_with_exist_and_coldfusion.html ColdFusion], [http://www.zope.org/Members/spilloz/existda Zope]).
 
The [http://exist-db.org/documentation.html documentation] is available only in english.
 
The [http://exist-db.org/documentation.html documentation] is available only in english.
  
 
== Documentation ==
 
== Documentation ==
http://exist-db.org/documentation.html
+
[http://exist-db.org/exist/apps/doc/ eXist Documentation]
  
 
== Tech support ==
 
== Tech support ==
Technical support is provived mainly throught the [http://sourceforge.net/mail/?group_id=17691 mailing list]. Being eXist open-source all kind of support and help is made voluntarily and with no obligations. Anyway the support it is very efficient, and almost all the requests are answered in a complete and qualified way.
+
Technical support for the Open Source product is provided mainly through the [http://sourceforge.net/mail/?group_id=17691 eXist-db mailing list]. Being open-source all kind of support and help is made voluntarily and with no obligations. Anyway the support it is very efficient, and almost all the requests are answered in a complete and qualified way.
 +
 
 +
Commercial support, consultancy and training is also available from the creators of eXist through [http://www.existsolutions.com eXist Solutions]. eXist Solutions directly support and further the development of eXist.
  
 
== User community ==
 
== User community ==
The user community is very active and, as for the technical support, the main way of communication is the [http://sourceforge.net/mail/?group_id=17691 mailing list]. Many participants of this list are also part of the TEI Community. There is also a [http://wiki.exist-db.org wiki] and an IRC channel: #existdb at irc.freenode.net.  
+
The user community is very active and, as for the technical support, the main way of communication is the [http://sourceforge.net/mail/?group_id=17691 eXist-db mailing list]. Many participants of this list are also part of the TEI Community. There is also a [http://wiki.exist-db.org wiki] and an IRC channel: #existdb at irc.freenode.net.
 +
 
 +
In August 2011, a dedicated email list was created on using eXist with TEI resources. For information or to subscribe, go to the [https://lists.sourceforge.net/lists/listinfo/exist-teixml eXist-TEIXML] information page.
  
 
== Sample implementations ==
 
== Sample implementations ==
* [http://demo.exist-db.org/examples.xml official demo] (without TEI related examples)  
+
* [http://www.weber-gesamtausgabe.de/ Carl-Maria-von-Weber-Gesamtausgabe (WeGA)] The correspondence, diaries, writings and works of Carl Maria von Weber
* [http://web.uvic.ca/hrd/achallc2005/abstracts.htm ACH/ALLC 2005: Conference Program and Abstracts]
+
* [http://syriaca.org/ Syrica.org] publishes online reference works concerning the culture, history, and literature of Syriac communities from antiquity to the present. Public repo at [https://github.com/srophe/srophe-eXist-app GitHub].
* [http://www.tapor.uvic.ca:8080/cocoon/graves/ Diary of Robert Graves]
+
<!--* [http://193.204.255.27/operaliber/index.php?page=/operaLiber/home OperaLiber]-->
* [http://193.204.255.27/operaliber/index.php?page=/operaLiber/home OperaLiber]
 
 
* [http://www.anglo-norman.net/ The Anglo-Norman Dictionary]
 
* [http://www.anglo-norman.net/ The Anglo-Norman Dictionary]
 
* [http://mith2.umd.edu/eada/ Early Americas Digital Archive]
 
* [http://mith2.umd.edu/eada/ Early Americas Digital Archive]
 +
* [http://buddhistinformatics.ddbc.edu.tw/BZA/ A Digital Comparative Edition and Translation of the Shorter Chinese Saṃyukta Āgama]
 +
* [http://history.state.gov/ Foreign Relations of the United States and other publications of the Office of the Historian, U.S. Department of State]
 +
* [https://github.com/stuartyeates/He-Kupu-Tawhito Multilingual Concordances with TEI]
 +
* [http://vnsletters.org/VNS/ VNS letters online]: digital edition of letters concerning the Belgian literary journal 'Van nu en Straks'
 +
* [http://ctb.kantl.be/corpora/CPWNL/ Corpus Pieter Willems]: searchable facsimile edition of the first Dutch dialect survey ever
 +
* [http://tbe.kantl.be/TBE/xquery/TBEvalidator.xq TEI validator]: interactive validating app for TEI documents using eXist's XML validation functions
 +
* [http://sermones.net/thesaurus/ Sermones.net : éditions électroniques de sermons latins médiévaux]: l’édition électronique de corpus de sermons, dont le premier est la série de sermons de Carême de Jacques de Voragine.
 +
<!--* [http://ciham.ish-lyon.cnrs.fr/paleographie/index.php?l=en Interactive Album of Mediaeval Palaeography]: website for training in practical palaeographical skills.-->
 +
* [http://voice.univie.ac.at Vienna-Oxford International Corpus of English]: a corpus of transcripts of spoken ELF interactions in TEI format.
 +
* [http://www.manuscripta.se// Greek Manuscripts in Sweden]
 +
<!--http://macgreevy.org?-->
  
 
== Current version number and date of release ==
 
== Current version number and date of release ==
New Indexing Core: eXist 1.1.1 - 2006-10-26
+
Current stable release: eXist 3.0 (2017-02-10)
 
 
Old Indexing Core: eXist 1.0.2 - 2007-02-25
 
  
 
== How to download ==
 
== How to download ==
[http://exist-db.org/index.html#download http://exist-db.org/index.html#download].
+
Download an installer for the current stable version (version 2.1, July 2013) from the [http://www.exist-db.org/exist/apps/homepage/index.html#subscriptions eXist Home Page]; clone or download the current trunk version from the [https://github.com/eXist-db/exist eXist GitHub Page].
  
 
== See also ==
 
== See also ==
 
* [[Berkeley DB XML]]
 
* [[Berkeley DB XML]]
 +
* [[Base-X]]
 +
* [[TEI Web Publishing]]

Latest revision as of 19:20, 12 May 2022


Synopsis

eXist-db is an open source database management system built using XML technology. It stores XML data according to the XML data model and features efficient, index-based XQuery processing.

eXist-db supports many Web 2.0 technology standards, making it an excellent platform for developing web-based applications:

The 1.4 version added a new full text index based on Apache Lucene, a lightweight URL rewriting and Model–view–controller framework, as well as support for XProc. With version 1.4, the XQuery engine has seen a major redesign, resulting in improved performance.

The 2.0 version completely redesigned the Security subsystem introducing Access Control Lists and multiple realm authentication, and also introduced a re-write of the WebDAV Server making it more widely compatible with clients. In addition hundreds of bugfixes and performance improvements have been made since the 1.4 release.

eXist-db is highly compliant with the XQuery standard (current XQuery Test Suite score is 99.4%).

The query engine is extensible and features a large collection of XQuery Function Modules.

eXist-db provides a powerful environment for the development of web applications based on XQuery and related standards. Entire web applications can be written in XQuery, using XSLT, XHTML, CSS and Javascript (for AJAX functionality).


Features

  • Persistent storing and indexing of the XML documents
  • Database administration functions (data management, backup, recoveries)
  • Management of the stored documents in collections
  • XQuery engine with extentions for full-text search
  • Support for XQuery, XSLT, XInclude and XPointer (partial), XUpdate, XSLT and XProc
  • XML:DB API
  • Use of network protocols (HTTP/REST, XML-RPC, SOAP, WebDAV)
  • Security Access Control Lists on Documents and Collections
  • Optional multi-realm integration with LDAP and Active Directory
  • Integration with ApacheCocoon

User commentary

Please sign all comments.

Can be very sensitive to placement of certain files, in particular collection.xconf. Silently ignores config files in the wrong place. Stuartyeates 18:15, 26 April 2011 (EDT)

There is a bug in eXist's handling of whitespace. Kshawkin 15:48, 10 March 2015 (CET)

System requirements

eXist is written in Java, and therefore requires a JRE ≥ 6. Being a Java application it can be used on most operating systems, including Windows, Linux, Mac OS X, Solaris and FreeBSD and it can be deployed in several ways, as a standalone server application, as a web application inside a servlet container (such as Apache Tomcat or Jetty) or as a Java library embedded in a larger application.

Source code and licensing

eXist is open-source, released under the GNU LGPL 2.1 license.

Support for TEI

Joe Wicentowski has a step-by-step introduction with full example files on how to publish TEI texts with eXist, presented at the Digital.Humanities@Oxford Summer School in 2011; see the session description with links to slides and sample material.


From the Package Manager, accessed through the eXist Dashboard, one can install the application Shakespeare's Works in TEI from the eXist Public Repository. All Shakespeare's plays from the WordHoard Shakespeare can be queried with search results displayed in the hit list in KWIC format. See also the GitHub repo for this application.


A TEI module called Matumi is distributed as an eXist application. Matumi is still under development. It requires eXist version 1.5 and is installed from within eXist's Package Reposistory. After installation, it can be accessed from http://localhost:8080/exist/apps/encyclopedia/ on a default installation.

Matumi is not a full-blown TEI module yet, but it has some notable features, such as the ability to browse by filtering texts and core parts of the markup. It contains faceted search feeding off the markup, making possible "translingual" searches that utilise references added to name forms.

The app uses XQuery only.

Installation will store a number of basic TEI documents in the data directory. These files are excepts from encyclopaedias, whence the present orientation of the app.

If you access through browsing, you can arrange the data by four criteria - books, entry title, subjects and names.

If you access through search, in order to retrieve some sample results, select lemma and search for "nation", select term and search for "ars", select name and search for "marx", select text and search for "gouvernement", or select key and search for "http://dbpedia.org/page/French_Revolution".


There is a comprehensive discussion of optimising eXist/XQuery for TEI on the eXist-open mailing list

Language(s)

As detailed above, eXist is itself written in the Java language. However, it enables complete applications to be created without writing any programming code, by just using only XQuery, XSLT, (X)HTML, CSS, XForms, XProc and Javascript. Using the available network interfaces is possible to query eXist not only with Java, and there are already available several modules for other languages (PHP, Perl) and frameworks (Spring, ColdFusion, Zope). The documentation is available only in english.

Documentation

eXist Documentation

Tech support

Technical support for the Open Source product is provided mainly through the eXist-db mailing list. Being open-source all kind of support and help is made voluntarily and with no obligations. Anyway the support it is very efficient, and almost all the requests are answered in a complete and qualified way.

Commercial support, consultancy and training is also available from the creators of eXist through eXist Solutions. eXist Solutions directly support and further the development of eXist.

User community

The user community is very active and, as for the technical support, the main way of communication is the eXist-db mailing list. Many participants of this list are also part of the TEI Community. There is also a wiki and an IRC channel: #existdb at irc.freenode.net.

In August 2011, a dedicated email list was created on using eXist with TEI resources. For information or to subscribe, go to the eXist-TEIXML information page.

Sample implementations

Current version number and date of release

Current stable release: eXist 3.0 (2017-02-10)

How to download

Download an installer for the current stable version (version 2.1, July 2013) from the eXist Home Page; clone or download the current trunk version from the eXist GitHub Page.

See also