Archivematica では、Dublin Core(DC)以外のメタデータスキーマもAIPのMETS.xmlに組み込むことができます。本ガイドでは、source-metadata.csv を使って EAD や MODS などの非DCメタデータをTransferに含め、AIPに正しく格納されるかをAPI経由で検証します。
目次
- 背景と目的
- source-metadata.csv の仕組み
- XML Validation 機能
- 検証1: MODS単独でのメタデータ登録
- 検証2: EAD + MODS の同時登録
- METS.xml における非DCメタデータの格納形式
- 検証3: Reingest によるメタデータ追加
- まとめ
背景と目的
Archivematica の標準的な Transfer では、metadata/metadata.csv に記述した Dublin Core メタデータが METS.xml に <dmdSec> として格納されます。しかし、実際のデジタルアーカイブ運用では、以下のようなユースケースで DC 以外のメタデータスキーマを扱う必要があります。
- EAD(Encoded Archival Description) : アーカイブズの階層記述で広く使われる標準
- MODS(Metadata Object Description Schema) : 図書館資料の詳細記述に使われるスキーマ
- LIDO : 博物館・美術館資料の記述標準
- MARC21 : 図書館の目録データフォーマット
Archivematica は source-metadata.csv というCSVファイルを通じて、任意の XML メタデータを Transfer に紐付け、AIP の METS.xml に <dmdSec> として格納する機能を提供しています。本ガイドでは、この機能を API 経由で実際に検証します。
source-metadata.csv の仕組み
CSVフォーマット
source-metadata.csv は Transfer の metadata/ ディレクトリに配置するCSVファイルで、3つのカラムで構成されます。
| カラム | 説明 |
|---|---|
filename | メタデータの対象となるファイルまたはディレクトリの相対パス(objects/ から始まる) |
metadata | XMLメタデータファイルへのパス(metadata/ ディレクトリからの相対パス) |
type | メタデータの種別識別子。METS.xml の OTHERMDTYPE 属性に使用される |
Transfer のディレクトリ構成
同一ファイルへの複数メタデータの紐付け
source-metadata.csv では、同一の filename に対して異なる type のメタデータを複数行で紐付けることができます。
この例では、objects ディレクトリ(配下の全ファイル)に対して EAD と MODS の両方が関連付けられ、それぞれ独立した <dmdSec> として METS.xml に格納されます。
処理の流れ
- Transfer 時に
source-metadata.csvが読み込まれる metadataカラムで指定された XML ファイルがパースされる- XML Validation が有効な場合、スキーマに対するバリデーションが実行される
- バリデーションに成功した XML が
<dmdSec>として METS.xml に埋め込まれる
XML Validation 機能
概要
Archivematica には、source-metadata.csv で指定された XML メタデータをスキーマに対してバリデーションする機能があります。この機能はデフォルトでは無効 であり、実験的機能 として位置付けられています。
有効にするには、MCP Client の環境変数を設定します。
バリデーション設定ファイル
バリデーション設定は Python ファイルで記述します。以下は Archivematica のテスト環境で使われている設定例です。
XML_VALIDATION ディクショナリのキーは、以下の順序で XML ドキュメントとマッチングされます。
xsi:noNamespaceSchemaLocation属性の値xsi:schemaLocation属性の最後の値- ルート要素の名前空間 URI
- ルート要素のローカル名
キーに対する値が None の場合、バリデーションはスキップされますが、<dmdSec> への格納は行われます。キーがディクショナリに存在しない場合、そのメタデータはサイレントにスキップ され、<dmdSec> にも格納されません。
テスト環境のサポート済みスキーマ
| 名前空間 / キー | メタデータ種別 | バリデーション |
|---|---|---|
http://www.openarchives.org/OAI/2.0/oai_dc/ | Dublin Core (OAI-PMH) | XSD |
http://www.lido-schema.org | LIDO | XSD |
http://www.loc.gov/MARC21/slim | MARC21 | XSD |
http://www.loc.gov/mods/v3 | MODS | XSD |
http://slubarchiv.slub-dresden.de/rights1 | SLUB Rights | XSD |
alto | ALTO (OCR) | XSD |
metadata | 汎用メタデータ | スキップ |
bag-info | BagIt 情報 | スキップ |
注意 : EAD(
urn:isbn:1-931666-22-9)はテスト環境のデフォルト設定に含まれていません。EAD を使用する場合は、設定ファイルにエントリを追加する必要があります。
検証1: MODS単独でのメタデータ登録

