ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
Omeka SのIIIF Serverモジュールで、PLYファイルがIIIFマニフェストのitemsに出力されない問題の調査

Omeka SのIIIF Serverモジュールで、PLYファイルがIIIFマニフェストのitemsに出力されない問題の調査

概要 Omeka SのIIIF Serverモジュールで、PLYファイルがIIIFマニフェストのitemsとして出力されないが、GLBファイルは正常に出力される問題を調査しました。 前提条件:Omeka Sの設定 デフォルトでは、PLYファイルはOmeka Sにアップロードできません。以下の設定が必要です。 PLYファイルアップロード時のエラー デフォルト設定では、PLYファイルのメディアタイプ(application/octet-stream)と拡張子(.ply)が許可されていないため、アップロードエラーが発生します。 設定の追加 管理画面の「設定」→「セキュリティ」で以下を追加してください: 許可されるメディアタイプ : application/octet-stream を追加 許可されるファイル拡張子 : ply を追加 原因 PLYファイルの処理コードがモジュールに実装されていませんでした。 GLBファイルには明示的な拡張子チェックと型変換のコードが存在しますが、PLYファイルには同様のコードが存在しませんでした。 技術的詳細 GLBファイルの処理(修正前から存在) TraitMedia.php (format()メソッド) if ($mediaType === 'application/octet-stream') { $extension = strtolower(pathinfo((string) $this->resource->source(), PATHINFO_EXTENSION)); if ($extension === 'glb') { return 'model/gltf-binary'; } } IiifTypeOfMedia.php if ($mediaType === 'application/octet-stream') { $extension = strtolower(pathinfo((string) $media->source(), PATHINFO_EXTENSION)); if ($extension === 'glb') { return $mediaIiifTypes[$mediaId] = 'Model'; } } IIIFマニフェストのitems生成フロー メディアタイプの判定 (TraitMediaInfo.php) ...

Omeka-SのMroongaSearchモジュールで日本語全文検索を実現する

Omeka-SのMroongaSearchモジュールで日本語全文検索を実現する

はじめに Omeka-Sは強力なデジタルアーカイブシステムですが、デフォルトでは日本語の全文検索がほとんど機能しません 。本記事では、MroongaSearchモジュールを導入することで、日本語全文検索を実現する方法を解説します。 重要:なぜMroongaSearchモジュールが必要なのか Omeka-Sの標準検索の問題点 Omeka-Sの標準フルテキスト検索(FullTextSearchモジュール)は、InnoDBエンジンを使用しており、以下の致命的な問題があります: 日本語単語検索の例 : データ: 「東京大学で人工知能を研究する」 検索語: 「人工知能」 結果: ❌ ヒットしない InnoDBのフルテキスト検索は英語のようなスペース区切り言語を前提としているため、日本語では: 単語検索が不可能 : 文字列全体が1つの単語として扱われる 部分一致も機能しない : FULLTEXTインデックスが日本語を正しく処理できない 検索結果がゼロ : ユーザーは何も見つけられない MroongaSearchモジュールの解決策 MroongaSearchモジュール は、この問題を2段階で解決します: 1. フォールバック機能(モジュール導入直後から有効) 重要 : MroongaSearchモジュールをインストールするだけで、特別な設定なし で日本語検索が動作するようになります。 データ: 「東京大学で人工知能を研究する」 検索語: 「人工知能」 【MroongaSearchモジュールなし】 → ❌ 結果ゼロ 【MroongaSearchモジュールあり(Mroonga未設定でも)】 → ✅ LIKE '%人工知能%' にフォールバック → ✅ 検索結果が返る! MroongaSearchモジュールのフォールバック機能 : CJK(日本語・中国語・韓国語)の単一語検索を自動検出 LIKE '%term%' 検索に自動的にフォールバック Mroongaが設定されていなくても動作する これがないと、日本語全文検索がそもそもうまくいかない 2. Mroonga+TokenMecabによる高速・高精度検索(推奨) さらに、MariaDBにMroongaプラグインを設定すると: ✅ 形態素解析による精密な単語検索 ✅ 高速な全文検索(LIKEの数百倍高速) ✅ AND/OR検索の厳密な制御 MroongaSearchモジュールとは MroongaSearchは、Omeka-S用の全文検索強化モジュールです。 ...

Omeka Sのモジュールアップデート情報(2025-03-27)

Omeka Sのモジュールアップデート情報(2025-03-27)

