<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Thanks, Troy!</p>
    <p>These numbers below look excellent! I will look into using the
      VerseKey-based mapping approach for Ezra Project. However, it's
      going to be a significant refactoring effort, so I'm probably not
      going to get back with implementation-based feedback any time
      soon. I just created an <a moz-do-not-send="true"
        href="https://github.com/tobias-klein/ezra-project/issues/57">Issue
        for Ezra Project</a> and I think this will be part of 0.14.0
      (The release after the one I'm working on currently).</p>
    <p>Regarding a shared/common bookmarking and tagging concept the
      question is whether we only talk about a shared "export / import
      format" or whether we talk about a complete persistence backend
      that could be shared. Currently I'm storing my user data in a
      SQLite database and it works well (including automated migrations
      in case of db schema changes that are applied with new versions of
      the application). I could imagine that even the discussion about
      the storage backend could take a while in terms of alignment. I
      realize that developers have quite different taste when it comes
      to stuff like this. Also the question would be why this should be
      limited to tags. In general it also applies to any other user data
      like notes or user markup for the bible text.<br>
    </p>
    <p>Something more realistic than a shared storage backend would be a
      shared export / import format. This I think may be worthwhile to
      pursue. We could simply agree on a certain json or xml format for
      this.<br>
      @all: Who would be interested in this in general? We could start
      with tags / topical verse lists.<br>
    </p>
    <p>The data model in Ezra Project is currently rather simple. It's
      just a flat list of tags where each tag can be assigned to any
      verse. In my database I currently have three tables to support
      this. Tags (the actual list of topics/keywords), VerseTags (the
      join/assignment table) and VerseReferences (the
      abstract/module-independent objects tags get assigned to).</p>
    <p>A tree introduces additional challenges in the user interface.
      I've been thinking about introducing a tree structure for the
      tags, not anytime soon though ... it's a rather big effort from a
      user interface perspective.</p>
    <p>I'm certainly curious about further input to this discussion.<br>
    </p>
    <p>Tobias<br>
    </p>
    <div class="moz-cite-prefix">On 5/7/20 6:54 PM, Troy A. Griffitts
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:2295ee31-33d2-e782-081d-daec596992e6@crosswire.org">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p>Dear Tobias,</p>
      <p>I would recommend KJVA, so you can get the Apocrypha.  I
        believe this is the common base Костя uses to convert between
        systems.  Костя has done a great job at optimization.  I've
        updated the verseconvert.cpp example to allow ranges.  Here is a
        timing for the entire book of Psalms:</p>
      <p>[scribe@localhost classes]$ time ./verseconvert Ps Wycliffe
        FreGeneve1669 &gt; /dev/null<br>
        <br>
        real    0m0.195s<br>
        user    0m0.162s<br>
        sys    0m0.033s<br>
      </p>
      <p>My guess is that most of that time is simply with SWORD engine
        initialization, discovering and opening my library.</p>
      <p>Converting all verses in both Old and New Testament:</p>
      <p>[scribe@localhost classes]$ time ./verseconvert Gen-Rev
        Wycliffe FreGeneve1669 &gt; /dev/null<br>
        <br>
        real    0m0.645s<br>
        user    0m0.601s<br>
        sys    0m0.042s<br>
      </p>
      <p>Hope this is helpful.  Looking forward to your work.  We've had
        discussions over the many years of our project about sharing
        bookmarking and similar data between apps, but we all had
        different ideas of what we'd like.  BibleCS (our Windows classic
        app) concentrates on allowing verse groups and trees of groups
        so users can create trees of topic.  Other apps extend this to
        allow comments and notes at each reference, including a specific
        module name with the reference.  We've all had different data
        formats for our bookmarking materials.  Since your app centers
        on tagging (which I would place in the same category as
        bookmarking), I would love to hear what you come up with and if
        it encompasses everything which all of our frontends desire to
        provide their users.  Maybe we can make another go at a shared
        "bookmarking" or "tagging" concept and push that concept back
        into the engine so all app can share and take advantage of your
        functionality, if you'd be willing.</p>
      <p>Troy</p>
      <p><br>
      </p>
      <div class="moz-cite-prefix">On 5/7/20 9:07 AM, Tobias Klein
        wrote:<br>
      </div>
      <blockquote type="cite"
        cite="mid:BC1096DE-9EA2-447A-96D5-FB4832ED3AA2@tklein.info">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        Thanks Troy!
        <div class=""><br class="">
        </div>
        <div class="">Besides comparing verses in different translations
          my primary use case is the following:</div>
        <div class="">Establish „unique verse reference“ objects that I
          can use to assign tags independent of the specific
          translation.</div>
        <div class=""><br class="">
        </div>
        <div class="">Currently I’m doing this by determining the
          „absolute verse number“ for the respective verse I’m tagging.</div>
        <div class="">Then at the point when the „verse reference
          object“ (a database entry) is created, the absolute verse
          number both for English and Hebrew versification are
          determined based on my mapping tables.</div>
        <div class=""><br class="">
        </div>
        <div class="">Then, when looking up tags for the currently
          selected verses I can map the correct „verse reference object“
          to each verse in the currently selected translation (based on
          the respective absolute verse number).</div>
        <div class=""><br class="">
        </div>
        <div class="">If I migrate to the Sword VerseKey approach I
          would change my concept in the following way:</div>
        <div class=""><br class="">
        </div>
        <div class="">1) Use KJV verse references (chapter + verse) as
          unique identifiers for all „abstract verse reference“ objects.
          (Does KJV make sense as a „ reference versification“)</div>
        <div class="">2) When opening a translation that does not follow
          the KJV theme - map all verse references to the KJV variants
          and use the KJV verse references (chapter + verse) as a key to
          find the correct „verse reference“ objects in my database.</div>
        <div class=""><br class="">
        </div>
        <div class="">What’s the performance of the SWORD VerseKey based
          mapping function you described below?</div>
        <div class=""><br class="">
        </div>
        <div class="">How would this work if I need to perform a mapping
          operation on all verses of a large book like Psalms? (2461
          verses).</div>
        <div class="">Would this operation come back in less than a
          second?</div>
        <div class=""><br class="">
        </div>
        <div class="">If not I would have to think about some caching
          mechanism in my verse reference objects. Currently I’m caching
          the absolute verse numbers for English and Hebrew for all
          tagged verse references.</div>
        <div class="">With the new concept I could cache the actual
          chapter/verse references for all known versification systems.</div>
        <div class=""><br class="">
        </div>
        <div class="">Thanks for your help on this!</div>
        <div class=""><br class="">
        </div>
        <div class="">Best regards,</div>
        <div class="">Tobias</div>
        <div class="">
          <div><br class="">
            <blockquote type="cite" class="">
              <div class="">Am 06.05.2020 um 18:47 schrieb Troy A.
                Griffitts &lt;<a href="mailto:scribe@crosswire.org"
                  class="" moz-do-not-send="true">scribe@crosswire.org</a>&gt;:</div>
              <br class="Apple-interchange-newline">
              <div class=""><span style="caret-color: rgb(0, 0, 0);
                  font-family: Helvetica; font-size: 12px; font-style:
                  normal; font-variant-caps: normal; font-weight:
                  normal; letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">Yes, as Peter has pointed
                  out, SWORD includes a facility for mapping, graciously
                  contributed by Костя Маслюк<span
                    class="Apple-converted-space"> </span></span><a
                  class="moz-txt-link-rfc2396E"
                  href="mailto:kostyamaslyuk@gmail.com" style="color:
                  purple; text-decoration: underline; font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; orphans: auto; text-align:
                  start; text-indent: 0px; text-transform: none;
                  white-space: normal; widows: auto; word-spacing: 0px;
                  -webkit-text-size-adjust: auto;
                  -webkit-text-stroke-width: 0px;"
                  moz-do-not-send="true">&lt;kostyamaslyuk@gmail.com&gt;</a><span
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class=""><span
                    class="Apple-converted-space"> </span>and should
                  "just work" when setting a key from one module to
                  another, e.g, kjv-&gt;setKey(wycliffe-&gt;getKey()). 
                  It's not quite that simple, because there isn't always
                  a 1:1 mapping, so if you want full support, you'll
                  have to see if a bound is set on the receiving
                  module's key.</span><br style="caret-color: rgb(0, 0,
                  0); font-family: Helvetica; font-size: 12px;
                  font-style: normal; font-variant-caps: normal;
                  font-weight: normal; letter-spacing: normal;
                  text-align: start; text-indent: 0px; text-transform:
                  none; white-space: normal; word-spacing: 0px;
                  -webkit-text-stroke-width: 0px; text-decoration:
                  none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">The mapping data, as with
                  everything, is not exhaustive, but we'd certainly like
                  to extend it to meet cases which you run into which
                  aren't yet supported.</span><br style="caret-color:
                  rgb(0, 0, 0); font-family: Helvetica; font-size: 12px;
                  font-style: normal; font-variant-caps: normal;
                  font-weight: normal; letter-spacing: normal;
                  text-align: start; text-indent: 0px; text-transform:
                  none; white-space: normal; word-spacing: 0px;
                  -webkit-text-stroke-width: 0px; text-decoration:
                  none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">You can see it taken
                  advantage of in example
                  sword/examples/tasks/parallelbibles.cpp, but I've just
                  added a concise example which shows how to use it:</span><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <a
