石造物の3DモデルをWikimedia Commonsで公開している石造物3Dアーカイブでは、石造物のメタ情報をウィキデータでも公開しています。ウィキデータでは、主語(項目)、述語(プロパティ)、目的語(値)の3つ組でデータを定義し、これを主張(claim)と呼びます。主張には、その情報源(出典の情報)を付けたり、修飾子を用いてさらに詳細化したりすることができ、それらを含めて文(Statements)と呼びます。
横浜市緑区の耕雲庵にある二十三夜塔の項目 Q80520857 では、石塔の高さについて以下のような文があります。
2つの石で構成されている塔の高さに関して、全高64センチメートルと21センチメートルという2つ主張があります。あてはまる部分(P518)という修飾子を用いることにより、前者は上部の角柱(本体)部分の高さであり、後者は台石の高さであることを示しています。また、それぞれの主張に対して、情報源が「 横浜市文化財調査報告書 第二十一輯の一」(Q87642122)であることを示しています。これらの、主張についてのメタ情報をWikidata Query Serviceで取得するには、特別なSPARQLクエリが必要になります。
修飾子の情報を取得する
石造物に刻まれた銘(P1684)には、あてはまる部分(P518)とオブジェクトの役割(P3831)の2つの修飾子を用いて、その銘文がどこに刻まれており何であるのかを示しています。そこで、この2つの修飾子付きで銘文を取得します。
はじめに、修飾子によるメタ情報なしで単に銘文だけを取得するSPARQLクエリは以下のようになります。
SELECT ?item ?itemLabel ?mei WHERE { ?item wdt:P17 wd:Q17; wdt:P4896 ?model; wdt:P1684 ?mei. SERVICE wikibase:label { bd:serviceParam wikibase:language "ja". } }
WHERE文の最初で、国(P17)を日本(Q17)に限定し、次に3Dモデル(P4896)を持つ項目に限定しています。ここで銘(P1684)を持つ項目を取得すると、現在のところ石造物3Dアーカイブで入力した石造物の項目とその銘だけを取得することができます。
SERVICE wikibase:label { bd:serviceParam wikibase:language "ja". }
は、項目の日本語ラベルを取得するためのウィキデータ独自の機能です。
Wikidata Query Serviceで実行すると以下のような結果が得られます。
次に、修飾子付きで銘文を取得するクエリは以下のようになります。
SELECT ?item ?itemLabel ?mei ?whereLabel ?whatLabel WHERE { ?item wdt:P17 wd:Q17; wdt:P4896 ?model; p:P1684 ?statement. ?statement ps:P1684 ?mei. OPTIONAL { ?statement pq:P518 ?where. } OPTIONAL { ?statement pq:P3831 ?what. } SERVICE wikibase:label { bd:serviceParam wikibase:language "ja". } }
銘(P1684)を取得するための
wdt:P1684 ?mei.
が
p:P1684 ?statement.
に代わっています。プレフィクス p: を使用すると、目的語(値)ではなく文を取得することができ、これを主語として使用することにより文に含まれる様々なデータを取得することができます。
文を主語として、その目的語を取得するには、プレフィクス ps: を使用します。
?statement ps:P1684 ?mei.
つまり、
?item wdt:P1684 ?mei.
と
?item p:P1684 ?statement. ?statement ps:P1684 ?mei.
は同じということになります。
文に付けられた修飾子の情報を取得するには、修飾子にプレフィクス pq: を使用します。
ただし、修飾子は必ず付いているとは限らないため、OPTIONAL で括り、あてはまる部分(P518)とオブジェクトの役割(P3831)の値を取得します。
OPTIONAL { ?statement pq:P518 ?where. } OPTIONAL { ?statement pq:P3831 ?what. }
実行結果は以下のようになります。
情報源を取得する
情報源の取得はさらに1ステップ手順が増えます。
情報源には、出典(P248)の他にも出典URL(P854)などがありますが、ここでは、全高(P2048)に付けられた出典(P248)を取得することにします。
SPARQLクエリは以下のようになります。情報源の他に修飾子あてはまる部分(P518)もOPTIONALとして取得します。
SELECT ?item ?itemLabel ?height ?whereLabel ?ref ?refLabel WHERE { ?item wdt:P17 wd:Q17; wdt:P4896 ?model; p:P2048 ?statement. ?statement ps:P2048 ?height; prov:wasDerivedFrom ?refnode. ?refnode pr:P248 ?ref. OPTIONAL { ?statement pq:P518 ?where. } SERVICE wikibase:label { bd:serviceParam wikibase:language "ja". } }
WHERE文の3行目の
p:P2048 ?statement.
で全高についての文を取得し、
?statement ps:P2048 ?height;
でその値を取得しています。次に
prov:wasDerivedFrom ?refnode.
で情報源を取得し、この情報源を主語として
?refnode pr:P248 ?ref.
で出典(P248)の値を取得します。情報源の値を取得する場合にはプレフィクス pr: を使用します。
実行すると以下のような結果が得られます。