概要

本章では、ジャパンサーチのRDFストアに対して、更新日ごとに関連するCHO(Cultural Heritage Object)の数をカウントし、最新の日付から降順にソートして表示するSPARQLクエリを紹介します。このクエリは、ジャパンサーチのデータ全体の更新状況を時系列で俯瞰するために有用です。

CHO(Cultural Heritage Object)とは

ジャパンサーチの利活用スキーマにおいて、CHO(Cultural Heritage Object、文化遺産オブジェクト)は、書籍、絵画、彫刻、写真、地図など、あらゆる文化資源のメタデータを表現するための中心的な概念です。各CHOは一意のURIを持ち、jps:sourceInfoを通じてソース情報(データ提供元の情報や更新日など)に関連付けられています。

RDFのトリプル(主語・述語・目的語の3つ組)で表現すると、例えば以下のようになります。

<<hhttttppss:://jjppsseeaarrcchh..ggoo..jjpp//ddaattaa//ccoobbaass--1122334455>#sjopusr:cseoiunrfcoe>Insfcohe<mhat:tdpast:e/M/ojdpisfeiaerdch".2g0o2.3j-p0/8d-a0t1a"/^c^oxbsads:-d1a2t3e45.#sourceinfo>

ここでcobas-12345がCHOのURIであり、そのソース情報を通じて更新日2023-08-01が記録されています。

SPARQLクエリ

基本的なクエリ

以下のクエリは、更新日ごとのCHO数をカウントし、最新の日付から順にソートして表示します。

PREFIX jps: <https://jpsearch.go.jp/term/property#>
PREFIX schema: <http://schema.org/>

SELECT ?date (COUNT(?cho) AS ?count) WHERE {
  ?cho jps:sourceInfo/schema:dateModified ?date .
}
GROUP BY ?date
ORDER BY DESC(?date)

クエリの解説

  1. ?cho jps:sourceInfo/schema:dateModified ?date: プロパティパスを使用して、CHOからソース情報を経由して更新日を一度に取得しています。jps:sourceInfoschema:dateModifiedの2つのプロパティを/で連結することで、中間ノード(ソース情報)を明示的に記述せずに済みます。
  2. COUNT(?cho) AS ?count: 各更新日に関連するCHOの数をカウントします。COUNTはSPARQLの集約関数で、グループ内の行数を数えます。
  3. GROUP BY ?date: 更新日ごとにグループ化します。GROUP BYを使用しないと、COUNTは全体の件数を1つだけ返します。
  4. ORDER BY DESC(?date): DESC(降順)を指定して、最新の日付から順に結果を表示します。ASCに変更すると、最も古い日付から順に表示されます。

LIMIT付きクエリ

結果が多い場合は、LIMITを使って表示件数を制限できます。

PREFIX jps: <https://jpsearch.go.jp/term/property#>
PREFIX schema: <http://schema.org/>

SELECT ?date (COUNT(?cho) AS ?count) WHERE {
  ?cho jps:sourceInfo/schema:dateModified ?date .
}
GROUP BY ?date
ORDER BY DESC(?date)
LIMIT 30

このクエリでは、最新の30日分のデータのみを取得します。

年単位での集計

日単位ではなく年単位で集計したい場合は、YEAR関数を使用します。

PREFIX jps: <https://jpsearch.go.jp/term/property#>
PREFIX schema: <http://schema.org/>

SELECT ?year (COUNT(?cho) AS ?count) WHERE {
  ?cho jps:sourceInfo/schema:dateModified ?date .
  BIND(YEAR(?date) AS ?year)
}
GROUP BY ?year
ORDER BY DESC(?year)

BIND式を使って日付から年を抽出し、年ごとにグループ化しています。この形式のクエリは、ジャパンサーチのデータ蓄積の長期的な推移を把握するのに適しています。

出力結果の例

クエリの実行結果として、以下のような形式のデータが得られます。

datecount
2023-08-1515000
2023-08-148500
2023-08-1012000
2023-07-255000
2023-07-2022000

各行は、その日に更新されたCHOの数を示しています。数値の大きい日には、大規模なデータ更新やバッチ処理が行われたことが推測されます。

時系列分析の観点

このクエリの結果を時系列で分析すると、以下のような知見を得ることができます。

  • データ更新の頻度: データが定期的に更新されているか、不定期に更新されているかを把握できます。
  • 大規模更新のタイミング: 特定の日に大量のデータが更新されている場合、新しいデータセットの追加や既存データの一括更新が行われたことが分かります。
  • データ品質のモニタリング: 更新が長期間途切れている場合、データ連携に問題が生じている可能性を示唆します。

RDFストアのトリプル数やその構成を分析することは、データセットの全体像を理解するための重要な手法です。本クエリのような集計は、ジャパンサーチのようなアグリゲーションサービスにおけるデータの動態を把握するための基礎的なアプローチとなります。

関連記事