href="http://crosswire.org/svn/sword/trunk/examples/classes/verseconvert.cpp"
                  style="color: purple; text-decoration: underline;
                  font-family: Helvetica; font-size: 12px; font-style:
                  normal; font-variant-caps: normal; font-weight:
                  normal; letter-spacing: normal; orphans: auto;
                  text-align: start; text-indent: 0px; text-transform:
                  none; white-space: normal; widows: auto; word-spacing:
                  0px; -webkit-text-size-adjust: auto;
                  -webkit-text-stroke-width: 0px;" class=""
                  moz-do-not-send="true">http://crosswire.org/svn/sword/trunk/examples/classes/verseconvert.cpp</a><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">Which outputs, e.g.<span
                    class="Apple-converted-space"> </span></span><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">./verseconvert Ps.43.22
                  Wycliffe FreGeneve1669</span><br style="caret-color:
                  rgb(0, 0, 0); font-family: Helvetica; font-size: 12px;
                  font-style: normal; font-variant-caps: normal;
                  font-weight: normal; letter-spacing: normal;
                  text-align: start; text-indent: 0px; text-transform:
                  none; white-space: normal; word-spacing: 0px;
                  -webkit-text-stroke-width: 0px; text-decoration:
                  none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">Psalms 43:22 (Wycliffe)
                  =&gt; Psalms 44:21-Psalms 44:22 (FreGeneve1669)</span><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">Hope this helps,</span><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">Troy</span><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <br style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <div class="moz-cite-prefix" style="caret-color: rgb(0,
                  0, 0); font-family: Helvetica; font-size: 12px;
                  font-style: normal; font-variant-caps: normal;
                  font-weight: normal; letter-spacing: normal;
                  text-align: start; text-indent: 0px; text-transform:
                  none; white-space: normal; word-spacing: 0px;
                  -webkit-text-stroke-width: 0px; text-decoration:
                  none;">On 5/6/20 7:07 AM,<span
                    class="Apple-converted-space"> </span><a
                    class="moz-txt-link-abbreviated"
                    href="mailto:refdoc@gmx.net" style="color: purple;
                    text-decoration: underline;" moz-do-not-send="true">refdoc@gmx.net</a><span
                    class="Apple-converted-space"> </span>wrote:<br
                    class="">
                </div>
                <blockquote type="cite"
