Decorative Arch, Resafa, Syria. Copyright, Daniel Schwartz.

Syriaca.org Documentation

Guide to the Srophé Application

The Srophé Application is an open source TEI publishing framework. Originally developed as a digital publication platform for Syriaca.org [http://syriaca.org/] the Srophé software has been generalize for use with any TEI publications.

The software features multilingual browse and search options, faceted search and browse, maps, RDF integration and more.

Quick setup

Install eXist-db [http://exist-db.org/exist/apps/homepage/index.html].

Clone or fork the application repository.

Create a data repository for your TEI records. An easy way to do this is to clone or fork the https://github.com/srophe/srophe-app-data repository, this has all the necessary files for creating an eXist-db deployable application.

Add your data

Add your TEI the data directory in srophe-app-data/data. The Srophé Application depends on a unique identifier, for Syriaca.org uses tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type='URL'] as a unique identifier. It is also possible to use the document uri, changes would have to made in repo-config.xml and in controller.xql to enable use of the document uri rather then the tei:idno.

Deploy data and application

In the root directory of each of your new repositories run 'ant' [https://ant.apache.org/] to build the eXist-db application. A new .xar file will be built and saved in srophe/build/ and srophe-data/build folders. You can install these applications via the eXist-db dashboard [http://localhost:8080/exist/apps/dashboard/index.html] using the Package Manager.

Once deployed the application should show up as 'The Srophe web application' on your dashboard. Click on the icon to be taken to the app.

What works out of the box

  • Multi-lingual Browse
  • Multi-lingual Search
  • Faceted searching and browsing
  • Maps (Google or Leafletjs) for records with coordinates.
  • Timelines (https://timeline.knightlab.com/)
  • D3js visualizations for TEI relationships
  • RDF and SPARQL integration and data conversion
  • Multi-format publishing: HTML, TEI, geoJSON, KML, JSON-LD, RDF/XML, RDF/TTL, Plain text

Configuration options.

Many application settings can be set in the repo-config.xml file. Options to be configured:

  1. Set the application title:

    <title>Syriaca.org: The Syriac Reference Portal</title>

  2. Application description

    <description>A collaborative research project publishing online reference works concerning the culture, history, and literature of Syriac communities from antiquity to the present.</description>

  3. Contact email*

    <contact>info@syriaca.org</contact>

  4. Application Logo*: Assumes path to logo is $app-root/resources/images/_

    <logo>srophe.svg</logo>

  5. Web site URL*

    <url>http://syriaca.org/</url>

  6. Application navigation root: Used for building dynamic links from within the app. This can be useful if you want to set your application as root via Apache HTTP server or Nginx. Default value is ‘/exist/apps/srophe’ to set the Srophé app as your website root in Apache HTTP server or Nginx change the value to ‘/’ . To change the name of the

<nav-base>/exist/apps/srophe</nav-base>

  1. Application root: Path to the eXist repository where the application was deployed to. To change the name of the application root you will also need to change the name in the build.xml, expath-pkg.xml and repo.xml files.

<app-root>srophe</app-root>

  1. Application data root: Path to the eXist repository holding the TEI records.

<data-root>srophe-data</data-root>

  1. Base URI used by TEI records*: If not using URI’s you should configure the app to use document paths. See below.

<base_uri>http://syriaca.org/</base_uri>

  1. Path to ODD file: The ODD file can be used in XSLT or XQuery transformations to output controlled values. Path to the ODD file should be relative to app-root, or a full path including ‘http’ if the odd file is hosted elsewhere.

<odd>/documentation/syriaca-tei-main.odd</odd>

  1. Document ID: How to retrieve TEI records.

<document-ids type="idno">tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type='URL']</document-ids>

  1. Map rendering for records with coordinates (coordinates in tei:location/tei:geo) Choose between Google or Leafletjs. By adding @selected=’true’. If using Google maps you will need to obtain a developer key. You can add your developer key to your access-config.xml file. See more about the access-config.xml
<maps>
  <option>google</option>
  <option selected="true">leaflet</option>
</maps>
  1. Javascript Keyboard can be used to display keyboards in other languages. If adding additional keyboards you will need to add the link to the appropriate JavaScript file to the HTML header of $app-root/templates/page.html (see $app-root/resources/keyboard for additional keyboard options)
<keyboard-options>
   <option id="syriac-phonetic">Syriac Phonetic</option>
   <option id="syriac-standard">Syriac Standard</option>
   <option id="ms-Arabic (101)">Arabic Mod. Standard</option>
   <option id="qwerty">English QWERTY</option>
   <option id="ms-Greek">Greek Mod. Standard</option>
   <option id="ms-Russian">Russian Mod. Standard</option>
</keyboard-options>
  1. Configure sub-collections*
  • @name - Short name used in html pages to reference the collection/module name
  • @collection-URI - Series id used in the TEI biblScope/idno
  • @record-URI-pattern - URI for building links to the record views
  • @app-root - Folder name for the sub-collection
  • @data-root - Folder in the data application to use as a filter.
<collections>            `
    <collection name="places" title="The Syriac Gazetteer" app-root="geo" data-root="places" record-URI-pattern="http://syriaca.org/place/"/>
</collections>

*Optional items