概要 Omeka Sの運用において、モジュールのアップデートが必要になったものを紹介します。 IIIF Server https://omeka.org/s/modules/IiifServer/ 2024年2月にリリースされた3.6.18を使用していましたが、IIIFマニフェストファイル生成時に、サムネイル画像がおかしくなる不具合が確認されました。 2025年3月時点で最新の3.6.24に更新したところ、本不具合が解消しました。なお、このアップデートには、Commonモジュールの更新も必要でしたので、参考になりましたら幸いです。 https://omeka.org/s/modules/Common/ Google Analytics https://github.com/Libnamic/Omeka-S-GoogleAnalytics 2023年頃から使用していましたが、PHPのあるバージョンからwarningが表示されるようになりました。 また本モジュールの更新も、2023年から行われていませんでした。 そこで以下の記事でも紹介したように、Analytics Snippetモジュールを使用したほうがよさそうでした。 以下で更新履歴が確認できますが、こちらは最新のリリースが2025/1になっています。 https://omeka.org/s/modules/AnalyticsSnippet/ まとめ Omeka Sの運用にあたり、参考になりましたら幸いです。

Omeka Sで非公開サイトを共有する

Omeka Sで非公開サイトを共有する

概要 Omeka Sで非公開サイトを共有する機会があったので、備忘録です。 関連モジュール まず以下のモジュールを確認しました。 https://omeka.org/s/modules/Guest/ 上記では、Guest Privateモジュールも紹介されており、使い分けの方法をChatGPTに問い合わせました。 Omeka S の Guest モジュール と Guest Private モジュール の使い分けについて説明します。 1. Guest モジュール guest ロール を追加し、ゲストユーザーとして登録できるようにする。 管理画面へのアクセス権限はなし 。 API経由でログイン・ログアウト・登録・パスワード更新などが可能。 公開サイトのみ閲覧可能 (非公開サイトや非公開ページは見られない)。 用途 : 公開サイトに一般ユーザーを登録させ、ログイン機能を提供する。 2. Guest Private モジュール このモジュールを追加すると、さらに2つのロールが追加される: (1) guest_private_site 公開サイト + 非公開サイトを閲覧可能 (ただし、非公開ページや非公開リソースは見られない)。 用途 : サイト全体を非公開にしつつ、特定のユーザーにサイトの閲覧権限を与えたい場合。 (2) guest_private 公開サイト + 非公開サイト + 非公開ページ + 非公開リソースを閲覧可能 。 用途 : 非公開リソースを含む、特定のコンテンツを許可されたゲストユーザーだけに見せたい場合。 質問: 非公開サイトに指定したユーザーだけ閲覧できるようにしたい 解決策 Guest Private モジュールをインストールする → 通常の Guest モジュールでは非公開サイトの閲覧ができないため、Guest Private が必要。 ...

Omeka SのIIIF Serverモジュールで、表示方向を指定する

Omeka SのIIIF Serverモジュールで、表示方向を指定する

概要 Omeka SのIIIF Serverモジュールで、表示方向を指定する方法です。 IIIFでは、viewingDirectionプロパティを使用し、マニフェストやキャンバスの表示方向を指定することができます。 モジュールの設定 /admin/module/configure?id=IiifServer IIIFサーバモジュールの設定画面において、「viewing direction」の項目を探します。 Property to use for viewing directionでプロパティを指定できる他、デフォルトの表示方向を指定することもできます。 上記の例では、sc:viewingDirectionプロパティを指定していますが、任意のプロパティを設定可能です。 メタデータの追加 上記で指定したプロパティに対して、表示方向の値を入力します。 結果 以下のように、IIIFマニフェストファイルにおいても、viewingDirectionが設定され、左送りが実現できます。 参考 https://iiif.io/api/cookbook/recipe/0010-book-2-viewing-direction/ 以下、ChatGPTによる回答です。 viewingDirection プロパティには以下の4つの値を指定できます: left-to-right 左から右への表示(英語などの横書き言語に適しています)。 right-to-left 右から左への表示(アラビア語やヘブライ語、縦書きの日本語に適しています)。 top-to-bottom 上から下への表示(主に縦書きの言語に適しています)。 bottom-to-top 下から上への表示(特殊な用途向け)。 まとめ Omeka SのIIIF Serverモジュールの利用にあたり、参考になりましたら幸いです。

Omeka SのCustom Vocabモジュールを使って、他のアイテムを関連づける

Omeka SのCustom Vocabモジュールを使って、他のアイテムを関連づける