cite="mid:-h3p992-gkdbam-bjh0wx-95pxwrjy7n3m-sp0nf8nl5z3nk0oq1ufzun0e-13v7av4gayas7d8y8p-ry1jow7t0xm2-tsuf5daihkpb-qncc4ecbtjirm0ghld-58ng9u7bdi7s-oee1qrds3nydhxreri.1588774058910@email.android.com"
                  style="font-family: Helvetica; font-size: 12px;
                  font-style: normal; font-variant-caps: normal;
                  font-weight: normal; letter-spacing: normal; orphans:
                  auto; text-align: start; text-indent: 0px;
                  text-transform: none; white-space: normal; widows:
                  auto; word-spacing: 0px; -webkit-text-size-adjust:
                  auto; -webkit-text-stroke-width: 0px; text-decoration:
                  none;" class="">I think transparent mapping has been
                  for a while now included in the library. I am not sure
                  how to make it work, but I do think it is there and
                  functioning.<span class="Apple-converted-space"> </span><br
                    class="">
                  <br class="">
                  Peter<br class="">
                  <br class="">
                  Sent from my mobile. Please forgive shortness, typos
                  and weird autocorrects.
                  <div class="quote" style="line-height: 1.5;"><br
                      class="">
                    <br class="">
                    -------- Original Message --------<br class="">
                    Subject: Re: [sword-devel] Versification Mapping<br
                      class="">
                    From: Jamie<span class="Apple-converted-space"> </span><araj@critos.co.uk
                      class=""><br class="">
                      To: 'SWORD Developers' Collaboration Forum'<span
                        class="Apple-converted-space"> </span><sword-devel@crosswire.org
                        class=""><br class="">
                        CC:<span class="Apple-converted-space"> </span><br
                          class="">
                        <br class="">
                        <br type="attribution" class="">
                        <blockquote class="quote" style="margin: 0px 0px
                          0px 0.8ex; border-left-width: 1px;
                          border-left-style: solid; border-left-color:
                          rgb(204, 204, 204); padding-left: 1ex;">
                          <div class="WordSection1" style="page:
                            WordSection1;">
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class="">Hi Tobias,<o:p class=""></o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class="">Not sure that this
                                exactly answers your question, but just
                                in case it’s relevant, Tyndale House
                                have various public domain information
                                available, including material on
                                alternative versification schemes.  The
                                reversification material gives details
                                of how to map LXX, MT and Vulgate
                                schemes on to NRSVA (and also addresses
                                some other schemes which are perhaps
                                less frequently encountered).  It also
                                caters for common variants which
                                basically follow one of these schemes,
                                but which have certain verses split up
                                into subverses.  You can find the data
                                at :-<o:p class=""></o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><a
