概要
IIIFマニフェストがJSON-LDで記述されていることを確認するため、他のフォーマットに変換してみましたので、備忘録です。
RDFと、JSON-LDやTurtleなどのファイルフォーマットの関係、およびJSON-LDによって記述されているIIIFマニフェストファイルとの関係など、参考になりましたら幸いです。
対象
今回は、NDLデジタルコレクションで公開されている以下のマニフェストファイルを対象にします。
https://dl.ndl.go.jp/api/iiif/3437686/manifest.json
変換
EASY RDF Converterを使用します。
https://www.easyrdf.org/converter
以下のように、IIIFマニフェストファイルのURLを指定して、Input FormatにJSON-LD、Output FormatにTurtleを指定します。

結果、以下のように変換されました。
@prefix ns0: <http://iiif.io/api/presentation/2#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/terms/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix exif: <http://www.w3.org/2003/12/exif/ns#> .
@prefix dc11: <http://purl.org/dc/elements/1.1/> .
@prefix ns1: <http://rdfs.org/sioc/services#> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix oa: <http://www.w3.org/ns/oa#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<https://dl.ndl.go.jp/api/iiif/3437686/manifest.json>
a <http://iiif.io/api/presentation/2#Manifest> ;
ns0:attributionLabel "国立国会図書館 National Diet Library, JAPAN"^^xsd:string ;
ns0:hasRanges (
<https://dl.ndl.go.jp/api/iiif/3437686/range/1>
<https://dl.ndl.go.jp/api/iiif/3437686/range/2>
<https://dl.ndl.go.jp/api/iiif/3437686/range/3>
<https://dl.ndl.go.jp/api/iiif/3437686/range/4>
<https://dl.ndl.go.jp/api/iiif/3437686/range/5>
<https://dl.ndl.go.jp/api/iiif/3437686/range/6>
<https://dl.ndl.go.jp/api/iiif/3437686/range/7>
<https://dl.ndl.go.jp/api/iiif/3437686/range/8>
<https://dl.ndl.go.jp/api/iiif/3437686/range/9>
<https://dl.ndl.go.jp/api/iiif/3437686/range/10>
<https://dl.ndl.go.jp/api/iiif/3437686/range/11>
<https://dl.ndl.go.jp/api/iiif/3437686/range/12>
<https://dl.ndl.go.jp/api/iiif/3437686/range/13>
<https://dl.ndl.go.jp/api/iiif/3437686/range/14>
<https://dl.ndl.go.jp/api/iiif/3437686/range/15>
<https://dl.ndl.go.jp/api/iiif/3437686/range/16>
) ;
ns0:hasSequences ( _:genid18 ) ;
ns0:metadataLabels (
_:genid20
_:genid22
_:genid24
_:genid26
_:genid28
_:genid30
_:genid32
_:genid34
_:genid36
_:genid38
_:genid40
) ;
dc:rights <https://dl.ndl.go.jp/ja/iiif_license.html> ;
rdfs:label "校異源氏物語. 巻一"^^xsd:string ;
rdfs:seeAlso <https://dl.ndl.go.jp/api/oaipmh?verb=GetRecord&metadataPrefix=dcndl_porta&identifier=oai:dl.ndl.go.jp:info:ndljp/pid/3437686> ;
foaf:logo <https://dl.ndl.go.jp/img/logo/ndldc/iiif-logo.png> .
<https://dl.ndl.go.jp/api/iiif/3437686/range/1>
a ns0:Range ;
ns0:hasCanvases ( <https://dl.ndl.go.jp/api/iiif/3437686/canvas/3> ) ;
rdfs:label "校異源氏物語 卷一"^^xsd:string .
<https://dl.ndl.go.jp/api/iiif/3437686/canvas/3>
a ns0:Canvas ;
ns0:hasImageAnnotations ( _:genid43 ) ;
rdfs:label "3"^^xsd:string ;
exif:height 4706 ;
exif:width 6890 .
<https://dl.ndl.go.jp/api/iiif/3437686/range/2>
a ns0:Range ;
ns0:hasCanvases ( <https://dl.ndl.go.jp/api/iiif/3437686/canvas/19> ) ;
rdfs:label "目次"^^xsd:string .
<https://dl.ndl.go.jp/api/iiif/3437686/canvas/19>
a ns0:Canvas ;
ns0:hasImageAnnotations ( _:genid46 ) ;
rdfs:label "19"^^xsd:string ;
exif:height 4706 ;
exif:width 6890 .
...
RDF/XMLにも変換してみます。
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ns0="http://iiif.io/api/presentation/2#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:dc11="http://purl.org/dc/elements/1.1/"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:oa="http://www.w3.org/ns/oa#"
xmlns:ns1="http://rdfs.org/sioc/services#"
xmlns:doap="http://usefulinc.com/ns/doap#"
xmlns:exif="http://www.w3.org/2003/12/exif/ns#">
<rdf:Description rdf:about="https://dl.ndl.go.jp/api/iiif/3437686/manifest.json">
<rdf:type rdf:resource="http://iiif.io/api/presentation/2#Manifest"/>
<ns0:attributionLabel rdf:datatype="http://www.w3.org/2001/XMLSchema#string">国立国会図書館 National Diet Library, JAPAN</ns0:attributionLabel>
<ns0:hasRanges>
<rdf:Description>
<rdf:first>
<ns0:Range rdf:about="https://dl.ndl.go.jp/api/iiif/3437686/range/1">
<ns0:hasCanvases>
<rdf:Description>
<rdf:first rdf:resource="https://dl.ndl.go.jp/api/iiif/3437686/canvas/3"/>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>
</ns0:hasCanvases>
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">校異源氏物語 卷一</rdfs:label>
</ns0:Range>
</rdf:first>
...
JSON-LDはRDFデータの出力フォーマットの一つであるため、他のフォーマットへの変換も機械的に実施できることがわかります。
IIIFマニフェスト内の@context
JSON-LDファイルは、多くの場合、@contextプロパティを持ちます。今回対象としているIIIFマニフェストファイルの場合、以下のように記述されています。
{
"@context": "http://iiif.io/api/presentation/2/context.json",
"@type": "sc:Manifest",
"@id": "https://dl.ndl.go.jp/api/iiif/3437686/manifest.json",
"label": "校異源氏物語. 巻一",
"metadata": [],
"license": "https://dl.ndl.go.jp/ja/iiif_license.html",
...
}
@contextプロパティで指定されている以下の中身を確認してみます。
http://iiif.io/api/presentation/2/context.json
以下のようなJSONが表示され、例えば、licenseというプロパティに対して、@typeが@id、@idがdcterms:rightsと記述されています。
{
"@context": [
{
"sc": "http://iiif.io/api/presentation/2#",
...
"dcterms": "http://purl.org/dc/terms/",
...
"as": "http://www.w3.org/ns/activitystreams#",
"license": {
"@type": "@id",
"@id": "dcterms:rights"
},
...
}
これにより、IIIFマニフェストファイル内の"license": "https://dl.ndl.go.jp/ja/iiif_license.html"という記述は、プロパティとしてはdcterms:rightsであり、https://dl.ndl.go.jp/ja/iiif_license.htmlという値はリソースとして扱う、ということが指示されています。
先のTurtleの出力結果を確認すると、そのように変換されていることが確認できます。
@prefix dc: <http://purl.org/dc/terms/> .
...
<https://dl.ndl.go.jp/api/iiif/3437686/manifest.json>
a <http://iiif.io/api/presentation/2#Manifest> ;
ns0:attributionLabel "国立国会図書館 National Diet Library, JAPAN"^^xsd:string ;
...
dc:rights <https://dl.ndl.go.jp/ja/iiif_license.html> ;
なお、出力結果におけるプレフィックスdcは、http://purl.org/dc/terms/を指しており、これはIIIFマニフェストの@contextにおける定義と一致しています。このため、Turtle形式への変換が適切に行われていることが確認できます。
まとめ
RDFとJSON-LDやTurtleなどのファイルフォーマットの関係、およびJSON-LDによって記述されているIIIFマニフェストファイルとの関係など、参考になりましたら幸いです。