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.
SPARQLによるLODの検
索
大阪大学 産業科学研究所/
LODチャレンジ実行委員会 関西支部長
古崎 晃司
第4回
Linked Open Dataとオントロジー勉強会
2015/10/27@大阪大学中之島センター
開催年度\応募部門 データセット アイデア
アプリケー
ション
ビジュアライ
ゼーション
基盤技術
2014年度(245作品)
2013年度(321作品)
2012年度(205作品)
2011年度( 73作品)
87
101
87
21
51
...
LODハッカソン関西
2015/10/28 ICTSFC-WS in 大阪 3
• 2013年~,これまでに6回開催
• LODの技術資料の公開にも注力
http://wp.lodosaka.jp
関西オープンデータディ
~検索したおしたんディ~
2015/10/28 ICTSFC-WS in 大阪 4
• 開催日:2015/11/23(月・祝)
• 会場:大阪イノベーションハブ
• テーマ:データを検索したおす!
• サイト: http...
本日の予定
 19:00~20:30
SPARQLを用いたLODの検索入門&ハンズオン
 LODについて,おさらい
 SPARQLによるLOD検索入門&ハンズオン
 20:30~20:45
参加者からの話題提供(ライトニングトーク)
...
本日の勉強会のねらい
 メイントピック
 SPARQLによるLODの検索
 本日の目標
 SPARQLの基本的な使い方を学ぶ
 基本的な文法
 簡単なクエリの書き方
 いろいろなクエリのパターンを学ぶ
 基本的なクエリを組み合わ...
LODについて,おさらい
SPARQLを用いたLODの検索入門&ハンズオン
2015/10/27 7LODとオントロジー勉強会
Linked Open Data(LOD)
 Linked Data:Web上のデータを,つなぐ(linkする)ことで,新しい価値
を生み出そうとする取り組み.Webの創始者Tim Berners-Lee氏が提唱
※ Linked Open ...
5 ★ オープンデータ
★ (どんな形式でも良いので) あなたのデータをオープンライセンスでWeb上に公
開しましょう
★★ データを構造化データとして公開しましょう
★★★ 非独占の形式を使いましょう
★★★★ 物事を示すのにURIを使いまし...
5★オープンデータにおけるLOD
 ★★★★ (RDF)
物事を示すのにURIを使いましょう,そうすることで
他の人々があなたのデータにリンクすることができます
 ★★★★★ (LOD)
あなたのデータのコンテキストを提供するために
他のデ...
Linked Data (RDF)の例
大阪府
大阪市
都道府県
223㎢
2,687,287人
面積
人口
吹田市
豊中市
…
バラ科
市の木
隣接自治体
隣接自治体
…
http://ja.dbpedia.org/resource/大阪市 ...
Linked Data (RDF)の例
http://ja.dbpe
dia.org/resour
ce/大阪府
http://ja.dbpe
dia.org/resour
ce/大阪市
http://ja.dbpedia.org/resour...
SPARQLの基本
SPARQLを用いたLODの検索入門&ハンズオン
2015/10/27 13LODとオントロジー勉強会
SPARQLによるRDFの検索
 SPARQL
 RDFデータに対するクエリ言語
 「指定したグラフ構造」に一致するトリプルを検索する
 最も基本的な検索
select ?s ?p ?o
where {
?s ?p ?o .
}
LIM...
SPARQL検索のハンズオン
 SPARQLの検索の基本例
 DBpedia Japaneseの検索を例に,基本的な
SPARQLクエリについて学ぶ
 さまざまなクエリのパターン
 大阪市の情報LODを用いた簡単な検索
 CSVなどの...
DBPedia
Wikipediaの各記事のインフォボックスの情報を抽出して自動生成
されるLOD
様々なデータをつなぐLODのハブ的な存在となっている.
http://dbpedia.org/
日本語版のDBPediaは
http://jp....
データの例(大阪府)
2015/10/27 LODとオントロジー勉強会 17
すべてのWikipediaの記事が
http://ja.dbpedia.org/resource/大阪府
のようなURIでデータ化されている
DBpedia Japanese
2015/10/27 LODとオントロジー勉強会 18
http://jp.dbpedia.org/
SPARQL Endpoint
※ここから,検索可能
SPARQL Endpointの例
2015/10/27 LODとオントロジー勉強会 19
サンプルクエリ集
http://wp.lodosaka.jp/tool/sparqlquery/
http://ja.dbpedia.org/sparq...
SPARQLの検索の基本例①
 「東京都を主語(Subject)に含む」トリプルの述語(?p)
