オープンデータとsparqlでビジュアライズ

80
オープンデータとSPARQLビジュアライズ 特定非営利活動法人リンクト・オープン・データ・イニシアティブ 上田 洋 WordBench京都10月号 WordPress × オープンデータ × データビジュアライゼーションハンズオン会 2015.10.03

Upload: hiroshi-ueda

Post on 12-Apr-2017

846 views

Category:

Technology


0 download

TRANSCRIPT

オープンデータとSPARQLでビジュアライズ

特定非営利活動法人リンクト・オープン・データ・イニシアティブ

上田洋

WordBench京都10月号WordPress ×オープンデータ×データビジュアライゼーションハンズオン会

2015.10.03

自己紹介

オープンデータとの関わり

•特定非営利活動法人リンクト・オープン・データ・イニシアティブ• 2014年より理事

• Linked Open Data チャレンジ Japan• 2014年度より実行委員

• 関西支部所属

• Linked Open Dataハッカソン関西• 運営メンバー

• オープンデータを利用したWebアプリを公開中• uedayou.net とGitHub:uedayouで公開しています

• Linked Open Data並びにオープンデータに関する調査研究事業• 日本国内及び、欧米をはじめとする世界各国の行政や企業によるLinked Open Data並びにオープンデータへの取り組みや、関連する技術動向について調査を行い、ウェブサイト等を通じて報告を行います

• 講座やシンポジウムの開催• Linked Open Data並びにオープンデータについて認知を拡大し、理解を深めるため、講座やシンポジウムを開催します

• Linked Open Data並びにオープンデータへの取り組み支援• 国や自治体、公共団体、企業等におけるLinked Open Data並びにオープンデータへの取り組みを支援します。スキームの設計、システム設計、作成、公開、運用(活用)といった一連の過程において、必要とされる支援を行います

• オープンデータへの取り組み評価• 国や自治体における、オープンガバメント施策の中でのオープンデータへの取り組みを調査及び評価します

• コンテストの開催• 日本国内におけるLODの認知の拡大、普及促進を図るため、コンテスト形式のイベントを開催し、LODに関するアイディアや技術、そして成果を発表してもらうための場とします

•活動実績• Open Data METI(平成24〜25年度 経済産業省)

• データカタログサイトの構築

• LODの設計

• アイディアソン、ヴィジュアライズソンの開催

• 都道府県・市区町村コード(平成25年度 独立行政法人統計センター)

• 自治体行政情報流通連携基盤実証事業(平成25年度総務省)

• LOD連続セミナー開催

• LODチャレンジ等コンテストへの協力

LOD連続セミナー

• 2014年5~7月まで計6回開催

•資料は LODI のWebサイトで公開中• http://linkedopendata.jp/?cat=17

• LOD連続セミナー

第1回 オープンデータからLinked Open Dataへ(武田英明)

第2回 情報の構造化(大向一輝)

第3回 RDF入門(小出誠二)

第4回 スキーマとURI(加藤文彦)

第5回 LODの作り方・使い方(松村冬子)

第6回 LODシステム実践紹介(小林巌生)

日本初、かつ日本最大級のデータ活用コンテスト

• Linked Open Data Challenge Japan (LODチャレンジ)は幅広い分野におけるオープンなデータづくりとデータを活用した取り組みを表彰するコンテストです。

• 2011年に日本で初めて開催され、今年で5期目をむかえました。

• 分野横断的にデータ公開・データ活用を表彰することで、日本のオープンデータを推進し、チャレンジする環境を創出してきました。

LODチャレンジJapan2015 開催趣旨

Open = つながる。

データをオープンにすることで、

データとデータがつながり、

データを使ったアイディアやアプリがつながり、

その活動に関わる人と人がつながっていきます。

Linked Open Data チャレンジ Japan 2015 では、

オープンデータがよりつながるようにするための技術的な支援と、

オープンデータをきっかけとしたコミュニティ形成を支援し、

新しい価値を創り出す取り組みを盛り上げていきます。

•過去の受賞作品紹介

• アプリケーション部門

• LinkData(2011 最優秀賞)

• プラネタリウムなび(2014 最優秀賞)

• データ部門

