<div style="font-family: Arial, sans-serif; font-size: 14px;">Here's a link to the VMRCRE which Troy mentioned.<br><br><a href="https://vmrcre.org/">VMR CRE - Virtual Manuscript Room Collaborative Research Environment - Virtual Manuscript Room Collaborative Research Environment (VMR CRE)</a><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div>
<div class="protonmail_signature_block" style="font-family: Arial, sans-serif; font-size: 14px;">
    <div class="protonmail_signature_block-user">It may be of wider interest than the particular technical point about versification data.<br><br>Best regards,<br><br>David
    </div>
    <div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div>
    <div class="protonmail_signature_block-proton">
        Sent with <a target="_blank" href="https://proton.me/mail/home">Proton Mail</a> secure email.
    </div>
</div>
<div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div class="protonmail_quote">
        On Monday, January 27th, 2025 at 4:00 PM, Troy A. Griffitts <scribe@crosswire.org> wrote:<br>
        <blockquote class="protonmail_quote" type="cite">
            
    <p>Hey guys.  I recently had to port the mapping work done in
      VersificationMgr for use in the VMRCRE and had to fully understand
      the scheme and syntax used in the good work done by Костя on this
      a few years back.<br>
      <br>
      It was a bit difficult for me to keep each component straight in
      my mind initially so during my port, I created a class with clear
      property names to hold each value, and an import format which
      makes it clear what values do what.  Here are the lines of code
      for reference:<br>
      <br>
      This is the VMRCRE equivelant to a canon.h file (MTNU: the
      Masoretic OT + Nestle/Aland NT) and has mappings between the MTNU
      and the LXXNU (LXX = Göttingen/Rahlfs) versifications under the
      <mappings> section near the end:<br>
      <br>
      <a href="https://crosswire.org/svn/community/trunk/contrib/v11ns/MTNU.xml" class="moz-txt-link-freetext" target="_blank" rel="noreferrer nofollow noopener">https://crosswire.org/svn/community/trunk/contrib/v11ns/MTNU.xml</a></p>
    <p><br>
    </p>
    <p>Port of VersificationMgr with class to hold the mappings section:<br>
      <br>
