1. TOPTOP
  2. Webサービス
  3. OpenData

大阪市のLOD(Linked Open Data)の主語(S)をSPARQL言語で取り出してみました。第33回WordBench大阪の勉強会にて

|

lod

LOD(Linked Open Data)のデータの扱いについては、作成・保存作業と、取り出し作業の2つに分けることができます。

そのうち、第33回WordBench大阪の勉強会(新しいタブで開く)では、SPARQL言語によるLODの取り出し作業に関するセッションがありました。

具体的には、大阪市が公開している行政資料にもとづく、施設の名称と位置(緯度・経度)を取り出す方法についてです。そのとき取っていたメモを元に、自分なりにまとめてみました。

データの取り出し方

1.エンドポイントへのアクセス

大阪市のエンドポイント(新しいタブで開く)にアクセスします。

http://db.lodosaka.jp/sparql

アクセスすると、SPARQL言語でデータを取り出すために記述するエディターが立ち上がります。ここでいうエンドポイントとは、大阪市が公開しているデータを取り込めるURLのことです。

sparql1

2.SPARQL言語の記述

エンドポイントエディターに下記のSPARQL言語を入力します。主語(s)としての、title(施設名称)、lat(緯度)、long(経度)を取り出すための問合せです。

// 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 .
}

sparql2

ちなみに今回の問い合わせで使った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.問合せ結果の表示

sparql3

行政施設の名称と位置(緯度・経度)の一覧が返ってきます。

表の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形式のデータには見えない
<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>

これらの疑問については、別の機会で調べて見たいと思います。

追記

この記事を公開したあと、読者の方から「疑問」について、アドバイスをいただくことができました。

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形式データを表示することできました。ありがとうございました!

sparql4

追記その2(2014年10月1日)

上記で紹介した大阪市のデータを取り出す方法は、2014年10月1日より変更します。変更のポイントは次の2点です。

  • SPARQLエンドポイントURLの変更
  • SPARQLクエリの変更

変更の詳細につきましては、こちら(新しいタブで開く)で説明されています。

なお、10月1日に旧アドレスのhttp://db.lodosaka.jp/sparqlを個人的に試してみたところ従来通り動きました。しかし数日中に使えなくなるとのことです。ご注意ください。

〔参考サイト〕