record-idm のデータモデルを定義する。
record-idm は accession の状態を 2 つの次元で管理する。
| 次元 | 意味 | 例 |
|---|---|---|
record_status |
データの公開状態(外の世界から見た到達可能性) | public, suppressed, withdrawn |
submission_stage |
投稿処理の段階(DDBJ 内部のワークフロー状態) | submitted, in_curation, accepted |
既存の各リポジトリの status 値には、公開状態と投稿処理段階が混在している。例えば BioProject/BioSample の submitted(5100), curating(5200), private(5400) は全て「未公開」だが、投稿処理の段階が異なる。これらを 1 つの値に押し込むと情報が失われる。
2 次元に分離することで:
record_statusは INSDC 標準と互換性を維持できるsubmission_stageで投稿処理の詳細な段階を追跡できる- 各リポジトリが持つ粒度の違いを吸収できる(
submission_stageは nullable)
- DDBJ-LD:レコードステイタス仕様書(2020) では、全ライフサイクルを 1 つの値(unsubmitted, submitted, private, public, suppressed, replaced, killed, cancel)にまとめ、
visibility/searchabilityの boolean フラグで意味を補足する設計だった visibility/searchabilityはrecord_statusから導出可能なため、独立したプロパティとしては持たない- Schema.org は
creativeWorkStatus(コンテンツのライフサイクル)とactionStatus(プロセスの実行状態)で暗黙的に 2 次元を分離している - INSDC Status Document は accession の公開状態(public, private, suppressed, withdrawn)のみ標準化し、submission workflow は各アーカイブの内部実装に委ねている。record-idm はこの暗黙的な分離を明示化した形になる
2 つの次元は完全に独立ではなく、以下の制約がある。
| record_status | 許容される submission_stage |
|---|---|
private |
draft, submitted, in_curation, revision_requested, accepted |
public |
accepted |
suppressed |
accepted |
withdrawn |
accepted |
canceled |
null, draft, submitted, in_curation, rejected |
unregistered |
null |
submission_stageは主にprivateの内訳を詳細化する役割を持つ- 公開後(
public,suppressed,withdrawn)は基本的にaccepted固定 canceledは公開前に中止されたレコードであり、submission_stageは中止時点の段階を保持する。段階情報を持たないリポジトリ(BioProject/BioSample 等)では null となる
各リポジトリ固有の status 値から record_status × submission_stage への変換。データソースの詳細は repositories.md を参照。
ソース: manager テーブルの status カラム(record_status)+ dataflow テーブル(submission_stage、nullable)
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| private (1001) | private |
(※) | hold 期間中 |
| public (1002) | public |
accepted |
|
| suppressed (1004) | suppressed |
accepted |
|
| secondary (1005) | suppressed |
accepted |
relation replaced_by も設定する |
| killed (1006) | withdrawn |
accepted |
|
| unregistered (1007) | unregistered |
null |
(※)private の submission_stage は dataflow テーブルの最新ステータスから導出する。dataflow は accession 単位の細粒度な作業ログであり、全 accession にレコードがあるとは限らないため、取得できない場合は null となる。
| dataflow status group | → submission_stage |
|---|---|
| 1001-1003(received / acknowledged) | submitted |
| 1007-1011(annotation / review) | in_curation |
| 1012(sent to submitter) | revision_requested |
| 1030(return from reviewer) | in_curation |
| 1033 以降(all done / ready for release) | accepted |
| レコードなし | null |
ソース: mass.project / mass.sample テーブルの status_id カラム
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| submitted (5100) | private |
submitted |
|
| curating (5200) | private |
in_curation |
|
| private (5400) | private |
accepted |
accession 発行済み、hold 期間中 |
| public (5500) | public |
accepted |
|
| killed (5600) | withdrawn |
accepted |
|
| canceled (5700) | canceled |
null | |
| suppressed (5800) | suppressed |
accepted |
|
| temporarily_suppressed (5900) | suppressed |
accepted |
一時的な非公開化(登録者依頼による再公開前提の suppress) |
ソース: SRA_Accessions.tab の Status カラム
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| live | public |
null | |
| unpublished | private |
null | |
| suppressed | suppressed |
null | |
| withdrawn | withdrawn |
null | |
| replaced | suppressed |
null | relation replaced_by も設定する |
ソース: drmdb mass.status_history テーブル(event sourcing、最新 status で判定)
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| 100 (draft) | private |
draft |
|
| 190 (canceled) | canceled |
null | |
| 300 (submitted) | private |
submitted |
|
| 380 (validated) | private |
in_curation |
自動 validation 完了後 |
| 390 (revision requested) | private |
revision_requested |
|
| 400 (processing) | private |
in_curation |
キュレーション処理中 |
| 500 (accessioned) | private |
accepted |
accession 発行済み |
| 700 (held) | private |
accepted |
hold 期間中 |
| 750 (pre-release) | private |
accepted |
公開処理中(中間状態) |
| 770 (suppressed) | suppressed |
accepted |
|
| 800 (public) | public |
accepted |
|
| 1000 (withdrawn) | withdrawn |
accepted |
|
| 1100 / 1200 (intermediate) | (※) | accepted |
suppress/withdraw 処理中 |
(※)1100/1200 は公開後の管理操作(suppress/withdraw 処理の中間状態)。record_status は遷移元に依存する。
注: DRA_Accessions.tab は公開済みデータのみ出力するファイルであり、public / suppressed / withdrawn の 3 status のみ含む。record-idm は drmdb を正規ソースとし、未公開分を含む全ライフサイクルをカバーする。
ソース: dordb mass.submission_status_history テーブル(submission 単位のワークフロー状態)
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| 0 (created) | private |
draft |
|
| 10-60 (submit → validate → load) | private |
submitted |
自動処理パイプライン |
| 100-130 (errors) | private |
revision_requested |
処理エラーによる差し戻し |
| 200 (validated) | private |
in_curation |
|
| 210 (curating) | private |
in_curation |
|
| 220-240 (accession → data load) | private |
accepted |
accession 発行以降 |
| 250 (data error) | private |
revision_requested |
データロードエラー |
| 260 (private) | private |
accepted |
hold 期間中 |
| 270 (wait release) | private |
accepted |
公開待ち |
| 300 (public) | public |
accepted |
|
| 400 (canceled) | canceled |
null | |
| 410 (suppressed) | suppressed |
accepted |
|
| 420 (killed) | withdrawn |
accepted |
注: livelist ファイルは公開済みデータのみ含む(Public / Permanently Suppressed / Withdrawn)。record-idm は dordb を正規ソースとし、未公開分を含む全ライフサイクルをカバーする。
ソース: 申請管理システムの appl_status_type(accession 未発行のものも管理対象)
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| 申請書類作成中 (10) | private |
draft |
accession 未発行 |
| 申請完了 (20) | private |
submitted |
accession 未発行 |
| 差し戻し中 (30) | private |
revision_requested |
accession 未発行 |
| 審査中 (40) | private |
in_curation |
accession 未発行 |
| 却下 (50) | canceled |
rejected |
accession 未発行 |
| 承認 (60) | public |
accepted |
accession 発行済み |
| 取り下げ (70)、accession 未発行 | canceled |
null | accession は承認(60)後に付与される前提 |
| 取り下げ (70)、accession 発行済み | withdrawn |
accepted |
承認(60 = public)を経由した後の取り下げ |
| 利用期間終了 (80) | (対応不要) | (対応不要) | データ利用申請の status であり、レコード自体の公開状態ではない |
JGA と同じ構成。
ソース: study ディレクトリ内の status file
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| Public (Release Date あり) | public |
accepted |
|
| Private (Release Date なし) | private |
accepted |
|
| In review | private |
in_curation |
|
| Cancelled | canceled |
null | |
| Killed | withdrawn |
accepted |
|
| Temporarily suppressed | suppressed |
accepted |
|
| Permanently suppressed | suppressed |
accepted |
ソース: Excel メタデータの Hold/Release フィールド
| Raw Status | → record_status | → submission_stage | 備考 |
|---|---|---|---|
| Release | public |
null | |
| Hold | private |
null |
accession 間の関係性(BioProject を頂点とする DAG、各リポジトリ間・内部の edge 定義)は relations.md を参照。