linked open data (lod)の基礎講座
TRANSCRIPT
第3回Linked Open Dataハッカソン関西2014年2月11日(火)@大阪イノベーションハブ
LODチャレンジ実行委員会 関西支部長/大阪大学 古崎晃司LODチャレンジ実行委員会/Linked Open Data Initiative 松村冬子ATR Creative 上田洋2014/2/11 第3回LODハッカソン関西 1
LOD基礎講座の趣旨・概要• 講演のねらいアイデアソン・ハッカソンを行うに辺り,
1) どんなデータが利用できるか?
2) 地域のオープンデータやLODを使うことでどんなことが
できるか?
を知って頂く
• 講演の概要
LODを用いたアプリ開発に必要な基礎知識を解説
※詳細な技術情報については,関連資料,サンプ
ルコードなどを参照
2014/2/11 第3回LODハッカソン関西2
講演内容
LOD/RDF入門• LOD/RDFの基本(古崎)• LODを“つかう”~活用事例の紹介~(松村)• LODを“さがす”~SPARQLの基本~(古崎)• LODを“つくる”~RDFデータの作成~(松村)
LOD/RDFを用いたアプリ開発• JavaScriptを用いたLODアプリの開発例(古崎)• TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成(上田)
2014/2/11 第3回LODハッカソン関西3
Linked Open Data(LOD)技術の概要
第3回Linked Open Dataハッカソン関西
LODチャレンジ実行委員会 関西支部長
/大阪大学産業科学研究所
古崎晃司
2013年10月19日(土)於:大阪イノベーションハブ
2014/2/11 第3回LODハッカソン関西 4
LOD/RDFの基本
Linked Open Data(LOD) Linked Data:Web上のデータを,つなぐ(linkする)ことで,新しい価値を生み出そうとする取り組み.Webの創始者Tim Berners-Lee氏が提唱
※ Linked Open Data(LOD):オープンな形で公開されたLinked Data
2014/2/11 第3回LODハッカソン関西
http://linkeddata.org/
• 誰もが同じ方法で,「データをつなぐことができる仕組み」を提供している.
• 技術的には,-データ公開の共通フォーマット(RDF)-コンピュータが,データにアクセスする共通の仕組み(SPARQL)が提供されている.
→Web上に公開された膨大なデータを統合した1つのデータベースとして利用できる.
6
Linked Dataが目指すこと
WWW(World Wide Web)
文書を公開し,相互に接続(ハイパーリンクでつなぐ)ための革命的な仕組みを提供したことで,今日のWebの発展につながった.
Linked Data
データを共有(公開)し,相互につなぐ仕組みを提供する.
Linked Dataの原理
データの構造化 構造化されたデータはより洗練された処理を可能にする
分散したデータをつなぐハイパーリンク 文書単位では無く,データ単位のリンクを可能にする.
データの島々から一つのグローバルデータ空間へ 分散されたデータ群を1つのグローバルなデータ空間へ統合する
参考:『Linked Data-Webをグローバルなデータ空間にする仕組み(Tom Heath, Christian Bizer(武田英明監訳),丸善,2013)』 1章.はじめに
2014/2/11 第3回LODハッカソン関西 7
RDF(Resource Description Framework)
Web上の情報(リソースと呼ぶ)を記述するための統一的枠組み
RDFのデータモデル 主語(subject),述語(predicate),目的語(object)の3つ組み(トリプル)の組み合わせで,リソースに関する情報を表現する.
計算機表現上はXML形式をはじめ,いくつかの表現が用意されている.
リソースはURI(Uniform Resource Identifier:Web上の情報資源(リソース)の場所を示すための記述方式.URLはURIの一種)を用いて表される.
2014/2/11 第3回LODハッカソン関西 8
知識工学論
古崎担当教員
主語 述語 目的語
所属知識システム研究分野
述語 目的語主語
來村担当教員 所属授業コード
280598
RDF(Resource Description Framework)
Web上の情報(リソースと呼ぶ)を記述するための統一的枠組み
RDFのデータモデル 主語(subject),述語(predicate),目的語(object)の3つ組み(トリプル)の組み合わせで,リソースに関する情報を表現する.
計算機表現上はXML形式をはじめ,いくつかの表現が用意されている.
リソースはURI(Uniform Resource Identifier:Web上の情報資源(リソース)の場所を示すための記述方式.URLはURIの一種)を用いて表される.
目的語には「リテラル」(文字列)を用いることができる.
2014/2/11 第3回LODハッカソン関西 9
https://koan.osaka-u.ac.jp/koan/lecture#280598
http://www.ei.sanken.osaka-u.ac.jp/~kozaki/
担当教員
主語 述語 目的語
所属http://www.ei.sanken.
osaka-u.ac.jp/main
述語 目的語主語
http://www.ei.sanken.osaka-u.ac.jp/~kita/
担当教員 所属授業コード
280598
リソース
リテラルプロパティ
:リソース間の関係
RDF(Resource Description Framework)
Web上の情報(リソースと呼ぶ)を記述するための統一的枠組み
RDFのデータモデル 主語(subject),述語(predicate),目的語(object)の3つ組み(トリプル)の組み合わせで,リソースに関する情報を表現する.
計算機表現上はXML形式をはじめ,いくつかの表現が用意されている.
リソースはURI(Uniform Resource Identifier:Web上の情報資源(リソース)の場所を示すための記述方式.URLはURIの一種)を用いて表される.
2014/2/11 第3回LODハッカソン関西 10
koan:lecture#280598 ei:kozaki/担当教員
主語 述語 目的語
所属ei:main
述語 目的語主語
ei:kita/担当教員 所属授業コード
280598
ネームスペース(namespace)を用いると…koan:=https://koan.osaka-u.ac.jp/koan/ei:=http://www.ei.sanken.osaka-u.ac.jp/
データを「つなげる」仕組み
「3つ組(トリプル)」により様々な構造のデータの“つながりを柔軟に表現”できる
Webサイトのリンクを辿るのと同様に,プロパティ(リンク)を辿ることで関連するデータの情報を辿ることが出来る.
RDFのプロパティは,“関係の意味”を定義できる. cf. Webのハイパーリンクは単に“つながり”を表すのみ
データ(リソース)をURIで表すことで,“外部のデータとつなげる”ことができる.
URIは,グローバルに一意のIDを表す. WebサイトのURLと同じ仕組み.
cf.単なる数字をIDとすると,異なるDBが同じIDを使っている可能性がある
2014/2/11 第3回LODハッカソン関西 11
RDFの表現形式
RDFのシリアル化(serialize)
RDFは,リソースを主語,目的語,述語の形式で記述するデータモデルであって,データ形式ではない.
RDFの形式に沿ってトリプルを特定の文法に従ってファイルに書き出す(シリアル化する)必要がある.
代表的なシリアル化形式
RDF/XML:計算機向け
RDFa:HTMLにRDFを埋め込む
Turtle:プレーンテキストで人間向けに読みやすい
N-Triples:1行単位で処理できるので処理しやすい
RDF/JSON:Web開発向け
2014/2/11 第3回LODハッカソン関西 12
Turtle・N-Triplesの表現例
Turtle@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix foaf: <http://xmlns.com/foaf/0.1/>
<http://www.ei.sanken.osaka-u.ac.jp/~kozaki/>
rdf:type foaf:Person ;
foaf:name “Kouji Kozaki” .
N-Triples<http://www.ei.sanken.osaka-u.ac.jp/~kozaki/>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://xmlns.com/foaf/0.1/Person>.
<http://www.ei.sanken.osaka-u.ac.jp/~kozaki/>
<http://xmlns.com/foaf/0.1/name> “Kouji Kozaki”.2014/2/11 第3回LODハッカソン関西 13
http://www.ei.sanken.osaka-u.ac.jp/~kozaki/ foaf:Person
rdf:type
foaf:nameKouji Kozaki
1行
1行
ヘッダ
つかう
LODによるアプリケーション開発
RDFストア:RDFを格納するデータベース
SPARQL:RDFの中を検索するための言語
SPARQLエンドポイント:RDFストアの入出力インタフェース
ワンソース・マルチユース:1つのデータを多くの人に使ってもらう
LODのデータ利用の特徴
機械的処理は難しい
可読性は高い
文書によるデータ公開
APIによるデータ公開
LODによるデータ公開
機械的処理は易しい
仕様がアプリケーションごとに異なる/変化する
機械的処理は易しい
仕様が標準化されている
• 必要なデータだけを機械処理で抽出可能
• 公開されていて誰でも自由に使える
• 仕様が分かりやすく変更が少ない方がよい
事例1)育なび.net
横浜市金沢区の職員さんが企画
様々な部署の持つ情報をLODとして統合してオープンデータ化(全39データセット)
市区が保有する育児情報を提供(スマホで利用可能)
イベント検索
保育園・幼稚園検索
医療機関検索
予防接種スケジューラ
防災・減災情報
http://kirakana.city.yokohama.lg.jp/
事例1)育なび.net
データモデル
広域避難所ののデータには緯度・経度なし
公園の情報から緯度・経度を取得可能
このデータで問い合わせできるSPARQLクエリ例
1歳児と3歳児に空きがる保育園の情報を自宅から近い順に取得
ぶら下がり健康遊具があり、駐車場もある近くの公園の情報を取得
子どもが通っている保育園の近くの皮膚科の情報を取得
広域避難場所データ
公園データ
駐車場データ
健康遊具データ
緯度
経度
同じ
広域避難所
公園
事例2)Yokohama Art Spot
横浜アート情報 x 博物館情報 x スポットまとめ情報
Yokohama Art Spotマップ画面Yokohama Art Spot施設画面
LODAC Museum作品画面
http://lod.ac/apps/yas
事例2)Yokohama Art Spot
施設情報を中心としたデータのつながり
一種類のデータだけでは不可能な情報提示が可能
・異なるLODのデータ同士をつなぐ・緯度,経度の範囲
情報の取得 & 提示
事例3)もっと残念な日本地図β
いわゆる「聖地」マップ
自治体の持っている施設や名所に関するデータとマッシュアップ → 観光情報として利用
作品 自治体 位置舞台
緯度経度
http://cheese-factory.info/lsj/index.html
事例4)トイレ危険地帯
何の地図? トイレがない場所の地図
モノがある場所だけでなく、ない場所を可視化
次はどこに作るべきか考える材料に!
もっと活用事例を見たい方は…
LODチャレンジ2011・2012・2013
アプリケーション部門応募作品をごらんください
http://y4ashida.github.io/toilet/
さがす
SPARQLによるRDFの検索
SPARQL
RDFデータに対するクエリ言語
「指定したグラフ構造」に一致するトリプルを検索する
最も基本的な検索
2014/2/11 第3回LODハッカソン関西 24
select *where {
?s ?p ?o . }LIMIT 100 ←取得する数の制限
←検索するグラフのパターン
←返す要素(*は全て)
この例では「任意のトリプルの組み合わせ」
このパターンを変えることで,欲しいデータを取得する
SPARQLの検索例 「東京都を主語(Subject)に含む」トリプルの述語(?p)と目的語(?o)を取得する
2014/2/11 第3回LODハッカソン関西 25
select distinct *where {
<http://ja.dbpedia.org/resource/東京都> ?p ?o . }LIMIT 100
「東京都」を表すURI
DBpedia Japanesehttp://ja.dbpedia.org/sparqlでの検索結果
↑同じパターンは除外する
SPARQLの検索例
「ラベルに“大阪”を含む」トリプルの主語(?s)
2014/2/11 第3回LODハッカソン関西 26
select distinct ?s where {?s <http://www.w3.org/2000/01/rdf-schema#label> ?o FILTER(regex(str(?o), "大阪")) .
}LIMIT 100「文字列が含む」データでの絞り込み
DBpedia Japanesehttp://ja.dbpedia.org/sparqlでの検索結果
SPARQLの検索例
「ラベルが“大阪”と一致する」トリプルの主語(?s)
2014/2/11 第3回LODハッカソン関西 27
select distinct ?s where {?s <http://www.w3.org/2000/01/rdf-schema#label> "大阪"@ja .
}LIMIT 100リテラルの指定(※データの言語指定も含めて一致が判定される)
DBpedia Japanesehttp://ja.dbpedia.org/sparqlでの検索結果
SPARQLの検索例
「ラベルが“大阪”と一致する」トリプルの主語(?s)につながっている述語(?p)と目的語(?o)
2014/2/11 第3回LODハッカソン関西 28
select distinct ?p ?o where {?s <http://www.w3.org/2000/01/rdf-schema#label> "大阪"@ja . ?s ?p ?o.
}LIMIT 100パターンを続けて書くと「AND条件」になる※この例では,?p ?oを限定していないが…
DBpedia Japanesehttp://ja.dbpedia.org/sparqlでの検索結果
大阪市の施設情報のRDFデータの構造
2014/2/11 29
ID
公園・スポーツ
大阪城公園
中央区大阪城・大手前4丁目
http://www.ocsga.or.jp/osakapark/hfm_park/02osakajo/osakajo_02.html
**.***
***.***
大分類
施設名(ラベル)
住所
HPのURL
緯度
経度主語
(Subject)
述語(Property)
目的語(Object)
RDFデータ=「主語-述語-目的語」の組み合わせで表されるグラフ構造のデータ
大阪市の施設情報のRDFサンプル
<http://linkdata.org/resource/rdf1s933i#158><http://www.w3.org/2000/01/rdf-schema#label>
"158"@ja, "軽自動車検査協会大阪主管事務所"@ja ;<http://www.w3.org/2003/01/geo/wgs84_pos#lat>
"34.6164938333333"^^xsd:float ;<http://www.w3.org/2003/01/geo/wgs84_pos#long>
"135.438210722222"^^xsd:float ;<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://lodosaka.hozo.jp/class/施設情報> ;<http://lodosaka.hozo.jp/category_1> "官公庁"@ja ;<http://lodosaka.hozo.jp/category_2> "国の機関"@ja ;<http://lodosaka.hozo.jp/ku> "住之江区"@ja ;<http://schema.org/name>
"軽自動車検査協会大阪主管事務所"@ja ;<http://schema.org/address>
"住之江区南港東3-4-62"@ja .
2014/2/11 第3回LODハッカソン関西 30
検索例
「住吉区の施設」の「施設名(?name)と住所(?address)」を取得
2014/2/11 第3回LODハッカソン関西 31
select ?s ?name ?address where{?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://lodosaka.hozo.jp/class/施設情報>.?s <http://lodosaka.hozo.jp/ku> "住之江区"@ja.
OPTIONAL{?s <http://schema.org/name> ?name.?s <http://schema.org/address> ?address.}
}↑補足条件=whereでトリプルの一致が評価された後に、
補足的に取得される≠検索条件
検索結果例
2014/2/11 第3回LODハッカソン関西 32
http://lod.hozo.jp/repositories/OsakaCityMapでの検索結果
LOD(RDF)検索の補助ツール
簡易SPAQRL検索ツール
LODをキーワード検索するための,クライアントソフトウェア(Javaで開発)
簡易LOD検索サイト作成ツール
任意のSPAQRLエンドポイントに対して,「キーワード検索用サイト」を開発できるJavaScriptライブラリ(サーバサイドにサーブレットを利用)
2014/2/11 第3回LODハッカソン関西 33
簡易SPARQL検索ツール
2013/8/5 第2回LODとオントロジー勉強会 34
SPARQLエンドポイントの選択・追加
検索キーワードの入力
検索実行
検索キーワードに一致したリソース一覧
検索オプション選択したリーソースを主語とするトリプル一覧
検索に用いたSPARQLクエリ
任意のSPARQLクエリ検索への切り替え
※注意DBPedia(英語版)に対して「部分一致検索」を行うと結果が帰ってくるまで数分かかるので注意.
SPARQLを使わずに「キーワード」でLODの検索ができるツール
簡易SPARQL検索ツールの使い方
2013/8/5 第2回LODとオントロジー勉強会 35
SPARQLエンドポイントの選択・追加
検索実行
検索キーワードに一致したリソース一覧
検索オプション※大きなLODの部分一致検索には時間がかかる場合もありますので注意
SPARQLエンドポイントのアドレスを入力(貼付)てNEWボタンを押すと検索対象を追加できる
簡易LOD検索サイト作成ツール
2014/2/11 36
任意のLOD(SPARQLエンドポイント)を対象とした検索サイトを「プログラム無し」 で簡単に作れるツール
Dbpediaでの利用例
大阪市が公開している統計情報のカタログサイトの作成例
2014/2/11 37
複合条件(AND/OR)の検索も可能任意の検索条件を
「メニュー化」可能
検索結果の表示内容もカスタマイズ可能
主な日本語LODの簡易検索
2014/2/11 第3回LODハッカソン関西 38
http://lodosaka.hozo.jp/EasyLOD/
国内の主要な日本語LODの検索が可能→任意のSPAQRLエンドポイントに拡張可能
つくるつなげる
データソンに向けてーLODの作り方
表データをどうやってLOD or RDFにするのか?
LinkData http://linkdata.org/
国内の表 → RDF 変換ツール
他のデータを流用して発展させたデータを作ることも可能
AppLinkDataにてLinkDataで公開されたデータを利用したJavaScriptアプリケーションの開発が可能
OpenRefine http://openrefine.org/
+
RDFRefine http://refine.deri.ie/
表データの整形やクリーニングを行うOpenRefineとその拡張機能であるRDFRefineを組み合わせて使用
表の各列とメタデータの語彙をマッピングしてRDFに変換
DBpediaなどに含まれる同一のリソースを探してつなぐことが可能
OpenRefine + RDFRefine
OpenRefineからのインストール
以下からダウンロード(Windows/Mac/Linux)
http://openrefine.org/download.html
解凍して適当な場所に配置し、その中の実行ファイルを起動
自動的にブラウザでOpenRefineが起動
RDFRefineのインストール
OpenRefineの拡張機能
以下からダウンロードして解凍
http://refine.deri.ie/
解凍した中にあるrdf-extentionフォルダをOpenRefineのインストールフォルダの中のwebappの中にコピーしOpenRefineを再起動
プロジェクト作成&表データ読込
例)大阪市・施設情報ポイントデータ(名所・旧跡)
Web上で公開されている表データを直接利用することも可能(②でWeb Addressesを選択し、データのURLを入力)
①
② ③④
PCに保存されている表データのファイルを選択
⑤
プロジェクト名を設定
⑥データが正常に読み込まれたか確認(文字化けしていたら
CharacterEncodingで設定)
プロジェクト作成完了
プロジェクトを開いた画面
RDF Refineのメニューボタン(なければRDF Refineのインストールが失敗)
表の各列の操作ボタン(列の追加・削除,列名の変更などが可能)
DBpedia Japanese上にある同じ名所・史跡のデータとつないでみるには・・・
Reconciliation(リコンシリエーション)
例)DBpedia Japaneseに含まれる同じ名所のデータをつなぐ
今回はSPARQLエンドポイントを利用 →まず設定
Reconciliation: 外部データとつなぐ
①
②③
④
⑤
SPARQLエンドポイントURL
http://ja.dbpedia.org/sparql
DBpediaの場合はVirtuosoを選択
⑥ウィンドウ下部のOKをクリック
(プロジェクト内でのエンドポイントの名前)
例)施設名がrdfs:labelに含まれるDBpedia Japaneseのデータ
項目が一致するデータを探す
①
② ③ ④
⑤
DBpedia Japaneseをクリック
(右側画面が表示されるまで
少し時間がかかります)
同じデータを検索開始検索状況が画面上部に表示される
例)施設名がrdfs:labelに含まれるDBpedia Japaneseのデータ
Reconciliation完了
全データ中マッチしたデータの割合
青字:マッチしたデータ
黒字:マッチしなかったデータ
複数の候補にマッチした場合
住吉区の生根神社なのでこちらをクリック
①②
DBpediaのURLを格納する列を作成
①②
③
④
⑤
新しい列名
マッチしたデータのURIを代入(GREL)
新しい列への代入結果
表データをRDF(LOD)に変換
RDF Skelton:各列とプロパティのマッピング
登録済みPrefix:rdfs, foaf, xsd, owl, rdf(その他も登録可能)
プロパティの選択が最も困難→ 最初は類似の他のデータセットを真似る
変換したRDFのベースURI
変換後のデータのURIに使う値の設定
列「DBpedia Japanese」にマッピングするプロパティ(同じデータを指すowl:sameAs)
登録済みPrefixのプロパティはサジェスト
RDF変換結果(RDF/XML)
RDF変換結果(Turtle)
アプリケーションをつくる
アプリ開発の概要
基本的な仕組み
SPAQRLクエリー(文字列)をエンドポイントに渡す
結果を受け取る
XML/JSON/CSVなど指定可能
受け取った結果を処理する
※簡単なSPARQLクエリが書けると,後は,通常のWebシステム開発のノウハウが使える
2014/2/11 第3回LODハッカソン関西 53
→JavaScriptだけで,開発可能なライブラリも提供します.(SPARQLクエリを渡すとJSONで返す)
メイド・イン「地元」~「地域愛」と「オープンデータ」を活用した地域活性化~
「ソウルフード」を選んで「地元率」を調べるWebサービスです.
選んだ料理の「材料」と「産地」のデータから,その料理に占める各食材の産地毎の比率(=地元率)を表示します.
- http://mij.hozo.jp/udtc2013.html -
「地元率」の計算
「地元」(都道府県)と「ソウルフード」を選択して,ボタンを押すと,「地元率」を計算し,結果を表示します.
選択した料理の「地元率」と合わせて,• 「元としたデータの詳細(材料の地元率)」
• その地域(「地元」)で「地元率が高い料理のランキング」
• 「地元率」を高めるための参考情報が提示されます.
アプリの構築例
LOD/RDFに関する技術的情報
人工知能学会Webサイト 私のブックマーク
http://www.ai-gakkai.or.jp/my-bookmark_vol28-no5/
人工知能学会 第5回AIツール入門講座 資料
http://fumi.me/aitool_5/
LOD技術解説(LODチャレンジ2012サイト内)
http://lod.sfc.keio.ac.jp/challenge2012/slideresources2.html
Linked Dataでつながるデータ(東京地方でのLinked Data勉強会の資料あり)
http://linkeddata.jp/
近代科学社「Linked Data: Webをグローバルなデータ空間にする仕組み」
著:Tom Heath, Christian Bizer
訳:武田 英明,大向 一輝,加藤 文彦,嘉村 哲郎,亀田 尭宙,小出 誠二,深見 嘉明,松村 冬子,南 佳孝
価格:3,360円購入はこちらからどうぞ