Concurrent hierarchies
From Open Siddur Project Development Wiki
The text repository contains an unordered set of text segments. A selection incorporates segments from the text repository by reference and imposes an order on them.
A view represents a single structural hierarchy. Each view is attached to a selection by being contained within the same j:concurrent element.
Contents |
Defining a selection
The j:selection element defines a selection, which is simply a collection of references into the text repository. The references are made using tei:ptr elements, whose @target attributes reference the segments. If an external resource has to be included in a specific place, it must be referenced using a tei:ptr whose @target attribute references the external resource. Each pointer in the selection list must have its own identifier.
Example
The example is the selection from the Dayyenu example cited above:
<j:selection> <tei:ptr xml:id="se1" target="#d14e3207"/> <tei:ptr xml:id="se2" target="#d14e3214"/> <tei:ptr xml:id="se3" target="#d14e3223"/> <tei:ptr xml:id="se4" target="#d14e3232"/> <tei:ptr xml:id="se5" target="#d14e3244"/> <tei:ptr xml:id="se6" target="#d14e3251"/> <tei:ptr xml:id="se7" target="#d14e3262"/> <tei:ptr xml:id="se8" target="#d14e3244"/> <tei:ptr xml:id="se9" target="#d14e3273"/> <tei:ptr xml:id="se10" target="#d14e3283"/> <tei:ptr xml:id="se11" target="#d14e3244"/> <tei:ptr xml:id="se12" target="#d14e3295"/> <tei:ptr xml:id="se13" target="#d14e3304"/> <tei:ptr xml:id="se14" target="#d14e3244"/> <tei:ptr xml:id="se15" target="#d14e3321"/> <tei:ptr xml:id="se16" target="#d14e3334"/> <tei:ptr xml:id="se17" target="#d14e3244"/> <tei:ptr xml:id="se18" target="#d14e3350"/> <tei:ptr xml:id="se19" target="#d14e3363"/> <tei:ptr xml:id="se20" target="#d14e3244"/> <tei:ptr xml:id="se21" target="#d14e3378"/> <tei:ptr xml:id="se22" target="#d14e3389"/> <tei:ptr xml:id="se23" target="#d14e3244"/> <tei:ptr xml:id="se24" target="#d14e3403"/> <tei:ptr xml:id="se25" target="#d14e3414"/> <tei:ptr xml:id="se26" target="#d14e3244"/> <tei:ptr xml:id="se27" target="#d14e3433"/> <tei:ptr xml:id="se28" target="#d14e3448"/> <tei:ptr xml:id="se29" target="#d14e3244"/> <tei:ptr xml:id="se30" target="#d14e3462"/> <tei:ptr xml:id="se31" target="#d14e3473"/> <tei:ptr xml:id="se32" target="#d14e3244"/> <tei:ptr xml:id="se33" target="#d14e3490"/> <tei:ptr xml:id="se34" target="#d14e3503"/> <tei:ptr xml:id="se35" target="#d14e3244"/> <tei:ptr xml:id="se36" target="#d14e3519"/> <tei:ptr xml:id="se37" target="#d14e3532"/> <tei:ptr xml:id="se38" target="#d14e3244"/> <tei:ptr xml:id="se39" target="#d14e3549"/> <tei:ptr xml:id="se40" target="#d14e3562"/> <tei:ptr xml:id="se41" target="#d14e3244"/> <tei:ptr xml:id="se42" target="#d14e3576"/> <tei:ptr xml:id="se43" target="#d14e3588"/> <tei:ptr xml:id="se44" target="#d14e3244"/> <!-- al ahat...--> <tei:ptr xml:id="se45" target="#d14e3608"/> <tei:ptr xml:id="se46" target="#d14e3617"/> <tei:ptr xml:id="se47" target="#d14e3624"/> <tei:ptr xml:id="se48" target="#d14e3631"/> <tei:ptr xml:id="se49" target="#d14e3639"/> <tei:ptr xml:id="se50" target="#d14e3648"/> <tei:ptr xml:id="se51" target="#d14e3655"/> <tei:ptr xml:id="se52" target="#d14e3662"/> <tei:ptr xml:id="se53" target="#d14e3673"/> <tei:ptr xml:id="se54" target="#d14e3684"/> <tei:ptr xml:id="se55" target="#d14e3693"/> <tei:ptr xml:id="se56" target="#d14e3702"/> <tei:ptr xml:id="se57" target="#d14e3715"/> <tei:ptr xml:id="se58" target="#d14e3724"/> <tei:ptr xml:id="se59" target="#d14e3735"/> <tei:ptr xml:id="se60" target="#d14e3747"/> <tei:ptr xml:id="se61" target="#d14e3758"/> <tei:ptr xml:id="se62" target="#d14e3767"/> <tei:ptr xml:id="se63" target="#d14e3778"/> </j:selection>
Defining a view
A view represents a single hierarchy that is defined over a selection. Structural hierarchies include paragraphs, sentences, verse line groups, verse lines, lists and items, choices with options, and translation linkages.
Each view is represented by a j:view element inside the same j:concurrent containing its own j:selection. The @type attribute on the j:view element specifies what type of hierarchy is represented inside. Valid values include:
- p (paragraph, possibly with sentences)
- s (sentences)
- lg (line group with lines)
- list (lists with items)
- choice (choices with options)
Each element inside the view references pointers in the j:selection. If these references refer to sequential targets in the selection, the TEI-defined XPointer range scheme may be used.
Only the parts of the selection that can be represented by the view must have pointers.
When the selection includes pointers to external resources, it is important to ensure that the external resource's hierarchy makes sense in whatever place it is given in the view. If the external resource cannot be represented in the view, its pointer should be omitted from the view.
Example
In the Dayyenu example, there are three hierarchies: a paragraph-sentence hierarchy, a line group-line hierarchy (the song), and a list-item hierarchy (the paragraph "על אחת כמה וכמה"). The prose (paragraph-sentence) hierarchy overlaps the remaining two.
In the example below, the sentence hierarchy is represented as a separate view from the paragraph hierarchy. The paragraph hierarchy references the sentence view.
<j:concurrent> <!-- selection goes here --> <j:view type="p"> <p xml:id="p1"><ptr target="#s1"/></p> <p xml:id="p2"><ptr target="#range(s2, s15)"/></p> <p xml:id="p3"><ptr target="#range(s16,s31)"/></p> </j:view> <j:view type="s"> <s xml:id="s1"><ptr target="#se1 #se2"/></s> <s xml:id="s2"><ptr target="#range(se3, se5)"/></s> <s xml:id="s3"><ptr target="#range(se6, se8)"/></s> <s xml:id="s4"><ptr target="#range(se9, se11)"/></s> <s xml:id="s5"><ptr target="#range(se12, se14)"/></s> <s xml:id="s6"><ptr target="#range(se15, se17)"/></s> <s xml:id="s7"><ptr target="#range(se18, se20)"/></s> <s xml:id="s8"><ptr target="#range(se21, se23)"/></s> <s xml:id="s9"><ptr target="#range(se24, se26)"/></s> <s xml:id="s10"><ptr target="#range(se27, se29)"/></s> <s xml:id="s11"><ptr target="#range(se30, se32)"/></s> <s xml:id="s12"><ptr target="#range(se33, se35)"/></s> <s xml:id="s13"><ptr target="#range(se36, se38)"/></s> <s xml:id="s14"><ptr target="#range(se39, se41)"/></s> <s xml:id="s15"><ptr target="#range(se42, se44)"/></s> <!-- al ahat --> <s xml:id="s16"><ptr target="#range(se45, se47)"/></s> <s xml:id="s17"><ptr target="#se48"/></s> <s xml:id="s18"><ptr target="#se49"/></s> <s xml:id="s19"><ptr target="#se50"/></s> <s xml:id="s20"><ptr target="#se51"/></s> <s xml:id="s21"><ptr target="#se52"/></s> <s xml:id="s22"><ptr target="#se53"/></s> <s xml:id="s23"><ptr target="#se54"/></s> <s xml:id="s24"><ptr target="#se55"/></s> <s xml:id="s25"><ptr target="#se56"/></s> <s xml:id="s26"><ptr target="#se57"/></s> <s xml:id="s27"><ptr target="#se58"/></s> <s xml:id="s28"><ptr target="#se59"/></s> <s xml:id="s29"><ptr target="#se60"/></s> <s xml:id="s30"><ptr target="#se61"/></s> <s xml:id="s31"><ptr target="#se62 #se63"/></s> </j:view> <j:view type="lg"> <lg xml:id="lg1"> <l xml:id="l1"><ptr target="#se3"/></l> <l xml:id="l2"><ptr target="#se4"/></l> <l xml:id="l3"><ptr target="#se5"/></l> </lg> <lg xml:id="lg2"> <l xml:id="l4"><ptr target="#se6"/></l> <l xml:id="l5"><ptr target="#se7"/></l> <l xml:id="l6"><ptr target="#se8"/></l> </lg> <lg xml:id="lg3"> <l xml:id="l7"><ptr target="#se9"/></l> <l xml:id="l8"><ptr target="#se10"/></l> <l xml:id="l9"><ptr target="#se11"/></l> </lg> <lg xml:id="lg4"> <l xml:id="l10"><ptr target="#se12"/></l> <l xml:id="l11"><ptr target="#se13"/></l> <l xml:id="l12"><ptr target="#se14"/></l> </lg> <lg xml:id="lg5"> <l xml:id="l13"><ptr target="#se15"/></l> <l xml:id="l14"><ptr target="#se16"/></l> <l xml:id="l15"><ptr target="#se17"/></l> </lg> <lg xml:id="lg6"> <l xml:id="l16"><ptr target="#se18"/></l> <l xml:id="l17"><ptr target="#se19"/></l> <l xml:id="l18"><ptr target="#se20"/></l> </lg> <lg xml:id="lg7"> <l xml:id="l19"><ptr target="#se21"/></l> <l xml:id="l20"><ptr target="#se22"/></l> <l xml:id="l21"><ptr target="#se23"/></l> </lg> <lg xml:id="lg8"> <l xml:id="l22"><ptr target="#se24"/></l> <l xml:id="l23"><ptr target="#se25"/></l> <l xml:id="l24"><ptr target="#se26"/></l> </lg> <lg xml:id="lg9"> <l xml:id="l25"><ptr target="#se27"/></l> <l xml:id="l26"><ptr target="#se28"/></l> <l xml:id="l27"><ptr target="#se29"/></l> </lg> <lg xml:id="lg10"> <l xml:id="l28"><ptr target="#se30"/></l> <l xml:id="l29"><ptr target="#se31"/></l> <l xml:id="l30"><ptr target="#se32"/></l> </lg> <lg xml:id="lg11"> <l xml:id="l31"><ptr target="#se33"/></l> <l xml:id="l32"><ptr target="#se34"/></l> <l xml:id="l33"><ptr target="#se35"/></l> </lg> <lg xml:id="lg12"> <l xml:id="l34"><ptr target="#se36"/></l> <l xml:id="l35"><ptr target="#se37"/></l> <l xml:id="l36"><ptr target="#se38"/></l> </lg> <lg xml:id="lg13"> <l xml:id="l37"><ptr target="#se39"/></l> <l xml:id="l38"><ptr target="#se40"/></l> <l xml:id="l39"><ptr target="#se41"/></l> </lg> <lg xml:id="lg14"> <l xml:id="l40"><ptr target="#se42"/></l> <l xml:id="l41"><ptr target="#se43"/></l> <l xml:id="l42"><ptr target="#se44"/></l> </lg> </j:view> <j:view type="list"> <list xml:id="list1"> <item xml:id="item1"><ptr target="#se48"/></item> <item xml:id="item2"><ptr target="#se49"/></item> <item xml:id="item3"><ptr target="#se50"/></item> <item xml:id="item4"><ptr target="#se51"/></item> <item xml:id="item5"><ptr target="#se52"/></item> <item xml:id="item6"><ptr target="#se53"/></item> <item xml:id="item7"><ptr target="#se54"/></item> <item xml:id="item8"><ptr target="#se55"/></item> <item xml:id="item9"><ptr target="#se56"/></item> <item xml:id="item10"><ptr target="#se57"/></item> <item xml:id="item11"><ptr target="#se58"/></item> <item xml:id="item12"><ptr target="#se59"/></item> <item xml:id="item13"><ptr target="#se60"/></item> <item xml:id="item14"><ptr target="#se61"/></item> <item xml:id="item15"><ptr target="#se62 #se63"/></item> </list> </j:view> </j:concurrent>
|