•京都が出てくる本のデータ(2014 最優秀賞)

•ねじLOD(2013 最優秀賞)

LinkData

• テーブルデータをRDF形式に変換して公開できる支援サイト

• LinkDataの登場後、RDF形式のオープンデータが急増

• 日本で最も有名なオープンデータ基盤の一つに

http://ja.linkdata.org/

プラネタリウムなび

•日本のプラネタリウム、および、その保有施設を、さまざまな情報から検索・関連情報を閲覧するためのアプリ

•開発者自らがプラネタリウムに関するあらゆるデータをLODとして整備

http://museums-info.net/planetarium/navi/

京都が出てくる本のデータ

•図書館司書による学習グループが作成した京都に関する本のデータ

•公開直後より、さまざまなアプリで活用された

• データはLinkDataで作成http://linkdata.org/work/rdf1s1294i

ねじLOD

• ネジ製品の業界内での情報標準化を目指して作成されたネジに関するLOD

• Linked Data4原則に従いデータ公開、SPARQLエンドポイントも提供

http://monodzukurilod.org/neji/

現在作品募集中!2016年1月17日締め切り

授賞式は2016年3月19日(土)

公式・エントリーサイト

http://lodc.jp/

Twitter : @LodJapan

Facebook : LOD.challenge.Japan

•関西を中心にLinked Open Data(LOD)の技術普及を目的に開催しているイベントを企画・運営

•公式サイト:http://wp.lodosaka.jp/

• 「関西オープンデータディ」開催• 関西の自治体オープンデータをみんなで検索して面白いデータを発見したり、ビジュアライズするハンズオン形式のイベント

日時:2015年11月23日 10:00~19:00(予定)

会場:グランフロント大阪大阪イノベーションハブ

FBイベントページ

https://www.facebook.com/events/519662078184283/

uedayou

•個人的にオープンデータを利用したアプリを作成

•個人サイト:http://uedayou.net/

• GitHub:http://github.com/uedayou

•自作アプリをいくつか紹介します

GitHub・SlideShareへのリンクあります

ミュージアムへ行こう!(LODチャレンジ2011アプリケーション部門優秀賞受賞)

http://uedayou.net/go2museum/

SPARQL Timeliner(LODチャレンジ2013基盤技術部門優秀賞受賞)

http://uedayou.net/SPARQLTimeliner/

大阪市警察署 x 犯罪発生(LODチャレンジ2014ビジュアライゼーション部門優秀賞受賞大阪市主催 Civic Tech Osaka アプリコンテストオープンデータ活用賞受賞)

http://uedayou.net/osakacrimemap/

PUSH大阪(Android版)(大阪市主催 Civic Tech Osakaアプリコンテストグランプリ受賞)

https://play.google.com/store/apps/details?id=net.uedayou.android.pushosaka&hl=ja

オープンデータとは?

オープンデータの定義

これらを許可するライセンス(オープンライセンス)を持つデータ

オープンデータ

Open Definition

http://opendatahandbook.org/guide/ja/what-is-open-data/

利用できる、そしてアクセスできるデータ全体を丸ごと使えないといけないし、再作成に必要以上のコストがかかっ

てはいけない。望ましいのは、インターネット経由でダウンロードできるようにすることだ。また、データは使いやすく変更可能な形式で存在しなければならない。

再利用と再配布ができる

データを提供するにあたって、再利用や再配布を許可しなければならない。また、他のデータセットと組み合わせて使うことも許可しなければならない。

誰でも使える

誰もが利用、再利用、再配布をできなければならない。データの使い道、人種、所属団体などによる差別をしてはいけない。たとえば「非営利目的での利用に限る」などという制限をすると商用での利用を制限してしまうし「教育目的での利用に限る」などの制限も許されない。

クリエイティブコモンズライセンスでのオープンライセンス

CC BY表示

CC0権利放棄

CC BY-SA表示-継承

CC BY-NC表示-非営利

CC BY-ND表示-改変禁止

CC BY-NC-ND表示-非営利-改変禁止

全ての権利を主張 CC BY-NC-SA表示-非営利-継承

http://fukuno.jig.jp/756

http://fukuno.jig.jp/2013/opendatamap

