[osis-core] references with grains

Steven J. DeRose osis-core@bibletechnologieswg.org
Wed, 15 Oct 2003 13:01:25 -0400


At 11:12 -0400 2003-10-13, Patrick Durusau wrote:
>Todd,
>
>Will defer to Steve when he gives a canonical answer but here goes:

Yeah, right. Let me go get my orange hat....

>
>Todd Tillinghast wrote:
>>Consider the following references:
>>
>><reference osisRef="1Tim.3.8@s[They]"/>
>><reference osisRef="1Tim.3.8@s[They]-1Tim.3.8@s[money.]"/>
>>
>>When the last string in 1Tim.3.8 is "money."
>>
>>Question 1: Are the two references equivalent?
>>
>
>What do you mean by equivalent?
>
>You get the same content (possibly) but that depends on the behavior 
>of the application. One that returns verses in response to this 
>query will give the same content but that does not mean the 
>references are equivalent.
>
>>Question 2: Are we saying that when a grain in present in the first part
>>of a range that it is the starting with the text in the brackets and
>>with the second part of the range that text in the brackets is the
>Assuming you mean to say "end of the text" after "brakets is the..." 
>I think the answer is yes.
>
>>Question 3: If you specify an osisRef with NO range AND a grain does
>>that mean a) a point before the string in the brackets
>>b) the contents within the brackets
>>c) the text stating at the first of the text in the brackets to the end
>>of the verse.
>>
>
>I think c) but what you get from that point on (to the end of the 
>verse, etc.) is application specific (or chosen by the user).
>

So far we've left it completely ambiguous where a grain ends -- I've 
found this vaguely troubling, but not high enough priority to worry 
about, given we're the only kids on the XML block who have *any* way 
to point to things smaller than elements at all.

I would suggest that if there *is* a range encoded, the result should 
extend from the start of the string of the grain of the expression 
left of the hyphen, up to the end of the string of the grain of the 
expression right of the hyphen.

If there is *not* a range, just a grain on the end of a verse or 
similar ref, then it seems to me the "default" result should be either

a) the scope of the string itself (per example above, just the word "They")

    or

b) from the start of the grain ("T") to the end of the unit specified 
by the osisRef up to but not including the grain (per example above, 
verse 8).

Option (a) is easier to explain and slightly easier to implement. I 
don't see much value in (b).

I suppose there is also

c) The point immediately preceding the "T". No scope, just a point location.

I wouldn't object strongly to that; with a little arm-twisting I 
might even get to like it.

Thoughts?

S