JVRTOpen("0B15")のRA/SE応答完全性と同一レース状態の整合性について

@JRA-VAN_Staff 様

お世話になっております。
JV-Link 5.0.0 64bitを利用し、個人研究として、ある時点までにData Labから実際に取得できた情報だけを用いて状態を再現できる環境を作成しています。
JV-Linkインターフェース仕様書、JV-Data仕様書、および既存トピックの

・「0B12(成績確定後)と 0B15(出走馬名表)の違い」
・「登録頭数と出走頭数について」

を確認しました。
0B15について、出走馬名表発表後から提供され、レースの変更情報についても該当項目が更新されることは理解しています。
一方で、1回の JVRTOpen(“0B15”, key) の取得結果を、レース単位で一つの完全かつ整合した状態として扱えるかについて、仕様書や既存トピックから判断できなかったため質問させてください。

  1. 0B15で返されるRA・SEの範囲
    レース単位のキーを指定して JVRTOpen(“0B15”, key) を正常に実行し、その後 JVGets を戻り値0まで読み切った場合、その取得結果には、当該レースについてその時点で提供対象となっているRA・SEが一式含まれるのでしょうか。
    具体的には、

    ・RAは、その時点で提供対象となっている状態のものが1件返るのでしょうか。
    ・出馬表を構成するSEは、対象となる全馬分が返るのでしょうか。
    ・訂正前後のレコードや、異なるDataKubunのRA・SEが同一の取得結果に複数含まれる場合はありますか。

    また、JVGets の戻り値0は、JV-Linkがその要求に対して準備したデータをすべて読み切ったことを意味するだけでしょうか。それとも、指定したレースに関する0B15の応答自体が完了していることも意味するのでしょうか。

  2. 1回の0B15取得内でのRA・SEの整合性
    1回の JVRTOpen(“0B15”, key) で返されるRA・SEについて、相互に整合した一つのレース状態を表すことは仕様上保証されていますか。
    例えば、取得処理中や応答準備中に出馬表の訂正等が発生した場合、

    ・訂正前のRA
    ・訂正後のSE

    のように、異なる状態のレコードが同じ取得結果に含まれる可能性はありますか。
    そのような可能性がある場合、利用者側で検出する方法や、再取得すべき条件など、推奨される処理方法があればご教示いただけますと助かります。

  3. SEレコードが存在しないことの意味
    正常に0B15を読み切った取得結果に、ある馬のSEが含まれていなかった場合、その不在を
    「その取得時点の出馬表には、その馬は含まれていない」
    と判断してよいのでしょうか。
    それとも、データの更新タイミング等によって、一時的に一部のSEが含まれない可能性がありますか。

  4. RAの登録頭数とSE DataKubun 2の件数
    既存トピック「登録頭数と出走頭数について」では、レース詳細とオッズ等の頭数について、データ提供タイミングによって値が異なる場合があるとの回答を確認しました。
    その上で、pre-raceの状態について確認したいです。
    RAのDataKubun 2に格納されている「登録頭数」と、同じ0B15取得結果に含まれる重複しないDataKubun 2のSEレコード数が一致することは仕様上保証されていますか。
    または、この件数一致を「0B15で出馬表を全件取得できたこと」の確認方法として使用することはできないでしょうか。
    訂正、取消、競走除外、削除等が発生した場合の考え方についても、あわせてご教示いただけますと幸いです。

今回確認したいのは、Data Lab上での公開時刻や内部処理時刻ではなく、
「JVGetsを読み切ったこと」と「そのレースについて必要なRA・SEを完全かつ整合した状態で取得できたこと」を、利用者側でどのように区別・確認すべきか
という点です。
仕様上保証されている範囲と、保証されていない場合の推奨される取得・確認方法をご教示いただけますと助かります。
よろしくお願いいたします。

  1. 0B15の取得範囲と読み込み終了
    レース単位で取得した場合、RAは1件、SEはその時点で提供されている対象全馬分が返されます。JVGetsの戻り値0は、そのリクエストの応答データをすべて読み終えたことを意味します。収録順序は保証されないため、DBへの反映は後から読み込んだデータによる上書きが基本です。

  2. RA・SEの整合性確認
    更新の境目では、RAとSEの状態にずれが生じる可能性があります。データ区分・作成年月日・頭数を確認し、不整合があれば少し時間を置いて再取得します。

  3. SEが存在しない場合の判断
    正常に全件取得できた結果に特定馬のSEが含まれなければ、その時点の出馬表・出走馬名表には含まれていないと判断します。ただし、馬番確定後の取消・除外ではSE自体は残るため、「出走しない馬は必ずSEがなくなる」という意味ではありません。

  4. 頭数による全件取得の確認
    DataKubun=2では、RAの登録頭数と、重複を除いたSEの件数が原則一致するため、取得漏れの確認に利用します。馬番確定前の取消馬は双方から除かれ、確定後の取消・除外馬はSEが残ります。なお、DataKubun=1では馬番が未確定のため、血統登録番号で重複を判定します。

@JRA-VAN_Staff 様
ご回答ありがとうございます。
0B15の取得範囲、JVGetsの戻り値0の意味、更新境界ではRA・SEにずれが生じる可能性があること、SEが存在しない場合の判断、登録頭数とSE件数による取得漏れ確認方法まで、具体的にご教示いただき大変参考になりました。
特に、収録順序は保証されないため全件読み込み後に反映すること、また整合性確認時にはデータ区分・作成年月日・頭数を確認し、必要に応じて時間を置いて再取得するという点を理解しました。
丁寧にご回答いただき、ありがとうございました。