href="https://github.com/tyndale/STEPBible-Data/blob/master/TVTMS%20-%20Tyndale%20Versification%20Traditions%20with%20Methodology%20for%20Standardisation%20for%20Eng%2BHeb%2BLat%2BGrk%2BOthers%20-%20TyndaleHouse.com%20STEPBible.org%20CC%20BY-NC.txt"
                                moz-do-not-send="true" style="color:
                                purple; text-decoration: underline;"
                                class="">https://github.com/tyndale/STEPBible-Data/blob/master/TVTMS%20-%20Tyndale%20Versification%20Traditions%20with%20Methodology%20for%20Standardisation%20for%20Eng%2BHeb%2BLat%2BGrk%2BOthers%20-%20TyndaleHouse.com%20STEPBible.org%20CC%20BY-NC.txt</a><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""></o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class="">If you do want to make
                                use of it, I’d be very happy to try to
                                answer any questions.<o:p class=""></o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class="">Regards,<o:p class=""></o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class="">ARA “Jamie” Jamieson<o:p
                                  class=""></o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><span
                                style="font-size: 11pt; font-family:
                                Calibri, sans-serif; color: rgb(31, 73,
                                125);" class=""><o:p class=""> </o:p></span></div>
                            <div class="">
                              <div style="border-style: solid none none;
                                border-top-width: 1pt; border-top-color:
                                rgb(225, 225, 225); padding: 3pt 0cm
                                0cm;" class="">
                                <div style="margin: 0cm 0cm 0.0001pt;
                                  font-size: 12pt; font-family:
                                  &quot;Times New Roman&quot;, serif;"
                                  class=""><b class=""><span
                                      style="font-size: 11pt;
                                      font-family: Calibri, sans-serif;"
                                      class="" lang="EN-US">From:</span></b><span
                                    style="font-size: 11pt; font-family:
                                    Calibri, sans-serif;" class=""
                                    lang="EN-US"><span
                                      class="Apple-converted-space"> </span>Tobias
                                    Klein [<a
                                      class="moz-txt-link-freetext"
                                      href="mailto:contact@tklein.info"
                                      style="color: purple;
                                      text-decoration: underline;"
                                      moz-do-not-send="true">mailto:contact@tklein.info</a>]<span
                                      class="Apple-converted-space"> </span><br
                                      class="">
                                    <b class="">Sent:</b><span
                                      class="Apple-converted-space"> </span>05
                                    May 2020 21:19<br class="">
                                    <b class="">To:</b><span
                                      class="Apple-converted-space"> </span>SWORD
                                    Developers' Collaboration Forum<span
                                      class="Apple-converted-space"> </span><a
                                      class="moz-txt-link-rfc2396E"
                                      href="mailto:sword-devel@crosswire.org"
                                      style="color: purple;
                                      text-decoration: underline;"
                                      moz-do-not-send="true">&lt;sword-devel@crosswire.org&gt;</a><br
                                      class="">
                                    <b class="">Subject:</b><span
                                      class="Apple-converted-space"> </span>[sword-devel]
                                    Versification Mapping<o:p class=""></o:p></span></div>
                              </div>
                            </div>
                            <div style="margin: 0cm 0cm 0.0001pt;
                              font-size: 12pt; font-family: &quot;Times
                              New Roman&quot;, serif;" class=""><o:p
                                class=""> </o:p></div>
                            <p style="margin-right: 0cm; margin-left:
                              0cm; font-size: 12pt; font-family:
                              &quot;Times New Roman&quot;, serif;"
                              class="">Hi,<o:p class=""></o:p></p>
                            <p style="margin-right: 0cm; margin-left:
                              0cm; font-size: 12pt; font-family:
                              &quot;Times New Roman&quot;, serif;"
                              class="">I would like to ask a question
                              that I was planning to ask for a while
                              already ...<span
                                class="Apple-converted-space"> </span><br
                                class="">
                              What's the recommended solution of mapping
                              different versification systems?<o:p
                                class=""></o:p></p>
                            <p style="margin-right: 0cm; margin-left:
                              0cm; font-size: 12pt; font-family:
                              &quot;Times New Roman&quot;, serif;"
                              class="">And what working implementations
                              for this are already out there?<br
                                class="">
                              <br class="">
                              I realize that my understanding of
                              versifications has been a bit limited and
                              that's visible in Ezra Project's
                              implementation of the mapping. I am
                              currently only differentiating between two
                              versification systems, namely the English
                              versification (used in most/all (?)
                              English translations) and the Hebrew
                              versification (used in most modern German
                              translations).<o:p class=""></o:p></p>
                            <p style="margin-right: 0cm; margin-left:
                              0cm; font-size: 12pt; font-family:
                              &quot;Times New Roman&quot;, serif;"
                              class="">It's been a few years since I
                              looked into this and I think this has been
                              my source (SBL Handbook of Style)<br
                                class="">
                              <a
