LOD(Linked Open Data)のデータの扱いについては、作成・保存作業と、取り出し作業の2つに分けることができます。
そのうち、第33回WordBench大阪の勉強会では、SPARQL言語によるLODの取り出し作業に関するセッションがありました。
具体的には、大阪市が公開している行政資料にもとづく、施設の名称と位置(緯度・経度)を取り出す方法についてです。そのとき取っていたメモを元に、自分なりにまとめてみました。
データの取り出し方
1.エンドポイントへのアクセス
大阪市のエンドポイントにアクセスします。
http://db.lodosaka.jp/sparql
アクセスすると、SPARQL言語でデータを取り出すために記述するエディターが立ち上がります。ここでいうエンドポイントとは、大阪市が公開しているデータを取り込めるURLのことです。
2.SPARQL言語の記述
エンドポイントエディターに下記のSPARQL言語を入力します。主語(s)としての、title(施設名称)、lat(緯度)、long(経度)を取り出すための問合せです。
[php]
// URI・緯度・経度の取得のための問合せ
select ?s ?title ?lat ?long
where {
?s <http://www.w3.org/2000/01/rdf-schema#label> ?title .
?s <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat .
?s <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long .
}
[/php]
ちなみに今回の問い合わせで使ったSPARQL言語を、URLで表すとこうなります。このURLをブラウザのアドレス欄にコピペしても、同じ結果が返ってきます。
http://db.lodosaka.jp/sparql?default-graph-uri=&query=select+%3Fs+%3Ftitle+%3Flat+%3Flong%0D%0Awhere+%7B%0D%0A%3Fs+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23label%3E+%3Ftitle+.%0D%0A%3Fs+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23lat%3E+%3Flat+.%0D%0A%3Fs+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23long%3E+%3Flong+.%0D%0A%7D&format=text%2Fhtml&timeout=0&debug=on
このURLには、後ろの方に”format=text”と言う部分があります。”text”を“json”や“xml”に変えれば 取り出せるデータの形式を変えることができます。
3.問合せ結果の表示
行政施設の名称と位置(緯度・経度)の一覧が返ってきます。
表の1列目には、http://osakacity.lod/bridge/62 というかんじのURLがあります。このURLに”菅原城北大橋”(title)、34.7337(lat)、135.536(long)という主語(S)の情報が、入っていることになります。
ただし、このURL自体はブラウザに入力しても、何も表示されません。
疑問に思うこと
2.でSPARQL言語の代わりとなるURLについて、取り出すデータ形式をjson形式やxml形式に変えることができると書きました。ですが、個人的に2つの疑問が残ります。
- ブラウザにURLを入力し、リロードするとsparqlファイルのダウンロードがはじまる
- ダウンロードファイルをテキストエディタで開くと、json形式やxml形式のデータには見えない
[php]
<sparql xmlns="http://www.w3.org/2005/sparql-results#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd">
<head>
<variable name="s"/>
<variable name="title"/>
<variable name="lat"/>
<variable name="long"/>
</head>
<results distinct="false" ordered="true">
<result>
<binding name="s"><uri>http://osakacity.lod/bridge/62</uri></binding>
<binding name="title"><literal>菅原城北大橋</literal></binding>
<binding name="lat"><literal datatype="http://www.w3.org/2001/XMLSchema#double">34.7337</literal></binding>
<binding name="long"><literal datatype="http://www.w3.org/2001/XMLSchema#double">135.536</literal></binding>
</result>
[/php]
これらの疑問については、別の機会で調べて見たいと思います。
追記
この記事を公開したあと、読者の方から「疑問」について、アドバイスをいただくことができました。
http://db.lodosaka.jp/sparql?default-graph-uri=&query=select+%3Fs+%3Ftitle+%3Flat+%3Flong%0D%0Awhere+%7B%0D%0A%3Fs+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23label%3E+%3Ftitle+.%0D%0A%3Fs+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23lat%3E+%3Flat+.%0D%0A%3Fs+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23long%3E+%3Flong+.%0D%0A%7D&format=application%2Fjson&timeout=0&debug=on
として、ブラウザにURLを入力すると、json形式データを表示することできました。ありがとうございました!
追記その2(2014年10月1日)
上記で紹介した大阪市のデータを取り出す方法は、2014年10月1日より変更します。変更のポイントは次の2点です。
- SPARQLエンドポイントURLの変更
- SPARQLクエリの変更
変更の詳細につきましては、こちらで説明されています。
なお、10月1日に旧アドレスのhttp://db.lodosaka.jp/sparqlを個人的に試してみたところ従来通り動きました。しかし数日中に使えなくなるとのことです。ご注意ください。
〔参考サイト〕