CCEL/OSIS Reference Systems

Locating and retrieving passages of scripture or commentary on passages is a fundamental operation for the Christian Classics Ethereal Library. The problem is made more difficult in that when a book such as The Imitation of Christ references a scripture passage such as Psalm 9:22-39, it is referring to the Vulgate. The corresponding passage in modern English bibles is Ps 10:1-18.

In fact, there are several different versification schemes for bibles. Most English bibles are identical or similar, but there are some major variants, including the NAB and the NJB. Other schemes include those used by the Septuagint, the Vulgate, and Greek and Hebrew versions.

We plan to address this situation by using a reference scheme defined by OSIS -- Open Scripture Information Standard. We will use osisIDs to identify passages and osisRefs to refer to them.

An osisID has the form Bible:Ps.10.1 or Bible.Vul:Ps.9.22. The part before the colon is the name of the scheme and the part after the colon is an identifier in that scheme. Bible: is the reference scheme, defined to conform to the versification scheme used by the New Revised Standard Version (with Apocrypha).

Bible.Vul is a "child" of Bible. That implies that a mapping exists between Bible.Vul and Bible, that is, it is possible to convert Bible.Vul IDs, such as Bible.Vul:Ps.9.22, to the corresponding references in the Bible scheme, and vice versa. In order to convert a reference from Bible.NAB to Bible.Vul, one would first convert the Bible.NAB reference to the Bible scheme and then convert the Bible reference into the Bible.Vul scheme.

The mechanism for defining such schemes and converting between them is generic, so that it would be possible define reference systems for different versions of Augustine's Confessions, for example. But initially we will concentrate on different versifcation systems for the Bible.

Defining Reference Systems

The essential pieces of information are the osisIDs that are present in a system, along with the order in which they occur, and mappings to a parent system, if any. An excerpt from the Bible.Vul system definition:

<?xml version="1.0"?>

<refSys code="Bible.Vul" name="Vulgate">
  <osisIDs>
    <osisID code="Ps.9.21"/>
    <osisID code="Ps.9.22"/>
    <osisID code="Ps.9.23"/>
  </osisIDs>

  <refMap from="Bible.Vul" to="Bible">
    <map from="Ps.9.21" to="Ps.9.20"/>
    <map from="Ps.9.22" to="Ps.10.1"/>
    <map from="Ps.9.23" to="Ps.10.2"/>
  </refMap>

  <refMap from="Bible" to="Bible.Vul">
    <map from="Ps.9.20" to="Ps.9.21"/>
    <map from="Ps.10.1" to="Ps.9.22"/>
    <map from="Ps.10.2" to="Ps.9.23"/>
  </refMap>
</refSys>

Note that the mappings are hierarchically defined, so one could say

Six reference systems have so far been defined. They are not tested and likely have errors. They are:

OSIS References

While the osisID="Bible:Ps.10.1" attribute is used to say "I am Ps.10.1", it is also necessary to be able to say something like "I am a commentary on Ps.10.1-Ps.10.18". For this purpose the osisRef attribute of the <scripCom> and <scripRef> elements is used. It takes values as in these examples: That is, osisRefs can take single osisIDs, or a space-separated list of IDs, or a dash-separated range. In the latter case, all of the osisIDs between Ps.10.1 and Ps.10.18 (as defined in Bible.xml) are referred to.

Using Reference Systems at the CCEL

In a document such as a bible or commentary, one can use reference systems with the osisID attribute of the scripture element. For example, <scripture osisID="Bible:Ps.10.1">. Such documents should also declare the reference system they implement, using <DC.Identifier scheme="osisID">Bible.Vul</DC.Identifier>. Note that the elements here are ThML-specific, not related to OSIS.

The thml.html.xsl stylesheet understands an osisRef parameter. So, to retrieve Bible:Ps.10.1 in html, one could use the following URI:

thml.html.xsl will have osisRef resolution built in, so one will in the near future be able to retrieve the same passage with this URI:

A sample XML file with osisRefs and a sample XSLT stylesheet that does osisRef resolution are available. Together, they generated this output. A large file of mappings [13+ MB] suitable for importing into a database management system or other resolver is also available.

Bible book names and abbreviations

Some programs and stylesheets need to list bible book names and know corresponding osisIDs. Other programs need to know book name abbreviations and the books that correspond, or the number of verses in each chapter of a book. An XML is available with that information: bookID.xml.