href="https://books.google.de/books?id=M_upBwAAQBAJ&amp;pg=PA265&amp;lpg=PA265&amp;dq=appendix+english/hebrew/greek+versification&amp;source=bl&amp;ots=CXVR0J6YrI&amp;sig=ACfU3U3hEIPgNxmmUQW1kZJaRAtHl78L-g&amp;hl=de&amp;sa=X&amp;ved=2ahUKEwilyoPUwp3pAhUrzqYKHVk4BtIQ6AEwAXoECAYQAQ#v=onepage&amp;q=appendix%20english%2Fhebrew%2Fgreek%20versification&amp;f=false"
                                moz-do-not-send="true" style="color:
                                purple; text-decoration: underline;"
                                class="">https://books.google.de/books?id=M_upBwAAQBAJ&amp;pg=PA265&amp;lpg=PA265&amp;dq=appendix+english/hebrew/greek+versification&amp;source=bl&amp;ots=CXVR0J6YrI&amp;sig=ACfU3U3hEIPgNxmmUQW1kZJaRAtHl78L-g&amp;hl=de&amp;sa=X&amp;ved=2ahUKEwilyoPUwp3pAhUrzqYKHVk4BtIQ6AEwAXoECAYQAQ#v=onepage&amp;q=appendix%20english%2Fhebrew%2Fgreek%20versification&amp;f=false</a><o:p
                                class=""></o:p></p>
                            <p style="margin-right: 0cm; margin-left:
                              0cm; font-size: 12pt; font-family:
                              &quot;Times New Roman&quot;, serif;"
                              class="">My current approach in Ezra
                              Project to map between English and Hebrew
                              versification is the following:<o:p
                                class=""></o:p></p>
                            <ul style="margin-bottom: 0cm;" class=""
                              type="disc">
                              <li class="MsoNormal" style="margin: 0cm
                                0cm 0.0001pt; font-size: 12pt;
                                font-family: &quot;Times New
                                Roman&quot;, serif;">I use "absolute
                                verse numbers" in each book.<o:p
                                  class=""></o:p></li>
                              <li class="MsoNormal" style="margin: 0cm
                                0cm 0.0001pt; font-size: 12pt;
                                font-family: &quot;Times New
                                Roman&quot;, serif;">I have mapping
                                tables that basically define offsets for
                                the "absolute verse numbers" (see
                                implementation<span
                                  class="Apple-converted-space"> </span><a
href="https://github.com/tobias-klein/ezra-project/blob/master/models/versereference.js#L177"
                                  moz-do-not-send="true" style="color:
                                  purple; text-decoration: underline;"
                                  class="">here</a>).<o:p class=""></o:p></li>
                              <li class="MsoNormal" style="margin: 0cm
                                0cm 0.0001pt; font-size: 12pt;
                                font-family: &quot;Times New
                                Roman&quot;, serif;">The versification
                                (currently only English or Hebrew) of
                                the respective translation is detected
                                based on some simple dynamic tests when
                                opening it.<o:p class=""></o:p></li>
                              <li class="MsoNormal" style="margin: 0cm
                                0cm 0.0001pt; font-size: 12pt;
                                font-family: &quot;Times New
                                Roman&quot;, serif;">I have functions to
                                convert between one and the other
                                "absolute verse numbers" based on the
                                mapping.<o:p class=""></o:p></li>
                              <li class="MsoNormal" style="margin: 0cm
                                0cm 0.0001pt; font-size: 12pt;
                                font-family: &quot;Times New
                                Roman&quot;, serif;">Verse Reference
                                objects are stored both with the English
                                and Hebrew absolute verse numbers and
                                these objects are used for assigning
                                tags, notes, etc.<o:p class=""></o:p></li>
                            </ul>
                            <p style="margin-right: 0cm; margin-left:
                              0cm; font-size: 12pt; font-family:
                              &quot;Times New Roman&quot;, serif;"
                              class="">This works fairly well when using
                              English translations and German
                              translations. The result is for example
                              that tags that were assigned to verses of
                              an English translation still show up
                              correctly for the verses in a German
                              translation. This is particularly visible
                              in Psalms.<br class="">
                              <br class="">
                              How flawed is my current approach
                              described above?<br class="">
                              How do other frontends do it?<br class="">
                              Have there been plans to somehow integrate
                              some sort of mapping functionality into
                              the SWORD engine?<br class="">
                              <br class="">
                              Best regards,<br class="">
                              Tobias<o:p class=""></o:p></p>
                          </div>
                        </blockquote>
                      </sword-devel@crosswire.org></araj@critos.co.uk></div>
                  <br class="">
                  <fieldset class="mimeAttachmentHeader"></fieldset>
                  _______________________________________________
                  sword-devel mailing list:<span
                    class="Apple-converted-space"> </span><a
                    class="moz-txt-link-abbreviated"
                    href="mailto:sword-devel@crosswire.org"
                    style="color: purple; text-decoration: underline;"
                    moz-do-not-send="true">sword-devel@crosswire.org</a><span
                    class="Apple-converted-space"> </span><a
                    class="moz-txt-link-freetext"
                    href="http://www.crosswire.org/mailman/listinfo/sword-devel"
                    style="color: purple; text-decoration: underline;"
                    moz-do-not-send="true">http://www.crosswire.org/mailman/listinfo/sword-devel</a><span
                    class="Apple-converted-space"> </span>Instructions
                  to unsubscribe/change your settings at above page<br
                    class="">
                </blockquote>
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">_______________________________________________</span><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">sword-devel mailing list:<span
                    class="Apple-converted-space"> </span></span><a
                  href="mailto:sword-devel@crosswire.org" style="color:
                  purple; text-decoration: underline; font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; orphans: auto; text-align:
                  start; text-indent: 0px; text-transform: none;
                  white-space: normal; widows: auto; word-spacing: 0px;
                  -webkit-text-size-adjust: auto;
                  -webkit-text-stroke-width: 0px;" class=""
                  moz-do-not-send="true">sword-devel@crosswire.org</a><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <a
                  href="http://www.crosswire.org/mailman/listinfo/sword-devel"
                  style="color: purple; text-decoration: underline;
                  font-family: Helvetica; font-size: 12px; font-style:
                  normal; font-variant-caps: normal; font-weight:
                  normal; letter-spacing: normal; orphans: auto;
                  text-align: start; text-indent: 0px; text-transform:
                  none; white-space: normal; widows: auto; word-spacing:
                  0px; -webkit-text-size-adjust: auto;
                  -webkit-text-stroke-width: 0px;" class=""
                  moz-do-not-send="true">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br
                  style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none;" class="">
                <span style="caret-color: rgb(0, 0, 0); font-family:
                  Helvetica; font-size: 12px; font-style: normal;
                  font-variant-caps: normal; font-weight: normal;
                  letter-spacing: normal; text-align: start;
                  text-indent: 0px; text-transform: none; white-space:
                  normal; word-spacing: 0px; -webkit-text-stroke-width:
                  0px; text-decoration: none; float: none; display:
                  inline !important;" class="">Instructions to
                  unsubscribe/change your settings at above page</span></div>
            </blockquote>
          </div>
          <br class="">
        </div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a class="moz-txt-link-abbreviated" href="mailto:sword-devel@crosswire.org" moz-do-not-send="true">sword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://www.crosswire.org/mailman/listinfo/sword-devel" moz-do-not-send="true">http://www.crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page</pre>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a class="moz-txt-link-abbreviated" href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://www.crosswire.org/mailman/listinfo/sword-devel">http://www.crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page</pre>
    </blockquote>
  </body>
</html>