Administration > Processing configuration 画面 ── Transfer 投入時に使用する処理プロファイル(default / automated / backlog)を管理する
検証環境
- Archivematica 1.19(Docker 環境)
- Dashboard:
http://127.0.0.1:62080 - Storage Service:
http://127.0.0.1:62081 - XML Validation: 有効(テスト環境のデフォルト設定)
Transfer パッケージの作成
以下の構成で Transfer パッケージを作成します。
source-metadata.csv:
mods.xml:
API による Transfer の実行
結果

Transfer タブ ── metadata-test および metadata-test2 の Transfer 処理が完了し、各 Microservice のステータスが表示されている
Transfer → Ingest が完了し、AIP が正常に作成されました。METS.xml の <dmdSec> を確認すると、MODS のみが dmdSec として格納 されていました。
EAD が格納されなかった原因 : MCP Client のログに以下のエラーが記録されていました。
0
XML Validation 設定ファイルに EAD の名前空間(urn:isbn:1-931666-22-9)が登録されていなかったため、バリデーション処理でスキップされ、<dmdSec> にも格納されませんでした。
検証2: EAD + MODS の同時登録
XML Validation 設定の修正
EAD を扱うため、設定ファイルに EAD の名前空間を追加しました。
1
None を指定することで、XSD スキーマによるバリデーションは行わず、METS.xml の <dmdSec> への格納のみを行います。
API による Transfer の実行
前回と同様の構成で、新しい Transfer パッケージ(metadata-test2)を API 経由で投入しました。
結果: METS.xml の dmdSec

Archival Storage 一覧 ── metadata-test(検証1)と metadata-test2(検証2)の AIP が正常に保存されている
今回は 3つの dmdSec が生成されました。
dmdSec_1: PREMIS:OBJECT(標準)
2
dmdSec_2: EAD
3
dmdSec_3: MODS
4
structMap での関連付け
structMap では、objects ディレクトリに DMDID="dmdSec_2 dmdSec_3" として EAD と MODS の両方が関連付けられていることが確認できました。
5
METS.xml における非DCメタデータの格納形式
MDTYPE 属性の扱い
source-metadata.csv の type カラムで指定した値は、METS.xml では以下のように格納されます。
6
Archivematica のソースコード(archivematicaCreateMETSMetadataXML.py)を確認すると、source-metadata.csv 経由のメタデータは常に MDTYPE="OTHER" として格納され、type カラムの値は OTHERMDTYPE 属性に設定されます。
7
これは Dublin Core(metadata.csv 経由で MDTYPE="DC" として格納される)とは異なる扱いです。
STATUS 属性
- 初回 Ingest 時:
STATUS="original" - Re-ingest 時:
STATUS="update"
Re-ingest 時には、同じ type の既存 dmdSec は superseded 扱いとなり、新しい dmdSec が STATUS="update" で追加されます。
XML ファイルの保存先
source-metadata.csv で参照された XML ファイルは、AIP 内にもファイルとして保存されます。
8
検証3: Reingest によるメタデータ更新

AIP 詳細画面 ── metadata-test2 の UUID、サイズ、保存場所、METS ファイルのダウンロードリンクが確認できる
検証の目的
検証2で作成した AIP(EAD + MODS を含む)に対して Metadata re-ingest を実行し、以下を検証します。
- 既存の MODS メタデータを更新した場合、旧メタデータが
supersededとして保持され、新メタデータがupdateとして追加されるか - Re-ingest で追加した XML ファイルが AIP 内に保存されるか
Reingest の開始

