🚀

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

2024/02/06に公開

概要

以下のような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)

これは、以下のように、canvaslabelがオブジェクトの形で記述されている際に発生するようでした。

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でした。

https://presentation-validator.iiif.io/

対処法

以下のように、labelを単純な文字列にすることで、上記のエラーを回避できました。

canvases": [
    {
        "@id": "https://islamic-architecture.aa-ken.jp/omekas/iiif/2/monument1/canvas/p1",
        "@type": "sc:Canvas",
        "label": "0001-01",
        ...
    }
]

https://gist.githubusercontent.com/nakamura196/42fb6bca6a9fa137234c334cb313fc58/raw/4188ebccb7406ff5132331a4fecc4ace8bdd7ebc/ok.json

以下、Mirador 3での表示例です。

まとめ

今回の原因となったlabelがオブジェクトとして記述される現象は、Omeka SのIIIF Serverモジュールの特定のバージョンを使用している際に発生するようでした。最新版などに更新することで、今回のlabelの修正も行われているようでした。

https://omeka.org/s/modules/IiifServer/

同様の問題でお困りの方の参考になりましたら幸いです。

Discussion