[osis-core] osisRef (finally)
Patrick Durusau
osis-core@bibletechnologieswg.org
Sun, 30 Jun 2002 16:50:15 -0400
Greetings,
Wanted to save this one as I read through all the various posts today to
make sure I have some awareness (incomplete no doubt) about where we are
and perhaps where we need to go.
First, I think it is clear that osisRef, just as a concept, is like
Steve said in one of his posts, very much like IDREF in SGML/XML. In
other words it identifies something that is being referenced. Note that
within a document instance, an IDREF without a corresponding ID is a
syntax error. (Not relevant to the present discussion other than to give
you an idea of how I think about IDREF.)
The osisRef is a reference (pointer?) to a particular text/edition/work
and usually to a particular place within that work. This does not mean
that the osisRef provides a means of getting there, but like map
directions, if you have a car, you can get there from here by following
the directions.
The osisRef presently is a data type that is used by both "work",
"cite", "outWork", "outCite" and has the following declaration in the
schema:
<xs:simpleType name="osisRef">
<xs:restriction base="xs:string">
<xs:pattern value="(([^\s]*\.){0,6}([^\s]*))(@((cp:(\d*)(\+(\d*))?\((.*)\))|((x-(\c*):)(.*)\((.*)\))))?((-(([^\s]*\.){0,6}([^\s]*)))?|(-(([^\s]*\.){0,6}([^\s]*)))(@((char:(\d*)\+(\d*)\((.*)\))|((x-(\c*):)(.*)\((.*)\))))?)?"/>
</xs:restriction>
</xs:simpleType>
As modified per Steve's last post on its syntax (char changed to cp,
made range optional (warning, on-the-fly editing).
Note that the attributes that use osisRef are not links but pointers.
Some other mechanism has to resolve the pointers to make the actual
links to other documents.
We also have osisWork
<xs:simpleType name="osisWork">
<xs:restriction base="xs:string">
<xs:pattern value="(([^\s]*\.){0,6}([^\s]*))"/>
</xs:restriction>
</xs:simpleType>
Proposal:
References in a document instance (The "who am I" case): use osisID and
it is of type osisRef. Document that I need not include Bible.RSV. if
that has been declared as an attribute on osisText. I can use
"short-ref" (in the non-SGML sense) such as Matt.1.2, etc.
References to other document instances: Recommend that such references
not use the short form but that is not something I think we can
validate. Not certain about current practice of allowing work to be
separated from the cite. (shouldn't these be together?)
Why not reduce cite/outCite, work/outWork to simply cite?
If I don't specify the work, for example cite="Matt.1.1" then the
software can look to required "work" attribute on osisText to compete
the reference if necessary, could just default to this document instance.
If I do specify the fuller citation, Bible.RSV.Matt.1.1 (and that does
not match the "work" attribute on osisText) I can either be given the
document instance version of Matt.1.1 (which may not be what I want) or
the software can resolve the reference to a copy of Bible.RSV.Matt.1.1.
I guess what I am asking is what benefit is there in specifying inner
versus outer references? Either it resolves via software when combined
with the "work" attribute fo osisText or it points to another document
instance.
Usage of osisRef:
1. annotateWork (points to what is being commented upon/annotated, needs
full syntax)
2. osisID (needs no grain/XPath) (Moved osisID to refer to osisWork
temporarily)
3. begin/end (attachment on note, refs to osisIDs)
4. cite (used by reference? to point to another text, either internal or
external)
Note that using the osisRef syntax, we can add support for full (or
partial XLink) with a later release.
Action: Other than fixing the regex syntax, awaiting your comments on
osisRef.
Patrick
--
Patrick Durusau
Director of Research and Development
Society of Biblical Literature
pdurusau@emory.edu