なぜたくさんの自治体がオープンデータを公開して

いるのか?

オープンデータ推進は国際公約!

日本政府とオープンデータ

• 2013年6月 G8サミットオープンデータ憲章に合意• 「Open Data by Default」:正当な理由のないものはオープンデータとして公開

•同10月オープンデータ憲章アクションプラン公開• オープンデータカタログサイト「data.go.jp」開設

•地方自治体にも波及

2014年11月:56都市

2015年10月:160以上の都市でオープンデータが公開

約1年で100以上も増加!

http://www.mofa.go.jp/mofaj/gaiko/page23_000044.html

https://www.kantei.go.jp/jp/singi/it2/cio/dai53/plan_jp.pdf

5つ星オープンデータ星が多いほど良いオープンデータ

オープンライセンスでデータ公開

構造化されたデータを公開

ソフトウェアに依存しないファイル形式で公開

他のデータとリンクするためにURI使い、アクセス可能であること

外部のデータとリンクをつける

LODLinked Open Data

http://5stardata.info/ja/

Linked Open Data(LOD)

とても良いオープンデータ

“リンクト”オープンデータとは?

Linked Open Dataとは?

• Linked Dataとして公開されるオープンデータ

•提唱者:WWW発明者ティム・バーナーズ・リー氏

• Linked Data4原則1. あらゆる「もの」の名前にURI(Uniform Resource Identifier)をつけましょう