概要 Omeka SのCustom Vocabモジュールを使って、他のアイテムを関連づける機会がありましたので、備忘録です。 背景 以下の記事で、カスタム語彙の使い方を説明しました。 今回は、文字列やURIsでなく、アイテムを関連づけてみます。 アイテムセットの作成 まず、関連付け対象とするアイテムを格納するアイテムセットを作成します。 今回は、「二次利用条件表示」というアイテムセットを作成します。 「二次利用条件表示」に関するアイテムの作成 以下のように、アイテムを作成しました。 ここのアイテムは、以下のように、タイトルや内容記述、識別子などを与えます。 カスタム語彙の作成 以下のように、カスタム語彙を作成します。ポイントとして、Vocab typeにおいて「アイテム」を選択し、アイテムにおいて、前のステップで作成したアイテムセット「二次利用条件表示」を選択します。 リソーステンプレートの作成 リソーステンプレートを作成して、データタイプにおいて、作成したカスタム語彙を選択します。 任意のアイテムの作成 任意のアイテムの作成において、先に作成したリソーステンプレートを選択します。結果、以下のように、設定したアイテムセットのアイテムから値を選択するようになります。 利点 今回説明したような方法を採用することで、指定した項目から値を選択する形式になり、表記揺れを防ぐことができます。また、その値をアイテムとして設定することで、メタデータの管理を一元化することが可能です。例えば、二次利用条件表示の内容を更新したい場合は、該当する二次利用条件表示のメタデータのみを更新すればよく、関連付けた複数のアイテムを個別に更新する必要はありません。 これは、Drupalにおけるタクソノミーのような使い方に該当します。 まとめ Omeka Sの利用にあたり、参考になりましたら幸いです。

Omeka SのBulkExportを使って、特定のアイテムの指定した項目のみをエクスポートする

Omeka SのBulkExportを使って、特定のアイテムの指定した項目のみをエクスポートする

概要 Omeka SのBulkExportを使って、特定のアイテムの指定した項目のみをエクスポートする方法について紹介します。 ここでは、「Table Of Contents(dcterms:tableOfContents)」を持つアイテムのみに限定し、「タイトル(dcterms:title)」と「識別子(dcterms:identifier)」のみをエクスポートしてみます。 関連 以下の記事で、Omeka SのBulkExportモジュールの概要について説明しています。 今回は、具体的な使用例を元に説明します。 方法 以下にアクセスします。 /admin/bulk-export/bulk-export 「Add an exporter」ボタンを押します。 適当なラベルと、フォーマット(Writer)を指定します。 作成後、再度アクセスして、「Writer」タブを開きます。 そこで、「Metadata」項目から、出力したい項目を指定します。 また、「Resource query」項目から、出力したいアイテムを限定します。ここでは、「Table Of Contents(dcterms:tableOfContents)」に何かしらの値を持つ「has any value」を指定します。 以後、この設定を使用することにより、上記の条件に合致するアイテムおよび項目をエクスポートすることができます。 まとめ 検索条件や出力項目を変更して、目的に応じたエクスポートをお試しください。 本記事が参考になりましたら幸いです。

Omeka SのOaiPmhリポジトリモジュールにおいて、アイテムが公開されいているサイトページのURLを取得する

Omeka SのOaiPmhリポジトリモジュールにおいて、アイテムが公開されいているサイトページのURLを取得する

概要 Omeka SのOaiPmhリポジトリモジュールにおいて、アイテムが公開されいているサイトページのURLを取得する方法に関する備忘録です。 背景 以下の記事で、OaiPmhRepositoryを使った独自語彙の作成方法を紹介しています。 https://nakamura196.hatenablog.com/entry/2021/07/25/222651 こちらも参考にしてください。 アイテムが公開されいているサイトページのURLの取得 修正前 あるカスタマイズ事例において、以下のようにサイトページのURLを取得していました。以下は、Clean Urlモジュールにおいてdcterms:identifier以外が設定されている場合にはうまくいきません。また、/s/db/record/といったハードコーディングが見られます。 if ( $item->value( "dcterms:identifier" ) ) { $this->appendNewElement($oai, 'curation:relation', self::prefix."/s/db/record/".(string)$item->value("dcterms:identifier")->value()); } 修正後 以下のようにシンプルに記述することができました。これにより、当該アイテムが複数のサイトで公開されていても対応することができます。 $sites = $item->sites(); foreach ($sites as $key => $site) { $siteSlug = $site->slug(); $this->appendNewElement($oai, 'curation:relation', $item->siteUrl($siteSlug, true)); } まとめ Omeka Sを用いたOAI-PMHリポジトリの構築にあたり、参考になりましたら幸いです。

Omeka SのCustomOntologyモジュールを使って、クラスやプロパティを追加する

Omeka SのCustomOntologyモジュールを使って、クラスやプロパティを追加する

