💭

「教科書の中の源氏物語LOD」を使ってみる

2024/12/15に公開

概要

「教科書の中の源氏物語LOD」を使ってみましたので、備忘録です。

https://linkdata.org/work/rdf1s10294i

以下のように説明されています。

教科書の中の源氏物語LODは、高等学校古典分野の戦後検定教科書における『源氏物語』掲載データをLOD化したものである。

「教科書の中の源氏物語LOD」を作成および公開してくださった関係者の皆様に感謝いたします。

SPARQLエンドポイントの作成

今回はDyDraを使用します。また、以下の記事を参考に、Pythonで登録しました。

https://zenn.dev/nakamura196/articles/d53d4ab238e3d1

.env
DYDRA_ENDPOINT=https://dydra.com/ut-digital-archives/genji_u/sparql
DYDRA_API_KEY=xxxxx
from dydra_py.api import DydraClient
endpoint, api_key = DydraClient.load_env("../.env")
client = DydraClient(endpoint, api_key)

# genjimaki_listの登録
client.import_by_file("./data/genjimaki_list_ttl.txt", "turtle")

# genjitext_listの登録
client.import_by_file("./data/genjitext_list_ttl.txt", "turtle")

注意点として、RDF内のURIについて、http://linkdata.org/resource/rdf1s10294i#https://linkdata.org/resource/rdf1s10294i#が一部混在しておりました。今回は、http://linkdata.org/resource/rdf1s10294i#に統一する置換処理を施したのち、SPARQLエンドポイントに登録しました。

Snorqlによる確認

構築したSPARQLエンドポイントに対して問い合わせを行うSnorqlを作成しました。

https://nakamura196.github.io/snorql_examples/genji/

例えば以下では、桐壺巻が使用されている教科書がschema:workExampleで関連付けられています。

https://nakamura196.github.io/snorql_examples/genji/?describe=http%3A%2F%2Flinkdata.org%2Fresource%2Frdf1s10294i%23genji_01

また以下では、教科書「高等古文 3」に掲載されている巻がdct:hasPartで関連づけられています。

https://nakamura196.github.io/snorql_examples/genji/?describe=http%3A%2F%2Flinkdata.org%2Fresource%2Frdf1s10294i%23text_001

Yasguiを用いた可視化

さらに、Yasguiを用いた可視化も試みました。Yasguiについては、以下も参考にしてください。

https://zenn.dev/nakamura196/articles/99c9599afbebe6

教科書毎の巻数のカウント

詳細

PREFIX dct: <http://purl.org/dc/terms/>
SELECT ?textTitle ?publisher (count(?volume) as ?count) ?text 
WHERE {
  ?text dct:hasPart ?volume;
       dct:title ?textTitle;
       dct:publisher ?publisher
}
GROUP BY ?text ?textTitle ?publisher 
ORDER BY desc(?count)

巻毎の教科書数のカウント

詳細

PREFIX dct: <http://purl.org/dc/terms/>
PREFIX schema: <http://schema.org/>
SELECT ?chapterTitle (count(?text) as ?count) 
WHERE {
  ?chapter schema:workExample ?text;
           dct:title ?chapterTitle
}
GROUP BY ?chapterTitle
ORDER BY desc(?count)

「桐壺」が最も多く含まれていることが分かります。

検定年毎の教科書数

詳細

PREFIX jp-textbook: <https://w3id.org/jp-textbook/>
SELECT (str(?year) as ?year) (count(?year) as ?count) 
WHERE {
  ?text jp-textbook:authorizedYear ?year . 
}
GROUP BY ?year
ORDER BY asc(?year)

X軸には、抜けている年がある点にご注意ください。

出版社と教科書の関係

詳細

PREFIX dct: <http://purl.org/dc/terms/>
PREFIX schema: <http://schema.org/>
construct { 
  ?book dct:publisher ?publisherURI .
  ?book dct:title ?title . 
} 
WHERE {
  ?work schema:workExample ?book;
        <https://dcmi.github.io/bibo/#:number> 1 . 
  ?book dct:publisher ?publisher;
        dct:title ?title .
  BIND(IRI(CONCAT("http://example.org/", STR(?publisher))) AS ?publisherURI)
}

桐壺巻が掲載されている教科書に限定しています。

より有効な可視化方法があるかと思いますが、出版社毎の教科書の一覧を確認できます。

まとめ

RDFデータの内容について、誤った理解をしている点もあるかもしれませんが、「教科書の中の源氏物語LOD」および各種LOD関連ツールの利用にあたり、参考になりましたら幸いです。

Discussion