統計LODの基本的な使い方

本サイトでは、SPARQLでLODデータを取得するためのエンドポイント画面を提供しています。
SPARQLはRDFを用いて定義されたデータを取得するためのクエリー言語です。
また、地理空間情報を含むデータを取得するためのクエリー言語として、GeoSPARQLがあります。
SPARQL エンドポイント」では、SPARQLやGeoSPARQLによって記載したクエリーを実行し、データを取得することができます。

このページでは、「SPARQL エンドポイント」を利用して、統計LODのデータを取得する方法をご紹介します。
なお、データの取得の際に使用するRDFスキーマ情報は、「RDFスキーマ情報」をご参照ください。

SPARQLによるデータの取得

統計LODでは、「SPARQL Queryのサンプル」で実行可能ないくつかのサンプルクエリーを提供していますが、そのうち「新宿区の日本人の人口を求める」クエリーを使って、SPARQLによる基本的なデータ取得の方法をご紹介します。

「新宿区の日本人の人口を求める」クエリー

2行目はSELECT句で、取得する対象を指定します。
3行目以降は検索条件を指定します。検索条件は、主語、述語、目的語の3つの要素の組合せ(トリプル)で表現します。
(ア)は、データを取得する対象の変数を含んだトリプルです。

ここでは主語はセルIDとなります。このクエリーは人口を取得するためのクエリーですが、セルIDが不明のため、主語(セルID)も変数としています。セルIDは「?s」、人口は「?o」という変数名を付けています。
このため、セルIDと人口をいずれも検索しますが2行目のSELECT句で結果を取得する対象として人口(?o)を指定しているため、クエリーの結果としては人口のみが取得されます。
この条件のみで検索を行うと、登録されている人口全てが取得されます。 そこで、5行目以降で、さらに対象を絞り込みます。次元の値を目的語として設定することで、その条件に合致したデータを取得することができます。

(イ)では、検索対象の地域を指定しています。セルIDについて地域が新宿区であるという定義は、実際のデータは2つのトリプル(主語-述語-目的語の組合せ)によって定義されていますが、ここでは「/」によって2つのトリプルをまとめて1行で表しています。
これはまとめずにそれぞれを記載することも可能です。トリプルごとに記載する場合は以下のようになります。

(ウ)ではさらに検索条件を絞り込みます。

検索条件を複数設定した場合、上記の構文の場合はすべてAND条件(論理積)となります。
そのため、例えば「次元の値」を複数設定するような場合は、OR条件(論理和)で取得するための記述が必要となります。
OR条件(論理和)で取得する場合は「UNION」を使用します。
「新宿区の日本人の人口を求める」クエリーをもとに、OR条件(論理和)で取得するための記述方法の例を以下に示します。
次元「男女の別」の次元の値が「男」の場合と「女」の場合の人口を一度で取得する場合のクエリーの例です。

GeoSPARQLによるデータの取得

統計LODでは、小地域、及びメッシュ別のデータも提供しています。
小地域コード、メッシュコードについては、各地域のポリゴンも定義しているため、緯度、経度によって地域を特定することができます。
「東経139.48度、北緯35.92度の地点を含む小地域を取得する」クエリーを使って、小地域コードの取得方法をご紹介します。

「東経139.48度、北緯35.92度の地点を含む小地域を取得する」クエリー

(ア)では、ポリゴンに対して、緯度、経度での絞込みを行います。

4行目は小地域コードを主語としています。
ポリゴンは小地域コードに直接定義していないため、4行目でポリゴンを定義しているURIを取得します。
7行目は、4行目で取得したポリゴンを定義しているURIが主語となります。ここで小地域コードに定義されるポリゴンが取得できます。
さらに8行目で、緯度、経度で指定した地点が含まれるポリゴンを絞り込みます。

(イ)では、絞り込まれた地域の名称等を取得します。

5行目で小地域の名称、6行目で小地域が属する市区町村の名称を取得します。
それぞれ、「?area」「?municipality」という変数名を付けています。