概要 Custom Ontologyは、LOV、schema.org、W3Cといった標準的なオントロジーが利用できないときに、独自の語彙を追加することができるモジュールです。 本モジュールの基本的な使い方については、以下を参考にしてください。 https://nakamura196.hatenablog.com/entry/2021/07/24/235050 また本モジュールを使ってすでに作成した語彙を更新する方法は以下を参考にしてください。 今回は、すでに作成した語彙に、クラスやプロパティを追加する方法に関して説明します。 方法 以下のように、「myprefix」という独自語彙が作成済みであることを前提とします。 myprefix http://localhost/ns/myprefix/ この語彙にクラスなどを新規に追加する場合には、「Create a specific ontology」のフォームは空のままにしておきます。 結果、以下のように、追加を行うことができます。 参考 すでに語彙が作成済みの場合、「Create a specific ontology」のフォームを埋めると、以下のようにエラーが発生しますので、ご注意ください。 An ontology exists for the prefix "myprefix". An error was found. Turtle cannot be created. Nothing was imported. まとめ Custom Ontologyの使用にあたり、参考になりましたら幸いです。

Omeka-S-module-FixCjkSearchのv4.1.0をリリースしました。

Omeka-S-module-FixCjkSearchのv4.1.0をリリースしました。

概要 Omeka Sの標準機能では、日本語による全文検索がうまくいかない課題に対して、以下のモジュールを作成しています。 https://github.com/nakamura196/Omeka-S-module-FixCjkSearch 本モジュールについて、本記事執筆時点のOmeka Sの最新版、v4.1.0では動作しなくなっていたため、モジュールの最新版をリリースしました。 https://github.com/omeka-j/Omeka-S-module-FixCjkSearch/releases 不完全な点もあるかと思いますが、参考になりましたら幸いです。 参考 日本語による全文検索の不具合については、以下の記事も参考にしてください。 また、日本語検索時における「たこ」「タコ」「だこ」「ダコ」などのアクセスの区別については、以下の記事を参考にしてください。

Omeka SのAdvanced Searchモジュールでの部分一致検索

Omeka SのAdvanced Searchモジュールでの部分一致検索

概要 Advanced Searchモジュールを使って、追加したフィルタで部分一致検索を行う方法について説明します。 上記では、「とる」という文字列をクエリとして、タイトルが「abc タイトル」のアイテムがヒットしています。 背景 Advanced Searchモジュールを使用すると、検索条件やファセットなどを柔軟に設定することができます。 https://omeka.org/s/modules/AdvancedSearch/ 特に、「Reference」モジュールと組み合わせることで、以下のようなファセット検索を実現できます。 フィルタの追加もできます。ただし、フィルタを用いた部分一致検索を行う場合には、設定が必要です。 上記の例では、「とる」という文字列をクエリとした際、タイトルが「abc タイトル」のアイテムがヒットしていません。 設定方法 フィルタの追加は、以下の設定画面のFiltersで行います。(slugの部分は必要に応じて読み替えてください。) /admin/search-manager/config/1/configure 上記の例では、titleとsubjectをフィルタとして以下のように追加しています。 title = Title subject = Subject advanced = Filters = Advanced = このままでは、titleおよびsubjectに対する完全一致になります。 これに対して、以下のように、Textを追加します。 title = Title = Text subject = Subject advanced = Filters = Advanced = これにより、titleについては部分一致、subjectについては完全一致、を実現することができます。 まとめ Omeka SのAdvanced Searchモジュールの利用にあたり、参考になりましたら幸いです。

Omeka Sの検索結果に表示する項目を指定する

Omeka Sの検索結果に表示する項目を指定する

概要 以下のように、検索結果に表示する項目を指定する方法について説明します。 設定 デフォルトの設定では、以下のように、「見出し」にタイトル(dcterms:title)、「Body」に説明文(dcterms:description)が表示されます。 これに対して、サイトごとの設定画面の以下の箇所を変更することにより、「見出し」「Body」それぞれに表示する項目を設定することができます。 Advanced Searchの場合 Advanced Searchモジュールを使用している場合でも、この設定は引き継がれます。 以下でソースコードを確認できます。 https://github.com/Daniel-KM/Omeka-S-module-AdvancedSearch/blob/master/view/search/resource-list.phtml browse_heading_property_termとbrowse_body_property_termの設定に基づき、表示項目が指定されています。 <?php ... $headingTerm = $setting('browse_heading_property_term'); $bodyTerm = $setting('browse_body_property_term'); ... ?> <?php if ($title): ?> <h3><?= $escape($title) ?></h3> <?php endif; ?> <ul class="resource-list search-results-list<?= $gridListMode === 'list_only' ? ' list' : ($gridListMode === 'grid_only' ? ' grid' : '') ?>"> <?php /** @var \Omeka\Api\Representation\AbstractResourceEntityRepresentation $resource */ foreach ($resources as $resource): ... $heading = $headingTerm ? $resource->value($headingTerm, ['lang' => $langValue]) : null; $heading = $heading ? $heading->asHtml() : $escape($resource->displayTitle($untitled, $lang)); $body = $bodyTerm ? $resource->value($bodyTerm, ['lang' => $langValue]) : null; $body = $body ? $body->asHtml() : $escape($resource->displayDescription(null, $lang)); ?> <li class="resource <?= $resourceType ?>"> <div class="resource-thumbnail"> <?= $hyperlink->raw($resourceThumbnail, $resourceUrl, ['class' => 'resource-link']) ?> </div> <div class="resource-metadata"> <h4><?= $resource->linkRaw($heading) ?></h4> <div class="description"> <?= $body ?> </div> </div> </li> <?php endforeach; ?> </ul> まとめ Omeka Sの検索結果に表示する項目の指定にあたり、参考になりましたら幸いです。 ...

