[osis-core] One more round on osisID/osisRef!
Patrick Durusau
osis-core@bibletechnologieswg.org
Thu, 04 Jul 2002 14:49:43 -0400
Greetings,
One more round on osisID and osisRef, please read and comment:
For osisText, attribute as follows:
<xs:attribute name="osisWork" type="osisWorkType" default="bible.nrsva" use="required"/>
This specifies for all following elements that the reference system is bible.nrsva,
unless overridden by another declaration.
<xs:simpleType name="osisWorkType">
<xs:union memberTypes="osisWorkBase attributeExtension"/>
</xs:simpleType>
<xs:simpleType name="osisWorkBase">
<xs:restriction base="xs:string">
<xs:enumeration>bible.nrsva.niv</xs:enumeration>
<xs:enumeration>bible.nrsva.nkjv</xs:enumeration>
<xs:enumeration>bible.nrsva.nasv</xs:enumeration>
</xs:enumeration>
The osisWork value can be extended by adding tokens for date and language, in that order.
Should a value be omitted, the missing value should be represented by a full stop ".".
So the osisWork value consists of five (5) tokens that represent:
1. work (class)
2. reference system (here nrsva)
3. edition
4. date
5. language
Note that Harry can construct an osisWork for augustine_confessions.pusey as x-augustine_confession.pusey
and use it with an osisID as x-augustine_confession.pusey:(whatever the reference system is).
Note I don't think the datatype reaches the level of binding that Harry wanted but would it be
satisfied if the xs:documentation for the datatype specified additional information for each entry?
osisIDs:
osisIDs are constructed by either assuming the osisWork by default or overriding that default by
specifying the osisWork in full on an osisID.
For example:
<verse osisID="bible.nrsva.nasv:Matt.1.1"> could be written (assuming the correct osisWork attribute above:
<verse osisID="Matt.1.1"
Note that the syntax of the identifier after osisWork is determined by the reference system.
Thus if the CEV says: Matt.1.2-6a, that is a valid identifier in that system. It is just a string
and matching in that system is just a string match.
The problem arises in trying to make it possible to map silently from that system
(which has an implied range) to systems that do not. I would suggest that the osisRef,
which has a range mechanism, be used for that purpose (see below).
osisRef:
For ease of use internal to a document, I am suggesting that we document in prose that osisRef
also inherits the osisWork specified in the osisText element. Recall that internally, these are
pointers that can be used by software to implement linking that is not inherent in the present
OSIS syntax. It would be the software's use of an OSIS map (separate document) or other means to
resolve how to link from bible.nrsva.nasv:Matt.1.1 and it what language if none were specified.
A full osisRef for the CEV passage that I keep using as an example would appear as follows:
<p><reference osisID="bible.cev:Matt.1.2-6a" osisRef="bible.nrsva:Matt.1.2-Matt.1.6">Matt.1.2-6a</reference>
Note that I have dropped the "a" qualfier on the second token of the reference range since it does not
exist outslde of the CEV reference system.
For systems that do not resolve ranges, it would be entirely permissible to encode the passage as:
<p><reference osisID="bible.cev:Matt.1.2-6a" osisRef="bible.nrsva:Matt.1.2-Matt.1.6">Matt.1.2-6a</reference>
<milestone type="verse" osisID="bible.cev:Matt.1.2 osisRef="bible.nrsva:Matt.1.2"/>
<milestone type="verse" osisID="bible.cev:Matt.1.3 osisRef="bible.nrsva:Matt.1.3"/>
<milestone type="verse" osisID="bible.cev:Matt.1.4 osisRef="bible.nrsva:Matt.1.4"/>
<milestone type="verse" osisID="bible.cev:Matt.1.5 osisRef="bible.nrsva:Matt.1.5"/>
<milestone type="verse" osisID="bible.cev:Matt.1.6a osisRef="bible.nrsva:Matt.1.6"/>
Note that I am covertly suggesting that we simply drop validation of syntax and content of the osisID,
osisRef and osisWork and simply specify in prose how to construct a valid value.
Patrick
--
Patrick Durusau
Director of Research and Development
Society of Biblical Literature
pdurusau@emory.edu