と目的語(?o)を取得する
select distinct ?p ?o
where {
<http://ja.dbpedia.org/resour...
SPARQLの検索の基本例②
 「ラベルが“大阪”と一致する」トリプルの主語(?s)
select distinct ?s where {
?s <http://www.w3.org/2000/01/rdf-schema#label> "大阪...
SPARQLの検索の基本例③
 「ラベルに“大阪”を含む」トリプルの主語(?s)
select distinct ?s where {
?s <http://www.w3.org/2000/01/rdf-schema#label> ?o .
...
SPARQLの検索の基本例④
 「ラベルが“大阪”と一致する」トリプルの主語(?s)
につながっている述語(?p)と目的語(?o)
select distinct ?p ?o where {
?s <http://www.w3.org/200...
OFFSETの利用
 OFFSETを使うと,クエリ結果をn番目から取得で
きる
PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/>
select distinct ?p ?o
where ...
SPARQLの省略表現①
 PREFIXの利用
select distinct ?p ?o where {
?s <http://www.w3.org/2000/01/rdf-schema#label> "大阪"@ja .
?s ?p ?o....
SPARQLの省略表現②
 主語が同じ時の省略表現
262015/10/27
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select distinct ?p ?o where {...
SPARQL検索のハンズオン
 SPARQLの検索の基本例
 DBpedia Japaneseの検索を例に,基本的な
SPARQLクエリについて学ぶ
 さまざまなクエリのパターン
 大阪市の情報LODを用いた簡単な検索
 CSVなどの...
大阪市の施設情報・防災情報の
LOD+簡易検索システム
2015/10/28
 大阪市の施設(9,238件)・防災設備(4,694件),標高(18,780地点)
の情報のLODです.約3万地点の緯度・経度情報がLOD化され,
検索用API(S...
表からへ関したRDFデータの構造
 表から変換したRDFの多くは,下記のようなグラフ構
造になる
2015/10/28 29
ID_1
スポーツ施設
千代台公園野球場
函館市千代台町22-26
http://www.zaidan-hako
d...
表からへ関したRDFデータの構造
へのクエリ
 主語(?s)を変数として,絞り込みたいクエリを書けば良い
 ただし,全てのプロパティが使われているとは限らないので,必須出な
いプロパティにはOPTIONALを使う
例)
PREFIX sch...
SPARQL検索のハンズオン
 SPARQLの検索の基本例
 DBpedia Japaneseの検索を例に,基本的な
SPARQLクエリについて学ぶ
 さまざまなクエリのパターン
 大阪市の情報LODを用いた簡単な検索
 CSVなどの...
DBpedia Japaneseの検索例
大阪府を主語とするトリプル一覧
 興味があるデータ(リソース)が決まっているときに,
“そのデータにつながっている全データ”
=“そのデータを主語とする全トリプル”
を取得する
2015/10/27 ...
2015/10/27 33LODとオントロジー勉強会
DBpedia Japaneseの検索例
大阪府が持つプロパティ一覧
 結果が多すぎるので,興味があるトリプルに絞りたい.
 どのプロパティ(関係)で絞り込むかを考えるために,
“そのデータにつながっているプロパティの一覧”
を取得する
2...
2015/10/27 35
ここから,興味があ
るプロパティ(関係)
を選ぶと良い
例)隣接都道府県
LODとオントロジー勉強会
DBpedia Japaneseの検索例
大阪府の隣接都道府県
 “興味があるデータ(リソース)と,
興味があるプロパティ(関係)でつながったトリプル”
(の目的語)を取得する
2015/10/27 36
PREFIX prop-ja: <h...
2015/10/27 37LODとオントロジー勉強会
DBpedia Japaneseの検索例
すべての隣接都道府県の組
 主語(?s)と目的語(?o)を変数として,
興味があるプロパティ(関係)のみを指定すると,
“その関係を持つ,すべての主語と述語の組”が
取得できる
2015/10/27 ...
2015/10/27 39LODとオントロジー勉強会
DBpedia Japaneseの検索例
大阪府の隣接都道府県の数
 countを使うと,取得したデータの数を取得できる.
2015/10/27 40
PREFIX prop-ja: <http://ja.dbpedia.org/proper...
2015/10/27 41
カウントした結果(数)
を?countに代入
LODとオントロジー勉強会
DBpedia Japaneseの検索例
不要なプロパティをFILTERで除
外
 あるプロパティ(関係)によるトリプルが多すぎるので除
外したい.→FILTERを用いることで,取得するトリプルの
“特定の条件による絞り込み”が可能
2015...
SPARQL検索のハンズオン
 SPARQLの検索の基本例
 DBpedia Japaneseの検索を例に,基本的な
SPARQLクエリについて学ぶ
 さまざまなクエリのパターン
 大阪市の情報LODを用いた簡単な検索
 CSVなどの...
DBpedia Japaneseの検索例
タイプ一覧の取得
 RDFにおけるリソースは,rdf:typeプロパティにより,
リソースの種類(=どのクラスのインスタンスであるか)
が指定される.※タイプが指定されていないRDFデータもある
 ...
2015/10/27 45
ここから,興味がある
タイプを選ぶと良い
例)Place
LODとオントロジー勉強会
DBpedia Japaneseの検索例
都道府県の一覧を取得
 rdf:typeプロパティの目的語となるクラスを指定することで,
特定の種類のリソースが取得できる.
 ただ,DBpedia Japaneseでは,クラスの種類が少ないため,...
2015/10/27 47
備考:
カテゴリのみの指定だと,
このようなゴミが入る
LODとオントロジー勉強会
DBpedia Japaneseの検索例
都道府県の一覧を郵便番号でソート
 ORDER BYを使うと,取得した一覧をソートできる.
 “ソートのキー”とする変数を指定する.
2015/10/27 48
PREFIX dbpedia-owl...
2015/10/27 49LODとオントロジー勉強会
DBpedia Japaneseの検索例
都道府県を「隣接自治体の数」でソート
 ORDER BYの“ソートのキー”としてcount結果を利用する.
2015/10/27 50
PREFIX dbpedia-owl: <http://dbpe...
2015/10/27 51LODとオントロジー勉強会
DBpedia Japaneseの検索例
各都道府県で生まれた政治家
 都道府県一覧を取得するクエリに,もう少し複雑なクエリを組み合
わせてみる.
2015/10/27 52
PREFIX dbpedia-owl: <http://dbped...
2015/10/27 53LODとオントロジー勉強会
DBpedia Japaneseの検索例
各都道府県で生まれた政治家の数
 GROUP BYを用いると,取得したトリプルをグループ化できる.
2015/10/27 54
PREFIX dbpedia-owl: <http://dbpedia....
2015/10/27 55LODとオントロジー勉強会
DBpedia Japaneseの検索例
出生地が大阪府または東京都の政治家
 UNIONを使うとOR条件での検索が可能.
2015/10/27 56
PREFIX dbpedia-owl: <http://dbpedia.org/ontol...
2015/10/27 57LODとオントロジー勉強会
SPARQLに関する参考資料
 SPARQL 1.1の仕様書(W3C)
 http://www.w3.org/TR/sparql11-overview/
 LODハッカソン関西
 http://wp.lodosaka.jp/
 リンク...
LODの公開・利用に便利なツール
の紹介
 CSV2RDF http://lodosaka.jp/tool/CSV2LOD/
 CSVファイルをRDFに変化するツール
 テンプレートを用いることで柔軟な変換が可能
 解説スライド
htt...
今後の予定
 11/6(金),7(土)
 神戸ITフェスティバル:LODのセッション有り
 11/7,16:30~17:30 LODハンズオン
 11月中旬?
 11/23に向けた「モクモク会」を開催するかも?
 11/23(月)
...
Upcoming SlideShare
Loading in …5
×

SPARQLによるLODの検索@第4回LODとオントロジー勉強会-

2,512 views

Published on

第4回LODとオントロジー勉強会で使用した,
「SPARQLによるLODの検索」の解説スライドです.

Published in: Technology

SPARQLによるLODの検索@第4回LODとオントロジー勉強会-

  1. 1. SPARQLによるLODの検 索 大阪大学 産業科学研究所/ LODチャレンジ実行委員会 関西支部長 古崎 晃司 第4回 Linked Open Dataとオントロジー勉強会 2015/10/27@大阪大学中之島センター
  2. 2. 開催年度\応募部門 データセット アイデア アプリケー ション ビジュアライ ゼーション 基盤技術 2014年度(245作品) 2013年度(321作品) 2012年度(205作品) 2011年度( 73作品) 87 101 87 21 51 67 50 34 69 122 44 18 20 18 24 18 13 Linked Open Data(LOD) チャレンジ LODの技術普及を目的として開催している日本初の オープンデータに関するコンテスト(2011年度より毎年開催)  これまでの応募状況 http://lodc.jp 2015/10/28 LODチャレンジ2015:作品募集中(2016年1月17日まで) 年々,応募作品数の増加/質の向上が見られる=LOD利用の広がり 2013年度以降には,オープンデータのコンテストが多数開催される ICTSFC-WS in 大阪 2
  3. 3. LODハッカソン関西 2015/10/28 ICTSFC-WS in 大阪 3 • 2013年~,これまでに6回開催 • LODの技術資料の公開にも注力 http://wp.lodosaka.jp
  4. 4. 関西オープンデータディ ~検索したおしたんディ~ 2015/10/28 ICTSFC-WS in 大阪 4 • 開催日:2015/11/23(月・祝) • 会場:大阪イノベーションハブ • テーマ:データを検索したおす! • サイト: https://goo.gl/KY2AW4
  5. 5. 本日の予定  19:00~20:30 SPARQLを用いたLODの検索入門&ハンズオン  LODについて,おさらい  SPARQLによるLOD検索入門&ハンズオン  20:30~20:45 参加者からの話題提供(ライトニングトーク)  5分×3件を予定  20:45~21:00 LODの公開・利用に便利なツールの紹介 2015/10/27 5LODとオントロジー勉強会
  6. 6. 本日の勉強会のねらい  メイントピック  SPARQLによるLODの検索  本日の目標  SPARQLの基本的な使い方を学ぶ  基本的な文法  簡単なクエリの書き方  いろいろなクエリのパターンを学ぶ  基本的なクエリを組み合わせて,少し複雑な SPARQLクエリを書けるようになる  初めて見るデータセット(SPARQL Endpoint)に対 しても,いろいろ試せるようになる 2015/10/27 LODとオントロジー勉強会 6
  7. 7. LODについて,おさらい SPARQLを用いたLODの検索入門&ハンズオン 2015/10/27 7LODとオントロジー勉強会
  8. 8. Linked Open Data(LOD)  Linked Data:Web上のデータを,つなぐ(linkする)ことで,新しい価値 を生み出そうとする取り組み.Webの創始者Tim Berners-Lee氏が提唱 ※ Linked Open Data(LOD):オープンな形で公開されたLinked Data 2015/10/27 LODとオントロジー勉強会 http://linkeddata.org/ • 誰もが同じ方法で,「データをつなぐことができる仕組み」を提供している. • 技術的には, -データ公開の共通フォーマット(URIによる名前付け,RDFによるグラフ表現 -コンピュータが,データにアクセスする共通の仕組み が提供されている. →Web上に公開された膨大なデータを統合した1つのデータベースとして利用できる. 8
  9. 9. 5 ★ オープンデータ ★ (どんな形式でも良いので) あなたのデータをオープンライセンスでWeb上に公 開しましょう ★★ データを構造化データとして公開しましょう ★★★ 非独占の形式を使いましょう ★★★★ 物事を示すのにURIを使いましょう,そうすることで他の人々があなたのデータ にリンクすることができます ★★★★★ あなたのデータのコンテキストを提供するために他のデータへリンクしましょう http://5stardata.info/ja/ より引用 (図および原文は http://5stardata.info/ ) ライセンスについて フォーマットについて Webの発明者でありLinked Dataの創始者でもあ るティム・バーナーズ=リーがオープンデータのた めに提案したスキーム ※注:図中のPDF,エクセル,CSVのアイコンは, あくまでも例示であって,そのフォーマットを推奨 している訳ではない. 2015/10/27 LODとオントロジー勉強会 LOD 9
  10. 10. 5★オープンデータにおけるLOD  ★★★★ (RDF) 物事を示すのにURIを使いましょう,そうすることで 他の人々があなたのデータにリンクすることができます  ★★★★★ (LOD) あなたのデータのコンテキストを提供するために 他のデータへリンクしましょう →LOD(Linked Open Data) =Web上で相互にリンクされたOpen Data ※リンクする際には「Webの仕組み」を利用する  データ(物事)を示すのにURIを用いる  データ間を(名前付き)Hyper-linkでリンクする 2015/10/27 LODとオントロジー勉強会 10
  11. 11. Linked Data (RDF)の例 大阪府 大阪市 都道府県 223㎢ 2,687,287人 面積 人口 吹田市 豊中市 … バラ科 市の木 隣接自治体 隣接自治体 … http://ja.dbpedia.org/resource/大阪市 というURIから得られる情報 サクラ 科 Cherry blossom英名 リソース: URIで表される モノ・コト プロパティ: リソース間の関 係を表す リテラル :文字列 主語 述語 目的語 トリプル ※RDF(Linked Dataのデータ モデル)は,「トリプルの組み 合わせ」で表される (DBpedia Japaneseより) 目的語が他のリソースのとき,トリプル を辿って更なる情報が得られる ※実際のリソースとプロパティは,すべてURIで表される. 2015/10/27 LODとオントロジー勉強会 11
  12. 12. Linked Data (RDF)の例 http://ja.dbpe dia.org/resour ce/大阪府 http://ja.dbpe dia.org/resour ce/大阪市 http://ja.dbpedia.org/resource/都道府県 223㎢ 2,687,287人 http://ja.dbpedia.org/resource/面積 http://ja.dbpedia.org/resource/人口 http://ja.dbpe dia.org/resour ce/吹田市 http://ja.dbpe dia.org/resour ce/豊中市 … http://ja.dbpe dia.org/resour ce/バラ科 http://ja.dbpedia.org/resource/市の木 http://ja.dbpedia.org/resource/隣接自治体 http://ja.dbpedia.org/resource/隣接自治体 … http://ja.dbpedia.org/resource/大阪市 というURIから得られる情報 http://ja.dbpe dia.org/resour ce/サクラ http://ja.dbpedia.org/resource/科 Cherry blossomhttp://ja.dbpedia.org/resource/英名 (DBpedia Japaneseより) ※実際のリソースとプロパティは,すべてURIで表される. 2015/10/27 LODとオントロジー勉強会 12
  13. 13. SPARQLの基本 SPARQLを用いたLODの検索入門&ハンズオン 2015/10/27 13LODとオントロジー勉強会
  14. 14. SPARQLによるRDFの検索  SPARQL  RDFデータに対するクエリ言語  「指定したグラフ構造」に一致するトリプルを検索する  最も基本的な検索 select ?s ?p ?o where { ?s ?p ?o . } LIMIT 100 ←取得する数の制限 ←検索するグラフのパターン ←返す要素 この例では「任意のトリプルの組み合わせ」 このパターンを変 えることで,欲しい データを取得する 142015/10/27 「.」(ピリオド)を忘れない LODとオントロジー勉強会 * とすると全ての変数を返す
  15. 15. SPARQL検索のハンズオン  SPARQLの検索の基本例  DBpedia Japaneseの検索を例に,基本的な SPARQLクエリについて学ぶ  さまざまなクエリのパターン  大阪市の情報LODを用いた簡単な検索  CSVなどの表形式のオープンデータから変換された RDFの検索  DBpedia Japaneseのより複雑な検索  興味があるデータ(リソース)を中心とした検索  同一種類のデータ(リソース)を中心とした検索 2015/10/27 LODとオントロジー勉強会 15
  16. 16. DBPedia Wikipediaの各記事のインフォボックスの情報を抽出して自動生成 されるLOD 様々なデータをつなぐLODのハブ的な存在となっている. http://dbpedia.org/ 日本語版のDBPediaは http://jp.dbpedia.org/ インフォボックスの例 162015/10/27 LODとオントロジー勉強会
  17. 17. データの例(大阪府) 2015/10/27 LODとオントロジー勉強会 17 すべてのWikipediaの記事が http://ja.dbpedia.org/resource/大阪府 のようなURIでデータ化されている
  18. 18. DBpedia Japanese 2015/10/27 LODとオントロジー勉強会 18 http://jp.dbpedia.org/ SPARQL Endpoint ※ここから,検索可能
  19. 19. SPARQL Endpointの例 2015/10/27 LODとオントロジー勉強会 19 サンプルクエリ集 http://wp.lodosaka.jp/tool/sparqlquery/ http://ja.dbpedia.org/sparql ここに,クエリを入れる ※プログラムからのクエリ +結果取得も可能
  20. 20. SPARQLの検索の基本例①  「東京都を主語(Subject)に含む」トリプルの述語(?p) と目的語(?o)を取得する select distinct ?p ?o where { <http://ja.dbpedia.org/resource/東京都> ?p ?o . } LIMIT 100 「東京都」を表すURI DBpedia Japanese http://ja.dbpedia.org/sparql での検索結果 ↑同じパターンは除外する 202015/10/27 LODとオントロジー勉強会
  21. 21. 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 での検索結果 212015/10/27 LODとオントロジー勉強会
  22. 22. 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 での検索結果 222015/10/27 LODとオントロジー勉強会
  23. 23. SPARQLの検索の基本例④  「ラベルが“大阪”と一致する」トリプルの主語(?s) につながっている述語(?p)と目的語(?o) 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 Japanese http://ja.dbpedia.org/sparql での検索結果 232015/10/27 LODとオントロジー勉強会
  24. 24. OFFSETの利用  OFFSETを使うと,クエリ結果をn番目から取得で きる PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct ?p ?o where { dbpedia-ja:東京都 ?p ?o . } LIMIT 10 OFFSET 10 2015/10/27 24 10番目の結果から取得 LODとオントロジー勉強会
  25. 25. SPARQLの省略表現①  PREFIXの利用 select distinct ?p ?o where { ?s <http://www.w3.org/2000/01/rdf-schema#label> "大阪"@ja . ?s ?p ?o. }LIMIT 100 252015/10/27 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> select distinct ?p ?o where { ?s rdfs:label "大阪"@ja . ?s ?p ?o. }LIMIT 100 LODとオントロジー勉強会
  26. 26. SPARQLの省略表現②  主語が同じ時の省略表現 262015/10/27 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> select distinct ?p ?o where { ?s rdfs:label "大阪"@ja . ?s ?p ?o. }LIMIT 100 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> select distinct ?p ?o where { ?s rdfs:label "大阪"@ja ; ?p ?o. }LIMIT 100 LODとオントロジー勉強会
  27. 27. SPARQL検索のハンズオン  SPARQLの検索の基本例  DBpedia Japaneseの検索を例に,基本的な SPARQLクエリについて学ぶ  さまざまなクエリのパターン  大阪市の情報LODを用いた簡単な検索  CSVなどの表形式のオープンデータから変換された RDFの検索  DBpedia Japaneseのより複雑な検索  興味があるデータ(リソース)を中心とした検索  同一種類のデータ(リソース)を中心とした検索 2015/10/27 LODとオントロジー勉強会 27
  28. 28. 大阪市の施設情報・防災情報の LOD+簡易検索システム 2015/10/28  大阪市の施設(9,238件)・防災設備(4,694件),標高(18,780地点) の情報のLODです.約3万地点の緯度・経度情報がLOD化され, 検索用API(SPAQRLエンドポイント)・簡易検索システムと共に公開. SPARQL(RDF用検索言語)を使わずに, 簡単なキーワードによる検索が可能 http://lodosaka.hozo.jp/OsakaCityMapLOD.htm 他のアプリを開発するときに,直接,利用できる仕組み LODチャレンジ2013 チャレンジデー賞 ICTSFC-WS in 大阪 28
  29. 29. 表からへ関したRDFデータの構造  表から変換したRDFの多くは,下記のようなグラフ構 造になる 2015/10/28 29 ID_1 スポーツ施設 千代台公園野球場 函館市千代台町22-26 http://www.zaidan-hako date .com /okugai/baseball/ 41.784926 140.746367 カテゴリ 施設名(ラベル) 住所 HPのURL 緯度 経度 主語 (Subject) 述語 (Property) 目的語 (Object) RDFデータ =「主語-述語-目的語」 の組み合わせで表される グラフ構造のデータ ※目的語になるデータには,「URIで表されるリソース」と「文字列で表されるリテラル」がある. →目的語を他のリソースとすることで,複雑なグラフも表現可能
  30. 30. 表からへ関したRDFデータの構造 へのクエリ  主語(?s)を変数として,絞り込みたいクエリを書けば良い  ただし,全てのプロパティが使われているとは限らないので,必須出な いプロパティにはOPTIONALを使う 例) PREFIX schema:<http://schema.org/> SELECT DISTINCT * WHERE{ ?uri schema:address ?address; schema:name ?name. FILTER regex(str(?address),"中之島") OPTIONAL{ ?uri <http://schema.org/address> ?addr. } }  大阪市の施設情報  http://lodosaka.hozo.jp/OsakaCityMapLOD.htm  大阪市のイベント情報  http://data.lodosaka.jp/osaka-events/ 2015/10/27 LODとオントロジー勉強会 30
  31. 31. SPARQL検索のハンズオン  SPARQLの検索の基本例  DBpedia Japaneseの検索を例に,基本的な SPARQLクエリについて学ぶ  さまざまなクエリのパターン  大阪市の情報LODを用いた簡単な検索  CSVなどの表形式のオープンデータから変換された RDFの検索  DBpedia Japaneseのより複雑な検索  興味があるデータ(リソース)を中心とした検索  同一種類のデータ(リソース)を中心とした検索 2015/10/27 LODとオントロジー勉強会 31
  32. 32. DBpedia Japaneseの検索例 大阪府を主語とするトリプル一覧  興味があるデータ(リソース)が決まっているときに, “そのデータにつながっている全データ” =“そのデータを主語とする全トリプル” を取得する 2015/10/27 32 PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct * where { dbpedia-ja:大阪府 ?p ?o. } 興味があるデータ (リソース) 全てのトリプル=つながっている 述語(?p)と目的語(?o)を指定 全変数(ここでは,?pと?o)を返す LODとオントロジー勉強会
  33. 33. 2015/10/27 33LODとオントロジー勉強会
  34. 34. DBpedia Japaneseの検索例 大阪府が持つプロパティ一覧  結果が多すぎるので,興味があるトリプルに絞りたい.  どのプロパティ(関係)で絞り込むかを考えるために, “そのデータにつながっているプロパティの一覧” を取得する 2015/10/27 34 PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct ?p where { dbpedia-ja:大阪府 ?p ?o. } ★取得する結果を,?pのみに変える LODとオントロジー勉強会
  35. 35. 2015/10/27 35 ここから,興味があ るプロパティ(関係) を選ぶと良い 例)隣接都道府県 LODとオントロジー勉強会
  36. 36. DBpedia Japaneseの検索例 大阪府の隣接都道府県  “興味があるデータ(リソース)と, 興味があるプロパティ(関係)でつながったトリプル” (の目的語)を取得する 2015/10/27 36 PREFIX prop-ja: <http://ja.dbpedia.org/property/> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct * where { dbpedia-ja:大阪府 prop-ja:隣接都道府県 ?o. } 目的語 全て取得(ここでは,目的語?o) 主語:興味がある データ(リソース) 述語:興味がある関係 (プロパティ) LODとオントロジー勉強会
  37. 37. 2015/10/27 37LODとオントロジー勉強会
  38. 38. DBpedia Japaneseの検索例 すべての隣接都道府県の組  主語(?s)と目的語(?o)を変数として, 興味があるプロパティ(関係)のみを指定すると, “その関係を持つ,すべての主語と述語の組”が 取得できる 2015/10/27 38 PREFIX prop-ja: <http://ja.dbpedia.org/property/> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct * where { ?s prop-ja:隣接都道府県 ?o. } 目的語主語も変数 にする 述語:興味がある関係 (プロパティ) LODとオントロジー勉強会
  39. 39. 2015/10/27 39LODとオントロジー勉強会
  40. 40. DBpedia Japaneseの検索例 大阪府の隣接都道府県の数  countを使うと,取得したデータの数を取得できる. 2015/10/27 40 PREFIX prop-ja: <http://ja.dbpedia.org/property/> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct count(?o) where { dbpedia-ja:大阪府 prop-ja:隣接都道府県 ?o. } 大阪府の 隣接都道府県 PREFIX prop-ja: <http://ja.dbpedia.org/property/> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct count(?o) AS ?count where { dbpedia-ja:大阪府 prop-ja:隣接都道府県 ?o. } カウントした結果(数)を?countに代入 LODとオントロジー勉強会
  41. 41. 2015/10/27 41 カウントした結果(数) を?countに代入 LODとオントロジー勉強会
  42. 42. DBpedia Japaneseの検索例 不要なプロパティをFILTERで除 外  あるプロパティ(関係)によるトリプルが多すぎるので除 外したい.→FILTERを用いることで,取得するトリプルの “特定の条件による絞り込み”が可能 2015/10/27 42 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX prop-ja: <http://ja.dbpedia.org/property/> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> select distinct * where { dbpedia-ja:大阪府 ?p ?o. FILTER (?p != dbpedia-owl:wikiPageWikiLink) . } 絞り込み条件 (?p がwikiPageWikiLinkではない) LODとオントロジー勉強会
  43. 43. SPARQL検索のハンズオン  SPARQLの検索の基本例  DBpedia Japaneseの検索を例に,基本的な SPARQLクエリについて学ぶ  さまざまなクエリのパターン  大阪市の情報LODを用いた簡単な検索  CSVなどの表形式のオープンデータから変換された RDFの検索  DBpedia Japaneseのより複雑な検索  興味があるデータ(リソース)を中心とした検索  同一種類のデータ(リソース)を中心とした検索 2015/10/27 LODとオントロジー勉強会 43
  44. 44. DBpedia Japaneseの検索例 タイプ一覧の取得  RDFにおけるリソースは,rdf:typeプロパティにより, リソースの種類(=どのクラスのインスタンスであるか) が指定される.※タイプが指定されていないRDFデータもある  そのデータセットで“使われているタイプの一覧”を取得 2015/10/27 44 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> select distinct ?o where { ?s rdf:type ?o. }LIMIT 100 LODとオントロジー勉強会
  45. 45. 2015/10/27 45 ここから,興味がある タイプを選ぶと良い 例)Place LODとオントロジー勉強会
  46. 46. DBpedia Japaneseの検索例 都道府県の一覧を取得  rdf:typeプロパティの目的語となるクラスを指定することで, 特定の種類のリソースが取得できる.  ただ,DBpedia Japaneseでは,クラスの種類が少ないため, dcterms:subjectプロパティで,Wikipediaでの記事のカテゴリ を指定することで,うまく調整する. 2015/10/27 46 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX category-ja: <http://ja.dbpedia.org/resource/Category:> select distinct ?s where { ?s rdf:type dbpedia-owl:Place. ?s dcterms:subject category-ja:日本の都道府県. } クラスの指定 カテゴリの指定 LODとオントロジー勉強会
  47. 47. 2015/10/27 47 備考: カテゴリのみの指定だと, このようなゴミが入る LODとオントロジー勉強会
  48. 48. DBpedia Japaneseの検索例 都道府県の一覧を郵便番号でソート  ORDER BYを使うと,取得した一覧をソートできる.  “ソートのキー”とする変数を指定する. 2015/10/27 48 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX category-ja: <http://ja.dbpedia.org/resource/Category:> select distinct ?s ?o where { ?s rdf:type dbpedia-owl:Place; dcterms:subject category-ja:日本の都道府県; dbpedia-owl:postalCode ?o. } ORDER BY ?o 各都道府県(?s) の郵便番号 郵便番号(?o)を ソートのキーに指定 DESC(?o) に変えると「降順」でソート 都道府県 LODとオントロジー勉強会
  49. 49. 2015/10/27 49LODとオントロジー勉強会
  50. 50. DBpedia Japaneseの検索例 都道府県を「隣接自治体の数」でソート  ORDER BYの“ソートのキー”としてcount結果を利用する. 2015/10/27 50 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX category-ja: <http://ja.dbpedia.org/resource/Category:> select distinct ?s count(?o) AS ?c where { ?s rdf:type dbpedia-owl:Place; dcterms:subject category-ja:日本の都道府県; prop-ja:隣接都道府県 ?o. } ORDER BY ?c 隣接都道府数(?c)を ソートのキーに指定 各都道府県(?s) の隣接都道府県 隣接都道府(?o)をカウントして?cに代入 都道府県 LODとオントロジー勉強会
  51. 51. 2015/10/27 51LODとオントロジー勉強会
  52. 52. DBpedia Japaneseの検索例 各都道府県で生まれた政治家  都道府県一覧を取得するクエリに,もう少し複雑なクエリを組み合 わせてみる. 2015/10/27 52 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX category-ja: <http://ja.dbpedia.org/resource/Category:> select distinct ?pref ?s where { ?pref rdf:type dbpedia-owl:Place. ?pref dcterms:subject category-ja:日本の都道府県. ?s rdf:type dbpedia-owl:Politician; dbpedia-owl:birthPlace ?pref. }ORDER BY ?pref 政治家(?s)=タイプが政治家で, 生まれた場所が,各都道府県(?pref) 各都道府県の一覧 (?pref)を得るクエリ 都道府県 都道府数(?pref)を ソートのキーに指定 LODとオントロジー勉強会
  53. 53. 2015/10/27 53LODとオントロジー勉強会
  54. 54. DBpedia Japaneseの検索例 各都道府県で生まれた政治家の数  GROUP BYを用いると,取得したトリプルをグループ化できる. 2015/10/27 54 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX category-ja: <http://ja.dbpedia.org/resource/Category:> select distinct ?pref (count(?s) AS ?c) where { ?pref rdf:type dbpedia-owl:Place. ?pref dcterms:subject category-ja:日本の都道府県. ?s rdf:type dbpedia-owl:Politician; dbpedia-owl:birthPlace ?pref. } GROUP BY ?pref ORDER BY ?c 政治家(?s)の数をカウント 都道府県 都道府数(?pref) 毎にグループ化 都道府県(?pref)毎の 政治家(?s)の数(?c) をソートのキーに指定 ここを変えると, いろんな職業の出身県 別ランキングが出来る 例)Comedian LODとオントロジー勉強会
  55. 55. 2015/10/27 55LODとオントロジー勉強会
  56. 56. DBpedia Japaneseの検索例 出生地が大阪府または東京都の政治家  UNIONを使うとOR条件での検索が可能. 2015/10/27 56 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX category-ja: <http://ja.dbpedia.org/resource/Category:> select distinct ?s ?pref where { {?s rdf:type dbpedia-owl:Politician; dbpedia-owl:birthPlace dbpedia-ja:大阪府.} UNION {?s rdf:type dbpedia-owl:Politician; dbpedia-owl:birthPlace dbpedia-ja:東京都.} ?s dbpedia-owl:birthPlace ?pref. }ORDER BY ?pref 取得した政治家(?s)の出生地(?pref) ※この例では「大阪府」か「東京都」 出生地が大阪府の 政治家を得るクエリ 出生地が東京都の 政治家を得るクエリ LODとオントロジー勉強会
  57. 57. 2015/10/27 57LODとオントロジー勉強会
  58. 58. SPARQLに関する参考資料  SPARQL 1.1の仕様書(W3C)  http://www.w3.org/TR/sparql11-overview/  LODハッカソン関西  http://wp.lodosaka.jp/  リンクト・オープン・データ・イニシアティブ(LODI)による 「Linked Open Data連続講義」  http://linkedopendata.jp/?cat=17  第5回 「LODの作り方・使い方」 http://linkedopendata.jp/?p=554  SPARQLでマッシュアップ-LOD活用のための技術紹介 (by Hiroshi Ueda)  http://www.slideshare.net/uedayou/sparqllod 2015/10/27 58LODとオントロジー勉強会
  59. 59. LODの公開・利用に便利なツール の紹介  CSV2RDF http://lodosaka.jp/tool/CSV2LOD/  CSVファイルをRDFに変化するツール  テンプレートを用いることで柔軟な変換が可能  解説スライド http://www.slideshare.net/KoujiKozaki/csvlod  DyDra.com http://dydra.com/  RDFデータベース(トリプルストア)のクラウドサービス  Free版有り(100万トリプル?まで)  アカウントを発行してもらうと http://dydra.com/koujikozaki/osakacitydata のようなURLで,SPARQLエンドポイントを立てることが出来る 2015/10/27 LODとオントロジー勉強会 59
  60. 60. 今後の予定  11/6(金),7(土)  神戸ITフェスティバル:LODのセッション有り  11/7,16:30~17:30 LODハンズオン  11月中旬?  11/23に向けた「モクモク会」を開催するかも?  11/23(月)  関西オープンデータディ~検索したおしたんディ~  勉強会の開催日について  平日夜 or 休日?  その他のご希望は? 2015/10/27 LODとオントロジー勉強会 60

×