Omeka SのCleanUrlモジュールインストール時の不具合対応

Omeka SのCleanUrlモジュールインストール時の不具合対応

概要 以下の環境で構築したOmeka SにClean Urlモジュールをインストールしようとしたところ、 PHP Version: 8.3.2 Omeka S Version: 4.0.4 Clean Url Version: 3.17.7 以下のメッセージが表示されました。 Deprecated: Creation of dynamic property CleanUrl\Router\Http\CleanRoute::$priority is deprecated in /var/www/html/vendor/laminas/laminas-router/src/SimpleRouteStack.php on line 285 この課題に対して、以下に記載したように、/modules/CleanUrl/src/Router/Http/CleanRoute.phpファイルを一部修正することにより、上記メッセージを非表示にすることができました。 https://github.com/Daniel-KM/Omeka-S-module-CleanUrl/issues/19 .htaccessファイル内のSetEnv APPLICATION_ENV "production"という記述を、SetEnv APPLICATION_ENV "development"に設定していない場合には、そもそも上記メッセージが表示されないかもしれませんが、参考になりましたら幸いです。 補足 Clean Urlモジュールでは、インストール時に、/configフォルダにcleanurl.config.phpというファイルを作成するようです。 https://gitlab.com/Daniel-KM/Omeka-S-module-CleanUrl#installation そのため、configフォルダの権限によっては、以下のようなメッセージが表示され、インストールができないケースがありました。 The file “cleanurl.config.php” in the config directory of Omeka is not writeable. このような場合、いったんconfigフォルダの権限をfilesなどを同じにして、インストールを行い、その後、元に戻す、といったプロセスが必要になるかと思われます。 こちらも参考になりましたら幸いです。

File Sideload: Omeka Sで画像を一括アップロードする

File Sideload: Omeka Sで画像を一括アップロードする

概要 Omeka Sで画像を一括アップロードするためのモジュール「File Sideload」について説明します。 https://omeka.org/s/modules/FileSideload/ 以下で公式のマニュアルが公開されています。 https://omeka.org/s/docs/user-manual/modules/filesideload/ モジュールのインストール 通常の方法でインストールできます。 https://omeka.org/s/docs/user-manual/modules/#installing-modules モジュールの設定 インストール後、以下のような設定画面に遷移します。ここで、一括登録用の画像をアップロードするためのフォルダへのパスを指定します。権限によるかと思いますが、任意のパスを指定することができるかと思います。 画像のアップロード 先に指定したフォルダに画像をアップロードします。これは、Omekaの機能を使用するのではなく、WinSCPやFileZillaなどのツールを使って、Omekaがインストールされているサーバに直接ファイルをアップロードしておきます。 メディアの登録 以下のように、右のメニューから「サイドロードするディレクトリ」を選択し、ディレクトリを選択します。 指定したディレクトリ内のファイルを再帰的に登録したい場合には、「Ingest directory recursively」オプションを有効化します。 まとめ Omeka Sへの画像の一括アップロードにあたり、「Bulk Import」モジュールを用いる方法や、REST APIと各種プログラミング言語を用いる方法、などがありますが、本記事で紹介した「File Sideload」モジュールを使用する方法も参考になりましたら幸いです。

Omeka Sの一括登録用モジュール: Bulk Importの使い方(2024-02版)

Omeka Sの一括登録用モジュール: Bulk Importの使い方(2024-02版)

