Lax is a data storage application for articles at eLife Sciences.
This project uses the Python programming language, the Django web framework and a relational database.
Documentation can be found here:
For example, the Homo Naledi article:
git clone https://github.com/elifesciences/lax
cd lax
./install.sh
PostgreSQL is used in production which depends on psycopg2 and your distribution's 'libpq' library.
./install.sh
./test.sh
./manage.sh runserver
firefox http://127.0.0.1:8000/api/docs/
A publisher has one or many journals, each journal has many articles and each each article has many versions.
Each article is uniquely identified by its 'manuscript id', a simple integer.
Each article version contains the final article-json (derived from the article's JATS xml), the date and time it was published, updated, etc.
Each article also has one or many article fragments. Article fragments are merged to become the final article-json. There is one main fragment - the 'xml to json' fragment - and occasionally smaller fragments added by services that produce article content outside of the typical article production workflow.
Each article may have many events associated with it, such as when it was received, reviewed, decisions made, etc.
Each article version may be related to other articles (not article versions) internally within Lax as well externally via a URL.
Lax supports an eLife-specific JSON representation of JATS XML called 'article-json'.
article-json is part of elife's overall API definition and used extensively.
article-json files can be imported into Lax with:
./manage.sh ingest /path/to/article.json
See also bot-lax-adaptor for converting JATs XML to article-json and bulk loading content using 'backfills'.
Copyright 2021 eLife Sciences. Licensed under the GPLv3