AIP 詳細画面の Re-ingest タブ ── Reingest type(Metadata / Partial / Full)と Processing config を選択して実行する。今回は API 経由で Metadata re-ingest を実行する
Storage Service API を使って Metadata re-ingest を開始します。
9
0
メタデータの追加
Reingest が開始されると、AIP が展開され、Archivematica の Ingest ワークフローに投入されます。「Approve AIP reingest」の承認を行う前に、展開された AIP の data/objects/metadata/ ディレクトリに新しいメタデータファイルを配置します。
重要 : Reingest 時は objects/metadata/source-metadata.csv(ルートレベル)のみが処理されます。objects/metadata/transfers/ 配下の CSV は初回 Ingest 時にのみ読み込まれます。
1
source-metadata.csv(Reingest 用):
2
type カラムに既存の dmdSec と同じ値(MODS)を指定すると、既存の dmdSec が superseded となり、新しい dmdSec が update として追加されます。新しい type 値(DC-CUSTOM)を指定した場合は、新規の dmdSec として追加されます。
Reingest の承認と処理
3
承認後、Ingest ワークフローが進行します。Metadata re-ingest でも Normalize や Transcribe などの決定ポイントを通過する必要があります(automated 処理コンフィグが適用されない場合は手動で選択します)。
結果: Reingest 後の METS.xml
Reingest 完了後の METS.xml には 4つの dmdSec が含まれていました。
| dmdSec | STATUS | TYPE | 説明 |
|---|---|---|---|
| dmdSec_1 | original | PREMIS:OBJECT | SIP 識別情報(変更なし) |
| dmdSec_2 | original | OTHER(EAD) | 初回 Ingest の EAD(変更なし) |
| dmdSec_3 | original-superseded | OTHER(MODS) | 初回 Ingest の MODS(superseded に変更 ) |
| dmdSec_4 | update | OTHER(MODS) | Reingest で追加された更新 MODS |
dmdSec_3(旧 MODS → superseded):
4
dmdSec_4(新 MODS → update):
5
structMap の変化
Reingest 後の structMap では、objects ディレクトリに superseded を含む全 dmdSec が参照されています。
6
また、Reingest で追加したメタデータファイルも AIP 内にファイルとして保存されています。
7
DC-CUSTOM が dmdSec に含まれなかった理由
dc-reingest.xml(Dublin Core Terms 形式)は AIP 内にファイルとして保存されましたが、dmdSec には格納されませんでした。MCP Client のログには以下のエラーが記録されていました。
8
XML Validation 設定に登録されている Dublin Core は OAI-PMH 形式(http://www.openarchives.org/OAI/2.0/oai_dc/)のみであり、DC Terms 形式(http://purl.org/dc/terms/)は登録されていませんでした。XML Validation の登録ルールは名前空間 URI ベースのため、同じ Dublin Core でも名前空間が異なれば別途登録が必要です。
まとめ
検証結果の要約
| 検証項目 | 結果 |
|---|---|
| MODS メタデータの dmdSec 格納 | 成功 |
| EAD メタデータの dmdSec 格納 | 成功(XML Validation 設定追加後) |
| 同一オブジェクトへの複数メタデータ紐付け | 成功(EAD + MODS を同時格納) |
| structMap での dmdSec 関連付け | 正常(DMDID="dmdSec_2 dmdSec_3") |
| Reingest による MODS メタデータ更新 | 成功(旧: original-superseded、新: update) |
| Reingest 後の structMap 更新 | 正常(DMDID="dmdSec_2 dmdSec_3 dmdSec_4") |
| Reingest で追加したファイルの AIP 内保存 | 成功 |
| 未登録名前空間の DC Terms の格納 | 失敗(XML Validation 設定に未登録) |
注意点
XML Validation 設定 : XML Validation が有効な環境では、使用するメタデータスキーマの名前空間をバリデーション設定ファイルに登録する必要があります。未登録の場合、メタデータはサイレントにスキップされます。エラーはログにのみ記録され、Ingest / Re-ingest の処理自体は続行されます。
MDTYPE の扱い :
source-metadata.csv経由のメタデータは常にMDTYPE="OTHER"で格納されます。MDTYPE="MODS"やMDTYPE="EAD"のように METS 標準の MDTYPE 値として格納されるわけではありません。Reingest 時の source-metadata.csv の配置場所 : 初回 Ingest では
metadata/transfers/<transfer-name>/source-metadata.csvが使用されますが、Reingest ではmetadata/source-metadata.csv(ルートレベル)のみが処理されます。type カラムによるメタデータの版管理 :
source-metadata.csvのtypeカラムは、Reingest 時のメタデータ更新の識別子として機能します。同じtype値を使用すると既存の dmdSec がsupersededとなり、新しいtype値を使用すると新規の dmdSec が追加されます。名前空間ベースの登録 : 同じメタデータ標準(例: Dublin Core)でも、使用する名前空間 URI が異なれば、それぞれを XML Validation 設定に登録する必要があります。