概要 Omeka Sのアイテムやメディアの一括登録用モジュールとして、Bulk Importがあります。 https://github.com/Daniel-KM/Omeka-S-module-BulkImport 継続的な更新が行われており、色々と便利になっていたので、備忘録です。 インストール 通常の方法でインストールできます。ただし、Logモジュールを事前にインストールしておく必要があります。 https://github.com/Daniel-KM/Omeka-S-module-Log 使い方 ここでは、CSVファイルを使った登録例を紹介します。 設定 まず、以下にアクセスして、編集アイコンをクリックします。 /admin/bulk/importer “Importer"タブの"Mapper"項目について、“マニュアル/Manual"を選択します。これにより、CSVのカラム名とOmeka Sの項目の手動での対応付けが可能になります。 次に、“Processor"というタブに移動します。ここでの設定はあとから(CSVファイルをアップロード後)でも変更可能ですが、ここでデフォルト値を設定しておくと、間違いや設定漏れがなくなり、効率的かと思います。 設定例として、例えば"Action"を"Revise data of resouces"にします。これにより、部分的な更新(PATCH)が可能になります。具体的には、CSVのカラムにないOmeka Sの項目があった場合、Omeka Sでは当該項目の値が残り、CSVにあるカラムに対応するOmeka Sの項目のみが更新され、比較的安全な更新方法かと思われます。 その他、“Action on unidentified resources"を"Create a new resource"にしておくと、既存のリソースがあれば更新され、ない場合には新規作成される、といった処理になります。この 既存のリソースがあれば を判断する基準として、“Identifier to use for linked resources or update"を設定します。例えば、dcterms:identifierに識別子を与えている場合、その値に基づき、既存リソースの有無がチェックされます。 また、“可視性"を"非公開"にしておくと、新規登録されたリソースは非公開の設定になり、後から個別に公開/非公開を切り替えることができます。 インポート 以下にアクセスして、“CSV - Items"をクリックします。(Mediaなど、他のリソースを登録する場合には、該当するタイプを選択します。) /admin/bulk/bulk-import Step 2/4: Mapper 次の画面でCSVファイルをアップロード後、“Step 2/4: Mapper"画面に遷移します。ここで、CSVファイルとOmeka Sの項目のマッピングを行います。 上記では、visibilityのような予約語が一部使われていますが、これらは以下のファイルで確認できます。 https://github.com/Daniel-KM/Omeka-S-module-BulkImport/blob/master/data/mappings/fields_to_metadata.php 例えば、以下のように設定されており、visibilityまたはpublicは、Omeka Sのo:is_publicにマッピングされる、ということがわかります。 'visibility' => 'o:is_public', 'public' => 'o:is_public', 上記のようなルールに当てはらないカラムについては、手動でOmeka Sの項目とマッピングを行うことができます。 ...

Mirador 3でPresentation API v2のマニフェストが表示できない時の対処例

Mirador 3でPresentation API v2のマニフェストが表示できない時の対処例

概要 以下のようなPresentation API v2のマニフェストファイルをMirador 3にロードした際、表示エラーが生じました。 https://gist.githubusercontent.com/nakamura196/42fb6bca6a9fa137234c334cb313fc58/raw/4188ebccb7406ff5132331a4fecc4ace8bdd7ebc/ng.json 以下、Mirador 3での表示です。 この原因と対処法について調べたので、共有します。 原因 以下のエラーメッセージが表示されていました。IIIF v2を入力しているにもかかわらず、v3と判断されているようでした。 Error: A IIIF v3 localized property value must have an array as the value for a given language. at PropertyValue.ts:126:20 at Array.map (<anonymous>) at t.parse (PropertyValue.ts:123:29) at t.getLabel (ManifestResource.ts:35:28) at canvases.js:162:12 at index.js:67:25 at h (defaultMemoize.js:123:20) at index.js:81:40 at h (defaultMemoize.js:123:20) at Function.mapToProps (OpenSeadragonViewer.js:39:12) これは、以下のように、canvasのlabelがオブジェクトの形で記述されている際に発生するようでした。 canvases": [ { "@id": "https://islamic-architecture.aa-ken.jp/omekas/iiif/2/monument1/canvas/p1", "@type": "sc:Canvas", "label": { "type": "literal", "property_id": 1, "property_label": "Title", "is_public": true, "@value": "0001-01" }, ... } ] なお、上記の記述方法は、Presentation API ValidatorではOKでした。 ...

Omeka SのモジュールIIIF Viewersの更新

Omeka SのモジュールIIIF Viewersの更新

