RDF、TurtleやJSON-LD、およびIIIFマニフェストファイルなどの関係を理解する
概要
IIIFマニフェストがJSON-LDで記述されていることを確認するため、他のフォーマットに変換してみましたので、備忘録です。
RDFと、JSON-LDやTurtleなどのファイルフォーマットの関係、およびJSON-LDによって記述されているIIIFマニフェストファイルとの関係など、参考になりましたら幸いです。
対象
今回は、NDLデジタルコレクションで公開されている以下のマニフェストファイルを対象にします。
https://dl.ndl.go.jp/api/iiif/3437686/manifest.json
変換
EASY RDF 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データの出力フォーマットの一つであるため、他のフォーマットへの変換も機械的に実施できることがわかります。
@context
IIIFマニフェスト内の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マニフェストファイルとの関係など、参考になりましたら幸いです。
Discussion