RDF化された統計データの検索は、前回の記事で紹介したSPARQL(参考文献4)で行います。例えば、表1と下記の表2に示す都道府県の人口と面積のデータがRDFの形式で用意されているとします。
この時、「2010年の各都道府県の人口密度」を求めるクエリ表現は下記のようになります。ここでは、「面積」に相当する測度のURIを「eg:area」としています。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX eg: <http://example/properties/> SELECT DISTINCT ?prefecture_label (?area/?population) As ?population_density WHERE{ ?cell1 eg:population ?population. ?cell1 eg:refPrefecture ?prefecture_uri. ?cell1 eg:refYear eg:year-2010. ?cell2 eg:area ?area. ?cell2 eg:refPrefecture ?prefecture_uri. ?cell2 eg:refYear eg:year-2010. ?prefecture_uri rdfs:label ?prefecture_label. }
SPARQLクエリのWHERE句には、2010年の各都道府県の人口と面積(以下の図2の(3)参照)を抽出するためのグラフパターンを指定しています。具体的には、SPARQLクエリの5〜7行目において2010年の都道府県別の人口(図2の(1)参照)を指定し、8〜10行目において2010年の都道府県別の面積(図2の(2)参照)を指定しています。また、11行目では、都道府県のURIのラベルを抽出しています。SELECT句では、WHERE句で指定されたグラフパターンの中から都道府県のラベルと人口と面積を参照する変数(図2で灰色の長方形で表されている変数)を抽出して、人口と面積から人口密度を算出し、最終的に都道府県のラベルと人口密度を取得したい値として指定しています。
また、外部データであるDBpedia Japanese(参考文献5)と連携した検索も可能です。例えば、下記のクエリ表現により、2010年のある都道府県とその隣接都道府県の人口を取得することができます。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX eg: <http://example/properties/> PREFIX prop-ja: < http://ja.dbpedia.org/property/> SELECT DISTINCT ?prefecture_label ?population ?rinsetsu_label ?rinsetsu_population WHERE{ ?cell1 eg:population ?population. ?cell1 eg:refYear eg:year-2010. ?cell1 eg:refPrefecture ?prefecture_uri. ?prefecture_uri rdfs:label ?prefecture_label. SERVICE <http://ja.dbpedia.org/sparql> { SELECT ?prefecture_uri ?rinsetsu_uri WHERE { ?prefecture_uri prop-ja:隣接都道府県 ?rinsetsu_uri. } } ?cell2 eg:population ?rinsetsu_population. ?cell2 eg:refYear eg:year-2010. ?cell2 eg:refPrefecture ?rinsetsu_uri. ?rinsetsu_uri rdfs:label ?rinsetsu_label. }
他のSPARQLエンドポイントへの検索を行う際は、11〜14行目にあるようにSERVICE句に検索をしたいエンドポイントを指定します。また、SERVICE句内外で同一の変数を用いることで、それらの値を結合することができます。
Copyright © ITmedia, Inc. All Rights Reserved.