概要 IIIF ViewersはOmeka Sのモジュールの一つです。 https://github.com/omeka-j/Omeka-S-module-IiifViewers 最新版のリリースは以下です。 https://github.com/omeka-j/Omeka-S-module-IiifViewers/releases/latest 今回、いくつかの更新を行いましたので、備忘録です。 Universal Viewerのバージョン更新 Universal Viewerのバージョンをv4.0.25に更新しました。 合わせて、READEME.mdの以下の箇所に、Universal Viewerの更新方法を記載しました。 https://github.com/omeka-j/Omeka-S-module-IiifViewers?tab=readme-ov-file#compilation-of-universal-viewer これは、以下のモジュールの記載を参考にしています。 https://github.com/Daniel-KM/Omeka-S-module-UniversalViewer また、Miradorの更新方法も記載しましたが、既に最新版が導入されていたので、更新は行われていません。 バグ修正 以下に加えて、細かなバグを修正しました。 Module.php 以下のエラーが生じていました。 Deprecated: Creation of dynamic property IiifViewers\Module::$dependencies is deprecated in /var/www/html/modules/IiifViewers/Module.php on line 147 以下のように修正しました。 namespace IiifViewers; use Omeka\Module\AbstractModule; use IiifViewers\Form\ConfigForm; use Laminas\Mvc\Controller\AbstractController; use Laminas\EventManager\Event; use Laminas\EventManager\SharedEventManagerInterface; use Laminas\Mvc\MvcEvent; use Laminas\View\Renderer\PhpRenderer; use Laminas\ServiceManager\ServiceLocatorInterface; use Omeka\Module\Exception\ModuleCannotInstallException; use Omeka\Stdlib\Message; class Module extends AbstractModule { protected $dependencies = []; // Define the property at the beginning // Rest of your code... iiif-viewers.phtml 以下のWarningが生じていたので、いずれも修正しました。 ...

【Omeka S モジュール紹介】BulkExport:アイテムの詳細画面にエクスポート機能を追加する

【Omeka S モジュール紹介】BulkExport:アイテムの詳細画面にエクスポート機能を追加する

概要 BulkExportモジュールについて、以下の記事で、データを一括エクスポートする方法を紹介しました。 本モジュールではアイテムの詳細画面にエクスポートボタンを表示する機能も提供されています。この機能の使い方について紹介します。 使い方 インストールの方法は一般的なモジュールの方法と同様です。上記の記事でも簡単に説明しています。 モジュールを有効化すると、以下のように、アイテムの詳細画面に各種フォーマットでのエクスポートリンクが表示されます。 表示する項目は、サイトごとの設定画面で変更できます。設定画面には以下のようにアクセスします。 設定画面で下のほうにスクロールすると、Bulk Exportに関する設定画面が表示され、Formatters to display in resource pagesなどの項目で設定を変更することができます。 エクスポートリンクの見た目を変更する ここではエクスポートリンクの見た目を変更する方法について説明します。本来は新たなテーマを作成して、本モジュール用のファイルを作成すべきですが、今回はdefaultのテーマを使用します。 defaultのテーマは、以下のような場所にあります。 {Omeka Sのインストールディレクトリ}/themes/default まず、このdefaultテーマの中に、BulkExportモジュールのファイルのコピーします。例えば以下です。 cd {Omeka Sのインストールディレクトリ} mkdir themes/default/view/common cp modules/BulkExport/view/common/bulk-export.phtml themes/default/view/common バージョンによって内容は異なるかと思いますが、bulk-export.phtmlは以下のような内容になっています。 // Fake or invisible ids or no exporters. if (!count($urls)) return; $plugins = $this->getHelperPluginManager(); $url = $plugins->get('url'); $escape = $plugins->get('escapeHtml'); $assetUrl = $plugins->get('assetUrl'); $translate = $plugins->get('translate'); $escapeAttr = $plugins->get('escapeHtmlAttr'); $route = $this->status()->isAdminRequest() ? 'admin/resource-output' : 'site/resource-output'; $this->headLink()->appendStylesheet($assetUrl('css/bulk-export.css', 'BulkExport')); ?> <div class="bulk-export <?= $divclass ?>"> <?php if ($heading): ?> <h4><?= $escape($heading) ?></h4> <?php endif; ?> <ul class="exporters"> <?php foreach ($exporters as $format => $label): $labelFormat = in_array($format, ['ods', 'xlsx', 'xls']) ? sprintf($translate('Download as spreadsheet %s'), $label) : (in_array($format, ['bib.txt', 'bib.odt']) ? $translate('Download as text') : sprintf($translate('Download as %s'), $label)); ?> <li><a download="download" class="exporter download-<?= str_replace('.', '-', $format) ?>" href="<?= $escapeAttr($urls[$format ]) ?>" title="<?= $escapeAttr($labelFormat) ?>"><?= $label ?></a></li> <?php endforeach; ?> </ul> </div> ここで、aタグの内容をボタンに変更してみます。 ...

【Omeka S モジュール紹介】Scripto:転写や翻訳を行う

【Omeka S モジュール紹介】Scripto:転写や翻訳を行う

