persNamer
2025年3月28日
·
3 分で読める
persNamer:TEIをバーチャル国際典拠ファイルにつなぐ
persNamerは、VIAF(バーチャル国際典拠ファイル)の典拠データをTEI XML文書に取り込む作業を効率化する、専用のPythonツールです。VIAF識別子をそのまま使えるTEIマークアップに変換することで、デジタル校訂版のための構造化された人物エントリを作る手作業を大きく減らします。
TEIにおける典拠管理の難しさ
デジタル校訂版では、標準化された名前や生没年を含め、歴史上の人物を正確に同定することがしばしば求められます。プロジェクト全体で典拠管理を一貫させるには、次の手順が要ります。
- 歴史的テキストの中の人物を同定する
- その人物についての典拠データを探す
- 正しく整形されたTEIエントリを作る
- プロジェクト全体で参照を一貫させる
これらの手順はふつう手作業で、時間がかかり、不整合も起こりがちです。
persNamerの仕組み
persNamerは、次の手順でこのワークフローを自動化します。
- VIAFデータの取得:VIAF識別子を受け取ると、HTTPコンテントネゴシエーションでRDFデータを取得します
- 主要情報の抽出:RDFを解析し、優先名、生年月日、没年月日を取り出します
- TEIマークアップの生成:欠かせない二つのXMLスニペットを作ります。
- 典拠ファイルのエントリ(生成した
xml:id、<persName>、<birth>、<death>、<idno type="VIAF">をもつ<person>要素) - それとは別の注釈タグ(典拠エントリを参照する
ref属性をもつ<persName>)
- 典拠ファイルのエントリ(生成した
この二つの出力があるおかげで、編集者は典拠ファイルを一元管理しながら、注釈タグをTEIテキストに手軽に挿し込めます。
主な機能
- 標準化されたID生成:
pers-[familyname]-[givenname initial]の形式で一貫したXML IDを生成(例:pers-deteligny-c) - RDF解析:
rdflibを使い、さまざまなRDFプロパティ(rdfs:label、schema:name、viaf:mainHeadなど)から情報を抽出 - コマンドラインインターフェース:必須引数はVIAF番号だけという手軽さ
- 詳細な出力:最終的なXMLとあわせて、処理の経過を詳しく表示
使用例
python persNamer.py 314802260
このコマンドの出力は次のとおりです。
<person xml:id="pers-deteligny-c">
<persName>Charles deTéligny</persName>
<birth>1535</birth>
<death>1572-08-24</death>
<idno type="VIAF">314802260</idno>
</person>
<persName ref="#pers-deteligny-c">Charles deTéligny</persName>
デジタル・ヒューマニティーズでの用途
persNamerがとりわけ役立つのは、次のような場面です。
- 典拠管理を必要とするデジタル校訂版
- 歴史上の人物を扱うTEIエンコーディングのプロジェクト
- 文書を典拠レコードに結びつけるリンクトデータの取り組み
- 大規模なTEIコーパス全体での一貫性の確保
- デジタル・ヒューマニティーズの授業での、典拠管理という概念の指導
実装
persNamerはPythonで書かれており、以下に依存しています。
- HTTPリクエストに
requests - RDF解析に
rdflib - XML処理に
lxml
ソースコードとドキュメントはGitHubリポジトリにあります。
