概要
RDFストアのトリプル数を数える方法について、備忘録です。
今回は、ジャパンサーチのRDFストアを例にします。
https://jpsearch.go.jp/rdf/sparql/easy/
トリプル数
以下でトリプル数をカウントできます。
SELECT (COUNT(*) AS ?NumberOfTriples)
WHERE {
?s ?p ?o .
}
結果は以下です。
本記事の執筆時点(2024年5月6日)において、12億8064万5565トリプルありました。
NumberOfTriples
1280645565
特定のプロパティでどれだけのトリプルが接続されているか
次に、特定のプロパティでどれだけのトリプルが接続されているかをカウントしてみます。以下がクエリ例です。
SELECT ?p (COUNT(*) AS ?count)
WHERE {
?s ?p ?o .
}
GROUP BY ?p
ORDER BY DESC(?count)
結果は以下です。
schema:description で接続されるトリプルが399,447,925件、約4億件あることがわかります。
| p | count |
|---|---|
| schema:description | 399447925 |
| rdf:type | 84363276 |
| jps:relationType | 72908233 |
| jps:value | 72214780 |
| schema:name | 57377225 |
| schema:provider | 52481873 |
指定したプロパティを使用して、特定のサブジェクトとオブジェクトのタイプの組み合わせをカウントする
上記の打ち合わせの概要を知るにあたり、?subject と ?object が schema:description プロパティによって結びつけられている場合のサブジェクトタイプとオブジェクトタイプの組み合わせをカウントします。
SELECT ?subjectType ?objectType (COUNT(*) AS ?count)
WHERE {
?subject schema:description ?object .
?subject rdf:type ?subjectType .
optional {?object rdf:type ?objectType . }
}
GROUP BY ?subjectType ?objectType
ORDER BY DESC(?count)
結果は以下です。
type:図書 クラスのインスタンスをサブジェクトに持つトリプルが約9,000件ありました。
| subjectType | objectType | count |
|---|---|---|
| type:図書 | 87593194 | |
| type:動物標本 | 47068657 | |
| type:植物標本 | 46548944 | |
| type:アクセス情報 | 33291083 | |
| type:雑誌 | 21643930 | |
| type:行政文書 | 11780814 |
インスタンスをカウントしてみる
以下のクエリにより、type:図書 クラスのインスタンスをサブジェクトに持ち、schema:description をプロパティに持つトリプルの組み合わせをカウントしてみます。
SELECT ?subject (COUNT(*) AS ?count)
WHERE {
?subject schema:description ?object .
?subject rdf:type type:図書 .
}
GROUP BY ?subject
ORDER BY desc(?count)
結果は以下です。
1つのインスタンスが多くのschema:description で接続されるトリプルを持つことがわかります。
実際に以下にアクセスしてみると、確かに251件のトリプルを持つことが確認できました。
https://jpsearch.go.jp/data/bibnl-20601759
まとめ
RDFストア内のトリプル数の分析などにあたり、参考になりましたら幸いです。