概要 Omeka Sに登録したメディア(画像など)に対して、転写や翻訳を可能にするモジュール「Scripto」について紹介します。 https://omeka.org/s/modules/Scripto/ インストール 本モジュール自体のインストールは、他の通常のモジュールと同じです。 一方、本モジュールのインストールに加えて、mediawikiをセットアップする必要があります。 Omeka Sが動作している環境であれば、mediawikiのセットアップに必要な環境も揃っているはずですので、以下のコマンドなどにより、mediawikiのダウンロードやセットアップを行います。 wget https://releases.wikimedia.org/mediawiki/1.40/mediawiki-1.40.0.zip unzip mediawiki-1.40.0.zip mv mediawiki-1.40.0 /home/bitnami/htdocs/mediawiki セットアップの環境後、例えば以下のようなURLから、mediawikiのAPIのURLにアクセスできます。 https://omekas.aws.ldas.jp/mediawiki/api.php 上記のURLをScriptoモジュールの有効後に表示される設定画面に反映します。 アイテムセットの作成 本モジュールの利用にあたっては、transcribeの対象とするアイテムを含むアイテムセットを指定する必要があります。 今回は、以下のアイテムセットを例に使用します。 https://omekas.aws.ldas.jp/omeka4/s/bootstrap/item-set/9 プロジェクトの追加 管理画面右下のモジュールに「Scripto」が追加されます。そのリンクから以下のダッシュボードを開き、プロジェクトを作成します。 タイトルとアイテムセット、および転写したテキストをインポートするためのプロパティを指定します。本モジュールでは、プロジェクトにおいて転写内容が承認されるまではアイテムのメタデータとして記録されず、転写内容が承認され、プロジェクトにおいて後述するコンテンツのインポートを実行後、ここで指定したプロパティの値として登録されます。 右上のActionsボタンからSync projectを選択する。 以下のように、アイテムが登録されます。 サイトに追加 転写のプロジェクトは独立したページが用意されます。そのため、当該ページにアクセスするため、Omeka Sの公開サイトのナビゲーションなどにプロジェクトへのリンクを設置します。 プロジェクトの公開ページ プロジェクトは以下のような公開ページを提供します。 各メディアは、以下のような編集画面を持ちます。画面左にメディアが表示され、画面右にエディタが表示されます。また承認済みか、完了済みか、等のフラグを持ちます。 https://omekas.aws.ldas.jp/omeka4/scripto/s/default/1/1/8/10/edit 管理画面では、更新履歴等が閲覧できます。 各アイテムの編集履歴も閲覧できます。 データはmediawikiに保存されます。 https://omekas.aws.ldas.jp/mediawiki/index.php?title=1:8:10 管理画面においても、以下のように登録したテキストデータを確認できます。 インポート 状態がApprovedになったメディアについては、「Import content」から、mediawikiから、Omeka Sのメタデータとして登録できます。 結果、以下のように、テキストデータがメタデータとして登録されます。 まとめ プロジェクトごとに、以下のようにReviewer等を設定することができます。 他にも様々な機能が提供されていますので、柔軟にプロジェクトの設定を変更することができそうです。Omeka Sを用いた転写・翻訳等を行う際の参考になりましら幸いです。

【Omeka S モジュール紹介】IiifPresentation:IIIF Presentation APIの追加

【Omeka S モジュール紹介】IiifPresentation:IIIF Presentation APIの追加

概要 IIIF Presentation APIを追加するIiifPresentationモジュールを試しましたので、その備忘録です。 https://omeka.org/s/modules/IiifPresentation/ なお、簡単に試した限りでは、以下のIIIF Serverモジュールが提供する機能と大きな違いはないように思いました。 https://omeka.org/s/modules/IiifServer/ 違いとして、今回のモジュールはOmeka Teamによって開発されたモジュールであり、さらに細かな設定をせずに利用できる点が利点として考えられました。 インストール 通常のモジュールのインストール手順と同じです。 使い方 アイテムIDが8であるリソースを対象に、本モジュールが提供する機能を試してみます。 以下がベースのURLです。 https://omekas.aws.ldas.jp/omeka4/ 以下のURLにアクセスすると、IIIF manifestを取得できます。 https://omekas.aws.ldas.jp/omeka4/iiif-presentation/3/item/8/manifest 次に、以下のURLにアクセスすると、Miradorのビューアへリダイレクトされます。 https://omekas.aws.ldas.jp/omeka4/iiif-presentation/3/item/8 その他、複数のアイテムIDやアイテムセットのIDを指定することで、IIIFコレクションの取得や閲覧が可能なようです。詳細については、以下をご確認ください。 https://omeka.org/s/docs/user-manual/modules/iiifpresentation/ まとめ IIIFモジュールやビューアに関するモジュール(MiradorやUniversal Viewer)をインストールせずに、本モジュールのみでマニフェストの生成とビューアによる閲覧を実現できる点は有効だと思いました。 一方、カスタマイズ性はIIIFモジュールなどのほうが優れているように思われますので、用途に応じて使い分けるのがよさそうに思いました。 他の方の参考になりましたら幸いです。