概要

RDFストアのトリプル数を数える方法について、備忘録です。

今回は、ジャパンサーチのRDFストアを例にします。

https://jpsearch.go.jp/rdf/sparql/easy/

トリプル数

以下でトリプル数をカウントできます。

SW}EHLE?ERsCET?{p(C?OoUNT(*)AS?NumberOfTriples)

結果は以下です。

https://jpsearch.go.jp/rdf/sparql/easy/?query=SELECT+(COUNT(*)+AS+%3FNumberOfTriples) WHERE+{ ++%3Fs+%3Fp+%3Fo+. }

本記事の執筆時点(2024年5月6日)において、12億8064万5565トリプルありました。

NumberOfTriples

1280645565

特定のプロパティでどれだけのトリプルが接続されているか

次に、特定のプロパティでどれだけのトリプルが接続されているかをカウントしてみます。以下がクエリ例です。

SW}GOEHRRLE?ODERsUECEPRT?{pBB?YYp?o?D(pECSOCU(N?Tc(o*u)ntA)S?count)

結果は以下です。

https://jpsearch.go.jp/rdf/sparql/easy/?query=SELECT+%3Fp+(COUNT(*)+AS+%3Fcount) WHERE+{ ++%3Fs+%3Fp+%3Fo+. } GROUP+BY+%3Fp ORDER+BY+DESC(%3Fcount)

schema:description で接続されるトリプルが399,447,925件、約4億件あることがわかります。

pcount
schema:description399447925
rdf:type84363276
jps:relationType72908233
jps:value72214780
schema:name57377225
schema:provider52481873

指定したプロパティを使用して、特定のサブジェクトとオブジェクトのタイプの組み合わせをカウントする

上記の打ち合わせの概要を知るにあたり、?subject と ?object が schema:description プロパティによって結びつけられている場合のサブジェクトタイプとオブジェクトタイプの組み合わせをカウントします。

SW}GOEHRRLE??oODERsspUECEuutPRTbbi{jjoBB?eenYYsccauttl?DbsEjsr{uSecd?bCchfoj(te:be?Tmtjccyayetop:pcTuedetynept?s?re)ocsdbruf?jib:oepjtbcteyjticpeTotecynTtpy?Te?poyoebp(bjeCj.eOecUctNtTTy(.p*e).AS}?count)

結果は以下です。

https://jpsearch.go.jp/rdf/sparql/easy/?query=SELECT+%3FsubjectType+%3FobjectType+(COUNT(*)+AS+%3Fcount) WHERE+{ ++%3Fsubject+schema%3Adescription+%3Fobject+. ++%3Fsubject+rdf%3Atype+%3FsubjectType+.+ ++optional+{%3Fobject+rdf%3Atype+%3FobjectType+.+} } GROUP+BY+%3FsubjectType+%3FobjectType ORDER+BY+DESC(%3Fcount)

type:図書 クラスのインスタンスをサブジェクトに持つトリプルが約9,000件ありました。

subjectTypeobjectTypecount
type:図書87593194
type:動物標本47068657
type:植物標本46548944
type:アクセス情報33291083
type:雑誌21643930
type:行政文書11780814

インスタンスをカウントしてみる

以下のクエリにより、type:図書 クラスのインスタンスをサブジェクトに持ち、schema:description をプロパティに持つトリプルの組み合わせをカウントしてみます。

SW}GOEHRRLE??ODERssUECEuuPRTbb{jjBB?eeYYsccutt?dbsejsrusecdbcchfj(te:e?mtcc(aytoC:puOdenUetNst)Tcy(rp*ie)p:tAiSon.?c?ooubnjte)ct.

結果は以下です。

https://jpsearch.go.jp/rdf/sparql/easy/?query=SELECT+%3Fsubject+(COUNT(*)+AS+%3Fcount) WHERE+{ ++%3Fsubject+schema%3Adescription+%3Fobject+. ++%3Fsubject+rdf%3Atype+type%3A図書+. } GROUP+BY+%3Fsubject ORDER+BY+desc(%3Fcount)

1つのインスタンスが多くのschema:description で接続されるトリプルを持つことがわかります。

subjectcount
https://jpsearch.go.jp/data/bibnl-20601759251
https://jpsearch.go.jp/data/bibnl-23328672213
https://jpsearch.go.jp/data/bibnl-22858450211
https://jpsearch.go.jp/data/bibnl-20579860186
https://jpsearch.go.jp/data/bibnl-20919858171
https://jpsearch.go.jp/data/bibnl-21013375170
https://jpsearch.go.jp/data/bibnl-20787748168
https://jpsearch.go.jp/data/bibnl-22866452165

実際に以下にアクセスしてみると、確かに251件のトリプルを持つことが確認できました。

https://jpsearch.go.jp/data/bibnl-20601759

まとめ

RDFストア内のトリプル数の分析などにあたり、参考になりましたら幸いです。