The Juxta family of software (Juxta, Juxta WS, and Juxta Commons) allows you to compare and collate versions of the same textual work. The Juxta Web Service (Juxta WS) is an open source Java application that provides the core collation and visualization functions of Juxta in a server environment via an API. Development of Juxta WS was supported by NINES at the University of Virginia.
Juxta WS can collate two or more versions of the same textual work (“witnesses”) and generate a list of alignments as well as two different styles of visualization suitable for display on the web. The “heat map” visualization shows a base text with ranges of difference from the other witnesses highlighted. The “side by side” visualization shows two of the witnesses in synchronously scrolling columns, with areas of difference highlighted.
Please sign all comments.
Juxta WS runs on Java 1.6. A minimum of 1 GB memory is recommended; more memory is preferable, since the collation process is memory intensive.
Source code and licensing
Juxta WS is open source software available on GitHub.
Support for TEI
Juxta WS accepts all types of XML files and can pass them through an XSLT filter to remove the tags, resulting in a plain text for tokenization and collation. The program comes with a default XSLT filter for converting TEI encoded texts to plain text; in addition to removing the tags themselves, it also filters out the TEI headers and front matter. An alternative XSLT filter can be created and called by the user instead.
Juxta WS comes with a special XSLT filter for reconstructing variant witness texts from a single file encoded with TEI parallel segmentation markup.
Juxta WS can also export any comparison set as a single XML file encoded with TEI parallel segmentation markup regardless of the original format of the source files. It should be noted that the parallel segmentation export is constructed from the stripped-down witness texts; TEI markup from the original source files will not be reproduced in the parallel segmentation export.
Juxta WS is a server-side Java application that exposes a RESTful API with JSON transport. It was built upon standard open source frameworks such as Spring and Restlet. It uses XSLT to transform XML source files into witnesses.
The documentation for Juxta WS is written in English. Juxta WS supports collation of texts in any Unicode character set, with the exception of UTF-8 compound characters such as those used in Tibetan and Chinese scripts.
The Juxta WS API is documented on GitHub.
There is an open Google Group dedicated to discussing development issues for the Juxta family of software (the original Juxta desktop application, Juxta WS, and Juxta Commons).
Implementers of Juxta WS are invited to participate in the Juxta development Google Group.
The most prominent implementation of Juxta WS is in Juxta Commons, a project of NINES at the University of Virginia. (See also: Juxta Commons on the TEI Wiki.) A blog post on juxtasoftware.org showcases links to numerous examples of comparison sets created by Juxta Commons users.
Since March of 2012, Juxta WS has been available to provide collation services to registered account holders of the Carolingian Canon Law Project at the University of Kentucky. As of this writing (March 2013), development is under way to integrate Juxta WS with the TextLab software for transcribing and TEI encoding manuscript pages in the Melville Electronic Library at Hofstra University.
Current version number and date of release
Version 1.7.9, March 2013
History of versions
Juxta was originally developed in the early 2000s as a desktop application. The most recent release of the desktop version is available for download from the juxtasoftware.org website.
Juxta was re-implemented as a web service (Juxta WS) starting in late 2011. Development has continued in concert with the creation of Juxta Commons through spring of 2013.
How to download or buy
Juxta WS is free, open source software. The code is available in a public repository on GitHub. Please note that Juxta WS is a web service with no graphical user interface; it is designed to be called by other software and implementation will require familiarity with JSON and RESTful APIs.