相互運用性の意義
デジタルアーカイブにおける相互運用性(Interoperability)とは、異なる機関やシステムが保有するデジタルコンテンツとメタデータを、技術的な障壁なく相互に利用・交換できる能力のことです。
筆者はこれまで、IIIF、OAI-PMH、SPARQL、REST API、DTS(Distributed Text Services)など、多様な相互運用技術の実践を行ってきました。本章では、それらの経験に基づいて各技術を解説します。
IIIF(International Image Interoperability Framework)
IIIFは、デジタル画像の相互運用性を実現するための国際標準フレームワークです。
IIIF Image API
Image APIは、画像を特定のリージョン、サイズ、回転、品質で取得するためのURLパラメータを定義します。
筆者はOmeka SのImage Serverの設定についてOmeka SのImage Serverの設定についてで解説しました。Image APIを使用しない設定については【Omeka S モジュール】IIIF ServerモジュールでImage APIを使用しない方法で紹介しています。
動的タイル画像生成における画像サイズの上限については、Omeka S Image Serverモジュールの動的タイル画像生成における画像サイズの上限設定についてで詳しく解説しました。
IIIF Presentation API
Presentation APIは、資料の構造とメタデータをJSON-LD形式で記述するためのAPIです。筆者はOmeka Sを用いたマニフェスト生成について豊富な実践を行っています。
Omeka Sを用いて、IIIF Presentation API v3のマニフェストファイルを作成するでは、v3マニフェストの生成手順を解説しました。IIIFコレクション(複数のマニフェストをまとめたもの)の生成については、Omeka S IIIF Serverモジュールを用いたIIIFコレクションの生成で紹介しています。
目次情報の追加については、Omeka SのIIIF Serverモジュールを使用した階層構造を持つ目次の記述や【機能開発】Omeka SのIIIFモジュールで、目次を加える機能を追加しました。(その1:フラットな目次の登録)で解説しました。
表示方向の指定についてはOmeka SのIIIF Serverモジュールで、表示方向を指定するで、独自識別子の設定については【Omeka S】IIIF Serverモジュールにおける独自識別子の設定方法で紹介しています。
IIIFビューア
IIIFコンテンツを閲覧するためのビューアとして、Mirador、Universal Viewerなどがあります。
筆者はOmeka S上でのビューア設置について【Omeka S モジュール紹介】Omeka Sで利用可能なIIIF対応ビューアで各ビューアを比較しました。Miradorの導入についてはOmeka S Mirador モジュールの使い方で詳しく解説しています。
TEI/XMLとの対照表示には、Miradorで画像を表示し、CETEIceanでテキストを表示するサンプルアプリで、MiradorとCETEIceanを組み合わせたビューアを紹介しました。XSLTを使ってIIIFとTEIの対照表示を実現するでは、XSLTを使ったアプローチも紹介しています。
IIIF Content Search API
IIIF Content Search APIは、IIIFリソースに対するテキスト検索を提供します。【Omeka S モジュール紹介】IIIF Searchモジュールで、Omeka SのIIIF Searchモジュールの使い方を解説しました。
OAI-PMH
OAI-PMH(Open Archives Initiative Protocol for Metadata Harvesting)は、メタデータのハーベスティング(収集)のための標準プロトコルです。
Omeka SでのOAI-PMH
Omeka SのOAI-PMH Repositoryモジュールを使うことで、OAI-PMHエンドポイントを公開できます。筆者はこのモジュールに関する複数の改修と検証を行っています。
- Omeka SのOAI-PMHリポジトリのresumptionTokenの不具合への対応: resumptionTokenの不具合修正
- (非標準)Omeka SのOAI-PMH RepositoryモジュールでDeleteレコードを出力してみる: Deleteレコードの出力
- Omeka SのOaiPmhリポジトリモジュールにおいて、アイテムが公開されいているサイトページのURLを取得する: URL取得の改善
- 【Omeka S モジュールカスタマイズ】OaiPmhRepository:独自語彙の作成: 独自語彙の追加
Pythonでのハーベスティング
OAI-PMHリポジトリからPythonでレコードを全件取得するでは、PythonでOAI-PMHリポジトリからメタデータを一括取得する方法を紹介しました。resumptionTokenを使った大量レコードの取得も解説しています。
SPARQL
SPARQLは、RDFデータに対する問い合わせ言語であり、Linked Open Dataの横断検索に不可欠です。
SPARQLエンドポイントの活用
筆者はジャパンサーチのSPARQLエンドポイントについて多くの記事を執筆しています。ジャパンサーチのSPARQLエンドポイントをYasguiで使ってみるでは基本的な使い方を、Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例ではプログラム的な活用方法を紹介しました。
PREFIX schema: <https://schema.org/>
PREFIX jps: <https://jpsearch.go.jp/term/property#>
SELECT ?item ?title ?image ?provider
WHERE {
?item schema:name ?title ;
schema:provider ?providerEntity .
?providerEntity schema:name ?provider .
OPTIONAL { ?item schema:image ?image . }
FILTER(CONTAINS(?provider, "国立国会図書館"))
}
LIMIT 100
SPARQLエンドポイントの構築
自機関でSPARQLエンドポイントを構築する場合、Virtuoso、Apache Jena Fuseki、Dydraなどのトリプルストアが選択肢となります。
VirtuosoについてはAWS EC2を用いたVirtuoso RDFストアの構築で構築方法を、DydraについてはPythonを使ってRDFデータをDydraに登録するでデータ登録方法を解説しています。GakuNin RDMとDydraを連携したRDFメタデータ管理システムの開発では、研究データ管理との連携システムの構築事例を紹介しました。
DTS(Distributed Text Services)
DTS(Distributed Text Services)は、TEI/XMLなどの構造化テキストへのAPIアクセスを標準化するためのプロトコルです。筆者はDTSの導入と活用について多くの実践を行っています。
DTS(Distributed Text Services)を使ってみるでは基本概念を解説し、校異源氏物語テキストDBで公開するTEI/XMLファイルに対するDTS APIを作成するでは、実際のDTS APIの構築事例を紹介しました。DTS Viewerの更新:ページネーションへの対応では、DTSビューアの開発についても紹介しています。
DTSとCTSの関係についてはDTSとCTSの関係で、検索システム構築におけるDTSの応用についてはTEI/XMLから検索システムを構築する際のDTS(Distributed Text Services)のdts:wrapperの応用例で解説しました。
REST API
Omeka SのREST APIは、メタデータの取得・登録をプログラム的に行える強力なインターフェースです。
Omeka SのREST APIとやりとりするためのPythonパッケージでは、Python用のAPIクライアントを紹介しました。Omeka Sの特定のvocabularyのプロパティ一覧を取得するでは、APIを使った語彙情報の取得方法を解説しています。
Omeka Classicのデータをダウンロードするプログラムについても、Omeka Classicのデータをダウンロードするプログラムを作成しました。やOmeka Sのデータをダウンロードするプログラムを作成しました。で公開しています。
Wikidataとの連携
Wikidataは、世界最大のオープンなナレッジベースであり、デジタルアーカイブのメタデータ充実化に活用できます。
筆者はWikidataから人物の生没年を取得するで、SPARQLを用いたWikidataからのデータ取得方法を紹介しました。TEIエディタLEAF WriterにおけるWikidataとの連携についてはcwrcのwikidata-entity-lookupを試すで検証しています。
Content Negotiationを使ったRDFデータの取得についてはContent Negotiationを使って、PythonでURIからRDFを取得するで解説しました。
まとめ
本章では、デジタルアーカイブの相互運用性を支える主要なAPIとプロトコルを、筆者の実践に基づいて解説しました。IIIF、OAI-PMH、SPARQL、DTS、REST APIなど、それぞれの技術が異なる側面の相互運用性を支えています。
これらの技術を組み合わせることで、デジタルアーカイブは孤立したシステムにとどまらず、広い知識基盤の一部として機能します。
次章では、構築したデジタルアーカイブを持続的に運用するための体制と戦略について学びます。
関連記事
- Omeka SのImage Serverの設定について
- Omeka Sを用いて、IIIF Presentation API v3のマニフェストファイルを作成する
- Omeka S IIIF Serverモジュールを用いたIIIFコレクションの生成
- Omeka SのIIIF Serverモジュールを使用した階層構造を持つ目次の記述
- 【Omeka S】IIIF Serverモジュールにおける独自識別子の設定方法
- 【Omeka S モジュール紹介】Omeka Sで利用可能なIIIF対応ビューア
- Omeka S Mirador モジュールの使い方
- Miradorで画像を表示し、CETEIceanでテキストを表示するサンプルアプリ
- 【Omeka S モジュール紹介】IIIF Searchモジュール
- Omeka SのOAI-PMHリポジトリのresumptionTokenの不具合への対応
- OAI-PMHリポジトリからPythonでレコードを全件取得する
- ジャパンサーチのSPARQLエンドポイントをYasguiで使ってみる
- AWS EC2を用いたVirtuoso RDFストアの構築
- DTS(Distributed Text Services)を使ってみる
- 校異源氏物語テキストDBで公開するTEI/XMLファイルに対するDTS APIを作成する
- Omeka SのREST APIとやりとりするためのPythonパッケージ
- Omeka Sのデータをダウンロードするプログラムを作成しました。
- Wikidataから人物の生没年を取得する
- Content Negotiationを使って、PythonでURIからRDFを取得する
- GakuNin RDMとDydraを連携したRDFメタデータ管理システムの開発
- XSLTを使ってIIIFとTEIの対照表示を実現する
- Omeka SのIIIF Serverモジュールで、表示方向を指定する