<a href="https://git.crosswire.org/main/crosswire-java/-/blob/master/src/org/crosswire/sword/mgr/VersificationMgr.java#L233" class="moz-txt-link-freetext" target="_blank" rel="noreferrer nofollow noopener">https://git.crosswire.org/main/crosswire-java/-/blob/master/src/org/crosswire/sword/mgr/VersificationMgr.java#L233</a><br>
    </p>
    <p>Hope this is helpful,</p>
    <p>Troy</p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 1/24/25 3:11 PM, DM Smith wrote:<br>
    </div>
    <blockquote type="cite">
      
      <br id="lineBreakAtBeginningOfMessage">
      <div><br>
        <blockquote type="cite">
          <div>On Jan 23, 2025, at 6:40 PM, Arnaud Vié
            <a href="mailto:unas.zole+avie@gmail.com" class="moz-txt-link-rfc2396E" rel="noreferrer nofollow noopener"><unas.zole+avie@gmail.com></a> wrote:</div>
          <br class="Apple-interchange-newline">
          <div>
            <div dir="ltr"><br>
              <div class="gmail_quote gmail_quote_container">
                <blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">
                  <div class="gmail_quote">
                    <div class="gmail_attr" dir="ltr">Le jeu. 23 janv.
                      2025 à 22:18, Fr Cyrille <<a class="moz-txt-link-freetext" target="_blank" href="mailto:fr.cyrille@tiberiade.be" rel="noreferrer nofollow noopener">fr.cyrille@tiberiade.be</a>>
                      a écrit :<br>
                    </div>
                    <blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">
                      <div> So I think that for versifications, catholic
                        catholic2 and LXX there is no mapping (which
                        would explain some of the problems I've had
                        displaying in parallel?).<br>
                        In the other v11n files I see an entry by
                        instance in vulg:<br>
                        unsigned char mappings_vulg[] = {<br>
                        <br>
                        If someone can explain or give me a
                        documentation to understand how it works, and if
                        this is where the mapping takes place, I'd like
                        to work on it. Especially as it should be
                        possible to use Arnaud's work?<br>
                      </div>
                    </blockquote>
                  </div>
                </blockquote>
                <div><br>
                </div>
                <div>
                  <div>You're correct Cyrille, the mapping data is in
                    this char array defined with the versifications in
                    the canon_*.h files.</div>
                  <div>This array is injected (for the versifications
                    which have one) and decoded within
                    versificationmgr.cpp.</div>
                  <div><br>
                  </div>
                  <div>The format of this char array is really obscure
                    though, and it's completely different from the
                    format of mappings used in jsword (which is a lot
                    clearer and a lot easier to edit and maintain).<br>
                  </div>
                  <div>From what I understand in the code ("// parse
                    mappings" section of the loadFromSBook method in
                    versificationmgr.cpp) and the canon_vulg.h example :</div>
                </div>
              </div>
            </div>
          </div>
        </blockquote>
        <div><br>
        </div>
        SWORD is built for speed. The format is a C string (characters
        followed by a null). SWORD’s format is meant to be obscure to
        force the use of SWORD and JSword as the mechanism to read SWORD
        modules.</div>
      <div><br>
      </div>
      <div>JSword is meant to be in lock step with the formats of SWORD.
        WRT the mapping files, these were developed independently and at
        the same time. I deemed it too hard at the time to bring JSword
        back into alignment w SWORD’s format. JSword’s format is human
        readable, external, easily maintainable and is read when needed.</div>
      <div><br>
      </div>
      <div>
        <blockquote type="cite">
          <div>
            <div dir="ltr">
              <div class="gmail_quote gmail_quote_container">
                <div>
                  <div><br>
                  </div>
                  <div>1.<br>
                  </div>
                  <div>The array starts with a sequence of book names,
                    which are the books present in this bible and absent
                    from KJV.</div>
                  <div>Each such name is a sequence of letters followed
                    by a null character serving as delimiter.<br>
                  </div>
                  <div>In canon_vulg, thoses are the <br>
                    'E', 'p', 'J', 'e', 'r', 0,<br>
                    'P', 'r', 'A', 'z', 'a', 'r', 0,<br>
                    'S', 'u', 's', 0,<br>
                    'B', 'e', 'l', 0,</div>
                  <div><br>
                  </div>
                  <div>2. Then, you have an additional null character
                    indicating the end of that first section - the rest
                    of the array is encoded completely differently.</div>
                  <div><br>
                  </div>
                  <div>3. The rest of the array is meant to be split in
                    sequences of 7 numbers, each such 7-number sequence
                    corresponding to a mapping rule.<br>
                  </div>
                  <div>For example, this is a mapping rule :</div>
                  <div>21,  4,   9,   10,  4,   8,   0,</div>
                  <div><br>
                  </div>
                  <div>First digit indicates the book (index in the
                    sequence of books, starting at 1). In vulg, book 21
                    is Psalms.</div>
                  <div>The next 3 digits indicate the destination of the
                    mapping. "4,9,10" corresponds to chapter 4, verses 9
                    to 10.<br>
                  </div>
                  <div>The final 3 digits are the source of the mapping.
                    "4,8,0" corresponds to chapter 4, verse 8 alone.</div>
                  <div>So this rule I used as example denotes that
                    verses Ps 4:9-10 of KJV are mapped to Ps 4:8 in
                    Vulg.<br>
                  </div>
                  <div>Which corresponds indeed to one rule that is
                    present in the jsword mapping file.</div>
                  <div><br>
                  </div>
                  <div><br>
                  </div>
                  <div>I guess I could try to build a converter to
                    export the jsword mapping properties files into this
                    format, so that we could indeed add the Catholic and
                    Catholic2 mappings that I spent hours building for
                    the AndBible jsword fork.</div>
                </div>
              </div>
            </div>
          </div>
        </blockquote>
        <div><br>
        </div>
        That would be greatly appreciated!</div>
      <div><br>
        <blockquote type="cite">
          <div>
            <div dir="ltr">
              <div class="gmail_quote gmail_quote_container">
                <div>
                  <div><br>
                  </div>
                  <div>But going forward, for maintaining
                    versifications, it would be a lot better to have a
                    central way of defining all our versifications and
                    all their mappings in an easily readable and
                    editable format (maybe the one defined by the
                    Copenhagen Alliance, cf <a class="moz-txt-link-freetext" target="_blank" href="https://github.com/Copenhagen-Alliance/versification-specification/blob/master/versification-mappings/json-schema/versification_schema.json" rel="noreferrer nofollow noopener">https://github.com/Copenhagen-Alliance/versification-specification/blob/master/versification-mappings/json-schema/versification_schema.json</a>
                    ), serving as a source of truth for both sword and
                    jsword. Because even just looking at this Vulg
                    versifications, the mapping have vastly diverged
                    between sword and jsword...</div>
                </div>
              </div>
            </div>
          </div>
        </blockquote>
      </div>
      <div><br>
      </div>
      <div>IIRC, the mapping of deuterocanonical material I don’t think
        was ever completed.</div>
      <div><br>
        <blockquote type="cite">
          <div>
            <div dir="ltr">
              <div class="gmail_quote gmail_quote_container">
                <div>
                  <div><br>
                  </div>
                  <div>Even if we don't go as far as implementing the
                    full modular versification system that I would like
                    to build, if at the very least we could have a
                    central, easy-to-maintain place to manage all our
                    versifications, and then could easily export them to
                    both sword and jsword, that would be a huge step
                    forward.</div>
                </div>
              </div>
            </div>
          </div>
        </blockquote>
        <div><br>
        </div>
        I think Chris Little developed an external format that would
        build the canon_*.h files. I don’t remember if there was
        something like this that was developed for mappings.</div>
      <div><br>
        <blockquote type="cite">
          <div>
            <div dir="ltr">
              <div class="gmail_quote gmail_quote_container">
                <div>
                  <div><br>
                  </div>
                  <div>Regards,</div>
                  <div><br>
                  </div>
                  <div>Arnaud</div>
                </div>
                <div> </div>
              </div>
            </div>
            _______________________________________________<br>
            sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org" class="moz-txt-link-abbreviated" rel="noreferrer nofollow noopener">sword-devel@crosswire.org</a><br>
            <a href="http://crosswire.org/mailman/listinfo/sword-devel" class="moz-txt-link-freetext" target="_blank" rel="noreferrer nofollow noopener">http://crosswire.org/mailman/listinfo/sword-devel</a><br>
            Instructions to unsubscribe/change your settings at above
            page<br>
          </div>
        </blockquote>
      </div>
      <br>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org" class="moz-txt-link-abbreviated" rel="noreferrer nofollow noopener">sword-devel@crosswire.org</a>
<a href="http://crosswire.org/mailman/listinfo/sword-devel" class="moz-txt-link-freetext" target="_blank" rel="noreferrer nofollow noopener">http://crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page
</pre>
    </blockquote>
  


        </blockquote><br>
    </div>