2. HTTPプロトコルのURI(http://hoge.net/hoge)で、 「もの」についてのデータにアクセスできるようにしましょう

3. URIでアクセスしたデータは標準的なフォーマット(RDFを推奨)で提供しましょう

4. 他のデータを見つけやすくするために他のデータとURIでリンクしましょう

http://www.w3.org/DesignIssues/LinkedData.html

リンクして何が嬉しい?

個々のデータにURI(URL)で直接アクセスできれば…

•例:レストランのメニュー

メニュー 価格

Aランチ 600円

Bランチ 700円

Cランチ 800円

料理名 Aランチ

説明 Aランチは…

材料 ○○産牛肉

○○産米

料理名 Bランチ

説明 Bランチは…

材料 ○○産豚肉

○○産キャベツ

Webページ(HTML)

JSONとかXML

アプリ

人間

常に最新のデータを提供・取得できるメリット:今までのWebサイトの延長線上で提供できる

URLを指定すればそのデータにアクセスできる(リンクが出来る)データの改ざんがすぐにばれる(データの検証性・信頼性)

http://cafe-a.jp/menu

http://cafe-a.jp/lunch-a

http://cafe-a.jp/lunch-b

http://cafe-a.jp/

メニュー 価格

Aランチ 600円

Bランチ 700円

Cランチ 800円

料理名 Aランチ

説明 Aランチは…

材料 ○○産牛肉

○○産米

料理名 Bランチ

説明 Bランチは…

材料 ○○産豚肉

○○産キャベツ

http://cafe-a.jp/menu

http://cafe-a.jp/lunch-a

http://cafe-a.jp/lunch-b

http://cafe-a.jp/

URI(URL)で他のデータにリンクすると…

料理名 ○○産牛肉

説明 この牛肉は…

生産者 ▲▲□□

連絡先

料理名 ○○産米

説明 ○○は…

生産者 ◆◆△△

連絡先

料理名 ○○産豚肉

説明 ○○の豚は…

生産者 ●▲×◆

連絡先

http://▲▲□□.jp/beef

http://◆◆△△.jp/rice

http://●▲×◆.jp/pork

メリット:分散してデータを管理できる

World Wide Web(文書のWeb)

メリット:リンクによりたくさんのページ(情報)を簡単に発見できる

ID DATA

ID DATA

ID DATAID DATA

ID DATA

データのWeb=Linked Open Data(LOD)

メリット:リンクによりたくさんのデータを簡単に発見できるデータを分散して管理共通の標準フォーマットでデータが簡単に取得できる

同じデータ

データの別名

作者の連絡先

同じデータ

関連データ

データの作者

データの画像

LODとWordPress

LODとWordPress• 「wp-linked-data」プラグイン

• https://wordpress.org/plugins/wp-linked-data/

アプリ

人間

<?xml version="1.0" encoding="utf-8" ?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:dc="http://purl.org/dc/terms/" xmlns:sioct="http://rdfs.org/sioc/types#">

<sioc:Itemrdf:about="http://wp.lodosaka.jp/other/lod20150912kobe#it">

<dc:title>第1回 LOD Challenge Day KOBE 2015</dc:title><sioc:content>2015年9月12日に公益財団法人ひょうご産業活性

化センターで「第1回 LOD Challenge Day KOBE 2015」を行いました。…</sioc:content>

<dc:modifiedrdf:datatype="http://www.w3.org/2001/XMLSchema#date">2015-09-17</dc:modified>…

</sioc:Item></rdf:RDF>

@prefix sioc: <http://rdfs.org/sioc/ns#> .@prefix dc: <http://purl.org/dc/terms/> .@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .@prefix sioct: <http://rdfs.org/sioc/types#> .

<http://wp.lodosaka.jp/other/lod20150912kobe#it>a sioc:Item ;dc:title "第1回 LOD Challenge Day KOBE 2015" ;sioc:content """2015年9月12日に公益財団法人ひょうご産業活性化センターで「第1回 LOD Challenge Day KOBE 2015」を行いました。…""" ;

dc:modified "2015-09-17"^^xsd:date ;dc:created "2015-09-11"^^xsd:date ;sioc:has_creator <http://wp.lodosaka.jp#account> ;sioc:has_container <http://wp.lodosaka.jp#it> .

XML

turtle

HTML

http://wp.lodosaka.jp/other/lod20150912kobe/

ブラウザ

プログラム

Accept: text/turtle

Accept: application/rdf+xml

5つ星オープンデータ星が多いほど良いオープンデータ

オープンライセンスでデータ公開

構造化されたデータを公開

ソフトウェアに依存しないファイル形式で公開

他のデータとリンクするためにURI使い、アクセス可能であること

外部のデータとリンクをつける

http://5stardata.info/ja/

WordPressはプラグイン入れるだけでいきなり4つ星オープンデータに!!!

※ただし、コンテンツはオープンライセンスが前提

wp-linked-dataプラグインはすばらしいが…• JSON(-LD)での出力に対応していない

• 「sioc:content」の中(ブログ投稿)のデータ構造を別途指定したい• 指定できると、RDFで外部のデータとリンクが出来る

★5つ星オープンデータに★

“データのWeb”の世界が身近に

• ダンプ機能があれば、WordPressで作成したデータをRDFストアに格納したり、SPARQLで検索とかできる

WordPressコミュニティの皆さんと一緒に是非実現したい!!!

LODとRDF

Linked Data

• ティム・バーナーズ=リーのLinked Data4原則

1. あらゆる「もの」の名前にURI(Uniform Resource Identifier)をつけ

ましょう

2. HTTPプロトコルのURI(http://hoge.net/hoge)で、 「もの」につい

てのデータにアクセスできるようにしましょう

3. URIでアクセスしたデータは標準的なフォーマット(RDFを推奨)

で提供しましょう

4. 他のデータを見つけやすくするために他のデータとURIでリンクし

ましょう

http://www.w3.org/DesignIssues/LinkedData.html

RDFとは(Resource Description Framework)

• データを「主語」「述語」「目的語」を1つのセット(トリプル、三つ組み)として記述

主語(Subject)

目的語(Object)

述語(Predicate)

大阪府 和歌山県隣の県

例えば…

RDF用データベース検索クエリ

SPARQL(SPARQL Protocol and RDF Query Language)

Linked Open Dataを実現するための基盤技術

SPARQL

SPARQL(SPARQL Protocol and RDF Query Language)

SPARQL

• RDF(LOD)用の汎用クエリ言語

• RDF(LOD)用のデータベースからトリプル(3つ組)データを検索して、表形式でデータが取得できます

いろんなデータベースで使えます

扱いやすい!

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT * WHERE {?uri rdfs:label ?label .

}LIMIT 10

?uri ?label

http://ja.dbpedia.org/resource/岩手県 "岩手県"

http://ja.dbpedia.org/resource/石川県 "石川県"

http://ja.dbpedia.org/resource/愛媛県 "愛媛県"

http://ja.dbpedia.org/resource/岡山県 "岡山県"

https://codeiq.jp/magazine/2014/01/4341/

SPARQLで検索できるデータが増えています

データ種別 Web API

Wikipedia DBPediaWikipediaオントロジー

行政データ データシティ鯖江都道府県・市区町村コード情報Open Data METI

イベントデータ ヨコハマ・アート・LOD

博物館データ EuropeanaLODAC MuseumThe British Museum

図書館データ The British National BibliographyWeb NDL Authorities

地理データ Linked Geo DataLODAC Location

気象データ 気象庁XML用API

生物種データ LODAC Species

この他にも多くのオープンデータがSPARQLで検索できます

LOD推奨形式RDFとは(Resource Description Framework)

• 「主語」「述語」「目的語」を1つのセット(トリプル、三つ組み)として記述

主語(Subject)

目的語(Object)

述語(Predicate)

東京都 神奈川県隣の県

例えば…

トリプルデータを表形式に変換

主語 述語 目的語

dbpedia:東京都

rdfs:label "東京都"

dbpedia:東京都

rdfs:comment “東京都(とうきょうと)は、日本の都道府県の一つである。"

dbpedia:大阪府

rdfs:label “大阪府”

dbpedia:大阪府

rdfs:comment "大阪府(おおさかふ)は、近畿

地方(関西地方)に属する日本の都道府県の一つ。"

dbpedia:京都府

rdfs:label “京都府”

dbpedia:京都府

rdfs:comment "京都府(きょうとふ)は、日本国・近畿地方の都道府県。"

id label comment

dbpedia:東京都

"東京都" “東京都(とうきょうと)は、日本の都道府県の一つである。"

dbpedia:大阪府

“大阪府” "大阪府(おおさかふ)は、近畿

地方(関西地方)に属する日本の都道府県の一つ。"

dbpedia:京都府

“京都府” "京都府(きょうとふ)は、日本国・近畿地方の都道府県。"

変換!

SPARQLなら簡単にできます!

HTML・CSV・XML・JSONなどさまざまな形式で出力可能!

• formatパラメータを変更するだけ

JSON

http://db.lodc.jp/sparql?query=...&format=json

XML

http://db.lodc.jp/sparql?query=...&format=xml

CSV

http://db.lodc.jp/sparql?query=...&format=csv

“format”はSPARQLエンドポイントによって異なる場合があります

なにが作れる?

http://civictech-osaka.jp/index.html

コンテスト結果(アプリ・Webサービス部門)

• 優勝(グランプリ)

• PUSH大阪※ハッカソン(Civic Hack OSAKA 2014)内で開発

• 準優勝(優秀賞)

•大阪もよりナビ※ハッカソン(インターナショナルオープンデータデイ)内で開発

• 特別賞(オープンデータ活用賞)

• 大阪市 警察署 × 犯罪発生

※ 4~5時間で完成

3アプリ全てSPARQLを活用しています!

PUSH大阪/PUSH広報

•自治体が発信するRSSを収集し、SPARQLを使って動的に検索、アプリではプッシュ機能で受動的に知りたい情報を受け取れる

http://push.jp.net/

大阪もよりナビ

•大阪の最寄駅、駐輪場、トイレなどをSPARQLで検索し、現在地からナビゲーションするアプリ

http://moyori.lodosaka.jp/

大阪市警察署×犯罪発生

•大阪市の警察施設と犯罪発生地点をSPARQLを使い取得し、地図上で重ね合わせることができるアプリ

http://uedayou.net/osakacrimemap/

SPARQLでビジュアライズ

Sgvizler

http://dev.data2000.no/sgvizler/

ハンズオンで利用する“WP Sgv”はSgvizlerを利用してます

使い方:sgvizler• 以下のコードをHTMLファイルに貼り付けて保存してブラウザで開くだけ

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script><script type="text/javascript" src="https://www.google.com/jsapi"></script><script type="text/javascript" id="sgvzlr_script" src="http://sgvizler.googlecode.com/svn/release/0.5/sgvizler.js"></script><script type="text/javascript"><!-- $(document).ready(sgvizler.go()); --></script><div id=“sgvizler-sample”data-sgvizler-endpoint

="http://lodcu.cs.chubu.ac.jp/SparqlEPCU/api/kyotobook_list"data-sgvizler-query=“SELECT ?year (count(?uri) AS ?noOfUri)WHERE {

?uri <http://linkdata.org/property/rdf1s1294i#Year> ?year.} GROUP BY ?yearORDER BY DESC(?noOfUri)“

data-sgvizler-chart="gBarChart"data-sgvizler-loglevel="2"data-sgvizler-chart-options="title=Number of instances"style="width:2000px; height:2500px;"></div>

• 以下で雛形コードをダウンロードできます

• http://uedayou.net/sparql-mashup/sgvizler-sample.html

使い方:sgvizler

<div id=“sgvizler-sample”data-sgvizler-endpoint= "http://lodcu.cs.chubu.ac.jp/SparqlEPCU/api/kyotobook_list"data-sgvizler-query=“SELECT ?year (count(?uri) AS ?noOfUri)WHERE {

?uri <http://linkdata.org/property/rdf1s1294i#Year> ?year.} GROUP BY ?yearORDER BY DESC(?noOfUri)“

data-sgvizler-chart="gBarChart"data-sgvizler-loglevel="2"data-sgvizler-chart-options=“title=出版年別ランキング"style="width:800px; height:500px;"></div>

クエリを記述

グラフの種類を指定

エンドポイントを指定

グラフタイトルを記述

Idを指定

京都が出てくる本のデータ:出版年ランキング

http://uedayou.net/sparql-mashup/sgvizler/kyoto-issued-ranking.html

京都が出てくる本のデータ:著者トップ10

http://uedayou.net/sparql-mashup/sgvizler/kyoto-author-top10.html

京都が出てくる本のデータ:おすすめ度ランキング

http://uedayou.net/sparql-mashup/sgvizler/kyoto-recommend-ranking.html

京都が出てくる本のデータ:出版社別ランキング

http://uedayou.net/sparql-mashup/sgvizler/kyoto-publisher-ranking.html

京都が出てくる本のデータ:カテゴリ別ランキング

http://uedayou.net/sparql-mashup/sgvizler/kyoto-category-ranking.html

クエリの書き方(棒グラフ、円グラフの場合)• 「data-sgvizler-chart」には以下を指定

• 円グラフ:「gPieChart」

• 縦棒グラフ:「gColumnChart」

• 横棒グラフ:「gBarChart」

• GROUP BY を使ってデータをグループ化する

• COUNTで出現回数を計算

PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT ?year (COUNT(?uri) AS ?noOfUri)WHERE {

?uri dcterms:issued ?year.}GROUP BY ?yearORDER BY DESC(?noOfUri)

クエリの書き方(棒グラフ、円グラフの場合)•実際のデータは…

LODチャレンジ応募作品の関連グラフ

http://uedayou.net/sparql-mashup/sgvizler/lodc-network.html

クエリの書き方(無指向グラフの場合)

select distinct ?title1 ?title2from <http://lod.sfc.keio.ac.jp/challenge/entries>where {?s <http://purl.org/dc/terms/relation> ?o.?s <http://purl.org/dc/terms/title> ?title1.?o <http://purl.org/dc/terms/title> ?title2.}

•無指向グラフの場合• 「data-sgvizler-chart」には「gForceGraph」を指定

• SELECTで二つのラベルが入るようにクエリを記述

クエリの書き方(無指向グラフの場合)•実際のデータは…

WordPressとLOD

WordPressとLOD・SPARQLの活用事例

• Make JSON-LD WordPressプラグイン• WordPressのカスタム投稿フィールドを利用して、JSON-

LDを出力できるプラグイン• https://wordpress.org/plugins/make-json-ld-for-custom-

fields/

• Wikipediaの記事を表示するWordPressプラグイン• DBpedia(Wikipediaのデータを提供するサイト)を使って

Wikipediaの記事をショートコードを書くだけでWordPress内に表示できるプラグイン

• DBpediaのSPARQLエンドポイントを利用• http://wp-kyoto.net/

など