RでSPARQL

6,250 views

Published on

オープンガバメント・データ(OGD)、RDF、SPARQLの概要を紹介しました。第30回R勉強会@東京で発表。#Tokyo.R

Published in: Technology

RでSPARQL

  1. 1. RでSPARQLTwitter ID:@nezuq第30回R勉強会@東京(#TokyoR)2013/4/20……という題名のオープンガバメント・データ(OGD)入門
  2. 2. 今日言いたい事『今話題のオープンガバメント・データ(OGD)は、将来的にRDFをサポートする可能性が高い。RDFのクエリ言語SPARQLを、Rで使ってみよう!』
  3. 3. 目次● オープンガバメント・データ(OGD)とは?● OGD活用事例● 5つ星オープンデータ● RDFとは?● SPARQLとは?● SPARQLのSELECT文は?● RでSPARQL
  4. 4. オープンガバメント・データ(OGD)とは?再利用可能で商用利用可能な公共データ。及び、それを公開する政策。国連行政機関ネットワーク(UNPAN)「開発管理における市民参画のためのオープンガバメント・データ 指導ツールキット(OGDCEToolkit)」(日本語訳:Facebook「オープンデータ活用!」チーム)より<https://docs.google.com/file/d/0B5Kgc6WHI5rPV2xLVXBJWDVDS3M/edit?pli=1>データの例としては国家統計、予算情報、議会の記録、地理データ、法令、及び教育や輸送に関わるデータなどがあります。※日経新聞(紙版)の一面記事でも紹介された!
  5. 5. OGD活用事例The Daily Bread - 税金はどこへ行った?<http://spending.jp/>税金の使い道を追い、可視化する。
  6. 6. OGD活用事例FixMyStreet Japan<https://www.fixmystreet.jp/>地域の問題を共有し、議論する。
  7. 7. OGD活用事例findwc モバイルトイレナビ(鯖江版)<http://fukuno.jig.jp/2012/findwc>(by 福野泰介さん)福祉の向上を目指し、サービスを提供する。
  8. 8. 5つ星オープンデータ最初はPDF・XSL・CSVでの提供。では将来は?5つ星オープンデータ<http://5stardata.info/ja/>他国のオープンデータサイト「Data.gov」(アメリカ)や「Data.gov.uk」(イギリス)でも採用されている形式。RDF・SPARQL
  9. 9. RDFとは?主語・述語・目的語で構成されるデータ形式(RDF/XML,RDF/JSON,Turtle等)太郎 花子知っているfoaf:knows”「太郎は花子を知っている」「花子のメールアドレスは hanako@xxx.co.jp”だ」PREFIX ex: <http://example.org/resource/>PREFIX foaf: <http://xmlns.com/foaf/0.1/>ex:太郎 foaf:knows ex:花子ex:花子 foaf:mbox <mailto:hanako@xxx.co.jp>hanako@xxx.co.jpメールアドレスfoaf:mbox
  10. 10. SPARQLとは?○ RDFを対象とするクエリ言語……   取得データと外部データの関連性を    機械が認識できる。     →次に欲しいデータを自動取得できる。○ SQL風の言語構造……   Ver1.0でSELECT文が、    Ver1.1で集計関数や副問い合わせが使える。     →欲しい形で欲しい分だけ取得できる。○ W3C標準のAPI……   各省のデータを統一されたインターフェースで    リアルタイムに取得できる。     →APIの学習コストを抑えられる。
  11. 11. SPARQLのSELECT文は?ex.国立国会図書館典拠データ検索・提供サービスに、  芥川龍之介の生年・没年をSPARQLで尋ねる。詳しい文法は、W3Cの「RDF用クエリ言語SPARQL」ページを見て!<http://www.asahi-net.or.jp/~ax2s-kmtn/internet/rdf/rdf-sparql-query.html>PREFIX rda: <http://RDVocab.info/ElementsGr2/>PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT?birth ?deathWHERE{?uri foaf:name ?name.?uri rda:dateOfBirth ?birth.?uri rda:dateOfDeath ?death.FILTER regex(?name,芥川(龍|竜)之介)}①欲しいデータのパターンを書く。   ※?x はバインド変数になる。 (ex.任意のURIとリンクする   氏名・生年・没年を指定する)  ②制限を書く。 (ex.氏名が芥川龍之介のものに限る)③欲しい箇所のバインド変数を書く。 (ex.生年と没年が欲しい。   氏名はいらない)
  12. 12. RでSPARQLRでSPARQLを使うコードは、2行。library(SPARQL)res<- SPARQL(url=endpoint, query)$results参考:前ページのSPARQLクエリをRで実行するコード<https://gist.github.com/nezuQ/5424654>「endpoint」……SPARQLエンドポイント(APIのURI)を指定する。    ex.国立国会図書館典拠データ検索・提供サービス<http://id.ndl.go.jp/auth/ndla>「query」……SPARQL文を指定する。    ex.前ページ参照
  13. 13. ご清聴ありがとうございました。

×