[osis-core] Still open issues related to the proposal on the table for references.

Todd Tillinghast osis-core@bibletechnologieswg.org
Sat, 31 Aug 2002 00:58:15 -0600


Open issues related to the proposal on the table for references.
1) ISSUE: We should be able to declare a default "namespace" that is
different from the work declared in osisWork.

PROPOSED SOLUTION:  Have an attribute that declares the default
"namespace" that is independent of the work declared in osisWork.  Both
would have to be declared as a work in the header.  This allows for the
default namespace to be "Bible" in a work that is Bible.TEV or a work
that is a commentary.

2) ISSUE: There is no mechanism to express in a single string a
reference using one namespace and specifying a different work.  
<osisText>
	<header>
		<work workID="gen">
			<identifier type="OSIS">Bible</identifier>
		</work>
		<work workID="kjv">
			<identifier type="OSIS">Bible.kjv</identifier>
		</work>
		<work workID="niv">
			<identifier type="OSIS">Bible.niv</identifier>
			<refSystem type="OSIS">Bible</refSystem>
		</work>
		<work workID="nivWorkWithFrenchRefSystem">
			<identifier type="OSIS">Bible.niv</identifier>
			<refSystem type="OSIS">Bible.French</refSystem>
		</work>
	</header>
	.....
	<reference osisRef="gen:Ps.45.3"/>  
	<reference osisRef="kjv:Ps.45.3"/>
	<reference osisRef="niv:Ps.45.3"/>
	<reference osisRef="nivWorkWithFrenchRefSystem:Ps.44.3"/>  	
	....
</osisText>


All of the above references can be expanded to a "full form" as a single
string as the following based on the values in the header associated
with the "alias". (same order as above):
Bible:Ps.45.3
Bible.kjv:Ps.45.3
Bible.niv:Ps.45.3
Bible.French[Bible.niv]:Ps.44.3 <!-- This is where I ran into trouble!
-->

PROPOSED SOLUTION: Use the alias in the namespace position (a single
string with no ".") that points to a <work> element that defines a
specific work in the <identifier> element and optionally a reference
system in the <refSystem> element.  When creating a "full formed" and
expanded, single string for use outside the availability of the header
by substituting the values from identifier and refSystem for the alias
do the following:
A) If there is no refSystem specified or if the refSystem is identical
to the left part of the identifier or if the refSystem is identical to
the identifier the simply use the identifier in <work> as the
"namespace".  Form: identifier:canonical@grain-canonical@grain
B) If the identifier is identical to the left part of the refSystem
specified then use the refSystem as the "namespace".  Form:
refSystem:canonical@grain-canonical@grain
C) If neither A nor B apply then use the following form
refSystem:[identifier]canonical@grain-canonical@grain (Does anyone have
another way to express this same information?)  (I can go with any of
the forms previously devised that include a way to indicate both the
refSystem and the identifier of the work.)

This seems like a case that will come up infrequently and only applies
to references that need to stand outside the context of an OSIS document
with its header.  (Otherwise the alias encapsulates the work and
reference system.)

Having a single string that fully and unambiguously represents a
reference that can be used outside a document is important to me.  With
this proposal we would ALWAYS have a simple uncomplicated form in the
document and a simple form external to the document for a majority of
the cases.


3) ISSUE: There is no way of knowing when an identifier in the
"namespace" defines a new reference system that requires a
transformation between it and the next higher identifier in the
"namespace".  In many cases the additional identifier simply indicate a
different date and need not imply a different set of reference system
identifiers.  

PROPOSED SOLUTION: If we were to adopt a naming convention to indicate
if an identifier requires a transformation or that the additional
identifier in the "namespace" simply specifies a more specific work that
supports the reference system of the identifiers to the left of it in
the "namespace".

Bible.niv:Ps.45.3 can be used as Bible:Ps.45.3 with out transformation
because we give "niv" a lower case first character.
Bible.French.lsv:Ps.44.3 does not require a transformation to be used as
Bible.French:Ps.44.3 but would require a transformation to go to
Bible:Ps.45.3.  (In this case a different chapter number would apply.)
(I don't actually have an LSV Bible but I think this is an accurate
representation of the difference in the numbering of the Psalms.)

With out such a convention AND with the ELEMINATION of the reference
system concept there will be NO general reference systems in practice
even if the same identifiers are used because each identifier will have
to be checked to see if it means the same thing in more work specific
"namespace" as it does in a more general "namespace".
(Bible.tev:Matt.1.1 would only be known to be equivalent to
Bible:Matt.1.1 after the need for a transformation was checked.  If we
adopt the meaning of lower case "t" in "tev" to mean that all references
in Bible.tev are also compatible and interchangeable with those in
"Bible", this issue would be solved.


Do you guys agree with these additions to Harry's reference strategy?

Todd