検索と発見の重要性
デジタルアーカイブに蓄積された資料は、利用者に発見されなければその価値を発揮できません。検索(Search)と発見(Discovery)は、デジタルアーカイブの利用価値を決定づける中核的な機能です。
筆者はこれまで、Omeka Sの検索機能の改善、SPARQLによるLinked Dataの横断検索、ジャパンサーチのAPIやSPARQLエンドポイントの活用など、検索と発見に関する多くの実践を行ってきました。
Omeka Sの検索機能
日本語検索の課題と対策
Omeka Sの標準的な全文検索機能には、日本語に関するいくつかの課題があります。筆者はOmeka Sの日本語による全文検索の注意点とMroonga searchモジュールで、この問題の原因と対策を詳しく解説しました。
この課題に対して、筆者はFixCjkSearchモジュールを開発しました。【Omeka S モジュール開発】FixCjkSearch: Omeka Sの日本語による全文検索の不具合修正で開発経緯と機能を紹介しています。さらに、Omeka-S-module-FixCjkSearchのv4.1.0をリリースしました。でバージョンアップ情報を公開しました。
また、より高度な日本語全文検索を実現するMroongaSearchモジュールについても検証しています。Omeka-SのMroongaSearchモジュールで日本語全文検索を実現するで、Mroongaストレージエンジンを活用した全文検索の実装方法を解説しました。
Apache Solrとの連携
より高度な検索機能が必要な場合は、Apache Solrとの連携が有効です。【Omeka S モジュール紹介】Advanced Search adapter for Solrで、SolrをOmeka Sの検索バックエンドとして使用する方法を紹介しました。
Advanced Searchモジュールの部分一致検索についてはOmeka SのAdvanced Searchモジュールでの部分一致検索で解説しています。また、検索結果に表示する項目の指定方法についてはOmeka Sの検索結果に表示する項目を指定するで紹介しました。
独自の検索ページ
Omeka Sでは、独自の検索ページを作成することも可能です。Omeka Sで独自の検索ページを作成するで、カスタム検索ページの構築方法を解説しました。詳細検索画面での絞り込み項目の限定についてはOmeka Sの詳細検索画面で絞り込み項目を限定するをご覧ください。
SPARQL による横断検索
SPARQLは、RDFデータに対する問い合わせ言語であり、Linked Open Dataとして公開されたデジタルアーカイブのメタデータに対して、横断的で柔軟な検索を実行できます。
ジャパンサーチのSPARQLエンドポイント
筆者はジャパンサーチのSPARQLエンドポイントをYasguiで使ってみるで、ジャパンサーチのSPARQLエンドポイントの基本的な使い方を紹介しました。Yasguiは、ブラウザ上でSPARQLクエリを実行できるインターフェースです。
PREFIX schema: <https://schema.org/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?item ?title ?image
WHERE {
?item schema:creator ?creator .
?creator rdfs:label "歌川広重" .
?item schema:name ?title .
OPTIONAL { ?item schema:image ?image . }
}
LIMIT 20
Google Colabを用いたSPARQLの実行についても、Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例で紹介しています。プログラムから結果を処理したい場合に便利です。
Snorqlによるデータ探索
筆者は、SPARQLエンドポイントを探索するためのブラウザUIであるSnorqlの開発にも取り組んでいます。Snorql — 複数の SPARQL エンドポイントを手軽に探索できるブラウザ UI を公開しましたで、複数のエンドポイントに対応したSnorqlを公開しました。Snorql for Japan Searchのカスタマイズ方法の調査では、ジャパンサーチ向けのカスタマイズ方法を紹介しています。
grlcによるAPI化
SPARQLクエリをREST APIとして公開するツールであるgrlcの活用も有効です。grlc (git repository linked data API constructor)を試すでは、GitHubリポジトリに置いたSPARQLクエリファイルを自動的にAPIエンドポイントとして公開する方法を紹介しました。
メディア芸術データベースのSPARQL
ジャパンサーチ以外にも、メディア芸術データベースなど複数のSPARQLエンドポイントがあります。メディア芸術データベースのSPARQLエンドポイントをYasguiで使ってみるで、その活用方法を紹介しています。
RDFストアのデータ分析
RDFストアに格納されたデータの分析手法として、トリプル数のカウントや共起頻度の分析があります。RDFストアのトリプル数を数えるやRDFストアのトリプル数を数える2: 共起頻度で、これらの分析手法を紹介しました。
テキスト検索とDTS
TEI/XMLで構造化されたテキストに対する検索には、DTS(Distributed Text Services)APIが有効です。筆者は校異源氏物語テキストDBに対してDTS APIを構築しました。DTS(Distributed Text Services)を使ってみるで基本概念を解説し、校異源氏物語テキストDBで公開するTEI/XMLファイルに対するDTS APIを作成するで実装を紹介しています。
また、TEI/XMLからElasticsearchを用いた検索システムの構築についても、校異源氏物語テキストDBに対する検索を行うAPIサーバの構築で紹介しました。
IIIF Content Search API
IIIF Content Search APIは、IIIFリソースに対するテキスト検索を提供します。OCR処理されたテキストを検索し、結果をWeb Annotationの形式で返します。筆者はOmeka SのIIIF Searchモジュールについて紹介しています。
【Omeka S モジュール紹介】IIIF Searchモジュールでは、IIIF Content Search APIの基本的な使い方を解説しました。また、【Omeka S モジュール改修】IIIF Searchモジュールでは、モジュールの改修内容を紹介しています。
OAI-PMHによるメタデータ収集
OAI-PMH(Open Archives Initiative Protocol for Metadata Harvesting)は、メタデータを収集(ハーベスト)するためのプロトコルです。筆者はOAI-PMHに関する豊富な実践経験を持っています。
Pythonによるレコード取得
OAI-PMHリポジトリからPythonでレコードを全件取得するでは、PythonでOAI-PMHリポジトリからメタデータを一括取得する方法を紹介しました。resumptionTokenを使った大量レコードの取得も解説しています。
Omeka SのOAI-PMH対応
Omeka SのOAI-PMH Repositoryモジュールに関しても、複数の課題の対応と機能改善を行っています。Omeka SのOAI-PMHリポジトリのresumptionTokenの不具合への対応では不具合の修正方法を、Omeka SのOaiPmhリポジトリモジュールにおいて、アイテムが公開されいているサイトページのURLを取得するではURL取得の改善を紹介しました。
他プラットフォームのOAI-PMH
ArchivesSpaceやAccess to MemoryのOAI-PMH機能についても検証しています。ArchivesSpaceのOAI Repositoryを試すやAccess to MemoryのOAI Repositoryを試すで、それぞれのOAI-PMH実装の特徴を紹介しました。
まとめ
本章では、デジタルアーカイブにおける検索と発見のための技術を、筆者の実践に基づいて解説しました。Omeka Sの日本語検索の改善、SPARQLによる横断検索、IIIF Content Search API、OAI-PMHによるメタデータ収集など、それぞれの技術の特性を理解し、プロジェクトの要件に応じて適切に組み合わせることが重要です。
次章では、デジタルアーカイブの公開において避けて通れない権利管理の問題について学びます。
関連記事
- Omeka Sの日本語による全文検索の注意点とMroonga searchモジュール
- 【Omeka S モジュール開発】FixCjkSearch: Omeka Sの日本語による全文検索の不具合修正
- Omeka-SのMroongaSearchモジュールで日本語全文検索を実現する
- 【Omeka S モジュール紹介】Advanced Search adapter for Solr
- Omeka SのAdvanced Searchモジュールでの部分一致検索
- Omeka Sの検索結果に表示する項目を指定する
- Omeka Sで独自の検索ページを作成する
- ジャパンサーチのSPARQLエンドポイントをYasguiで使ってみる
- Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例
- Snorql — 複数の SPARQL エンドポイントを手軽に探索できるブラウザ UI を公開しました
- Snorql for Japan Searchのカスタマイズ方法の調査
- grlc (git repository linked data API constructor)を試す
- メディア芸術データベースのSPARQLエンドポイントをYasguiで使ってみる
- RDFストアのトリプル数を数える
- OAI-PMHリポジトリからPythonでレコードを全件取得する
- Omeka SのOAI-PMHリポジトリのresumptionTokenの不具合への対応
- ArchivesSpaceのOAI Repositoryを試す
- Access to MemoryのOAI Repositoryを試す
- 【Omeka S モジュール紹介】IIIF Searchモジュール
- DTS(Distributed Text Services)を使ってみる
- 校異源氏物語テキストDBに対する検索を行うAPIサーバの構築
- 校異源氏物語テキストDBで公開するTEI/XMLファイルに対するDTS APIを作成する
- Omeka Sの詳細検索画面で絞り込み項目を限定する