Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Linked Open Data (LOD)の基礎講座

6,821 views

Published on

LODチャレンジ実行委員会 関西支部長 古崎晃司
LODチャレンジ実行委員会/Linked Open Data Initiative理事 松村冬子

Linked Open Dataの基本的な技術の解説,利用事例の紹介に加え,簡単なサンプルプログラムの紹介など,ハッカソンに活用できるLOD技術や情報ソースについて解説します. 

第3回Linked Open Dataハッカソン関西(1日目)アイデアソン
開催日:2014年2月11日(火)

Linked Open Data (LOD)の基礎講座

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

×