[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