Top Banner
SPARQL ににに LOD ににに 大大大大 大大大大大大大 / LOD 大大大大大大大大大大 大大大 西 にに にに 大4大 Linked Open Data 大大大大大大大大大大 2015/10/27@ 大大大大大大大大大大大
60

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

Jan 16, 2017

Download

Technology

Kouji Kozaki
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SPARQLによるLODの検索@第4回LODとオントロジー勉強会-

SPARQL による LODの検索

大阪大学 産業科学研究所 /LOD チャレンジ実行委員会 関西支部長

古崎 晃司

第 4 回Linked Open Data とオントロジー勉強会2015/10/27@ 大阪大学中之島センター

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

開催年度\応募部門 データセット

アイデア アプリケーション

ビジュアライゼーショ

ン基盤技術

2014 年度( 245作品)2013 年度( 321作品)2012 年度( 205作品)2011 年度( 73作品)

871018721

51675034

691224418

201824

1813

Linked Open Data ( LOD )チャレンジLOD の技術普及を目的として開催している日本初のオープンデータに関するコンテスト( 2011 年度より毎年開催) これまでの応募状況

http://lodc.jp

2015/10/28LOD チャレンジ 2015 :作品募集中( 2016 年 1 月17 日まで)

年々,応募作品数の増加 / 質の向上が見られる= LOD 利用の広がり2013 年度以降には,オープンデータのコンテストが多数開催される ICTSFC-WS in 大阪 2

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

LOD ハッカソン関西

2015/10/28 ICTSFC-WS in 大阪 3

• 2013 年~,これまでに 6 回開催• LOD の技術資料の公開にも注力

http://wp.lodosaka.jp

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

関西オープンデータディ ~検索したおしたんディ~

2015/10/28 ICTSFC-WS in 大阪 4

• 開催日: 2015/11/23 (月・祝)

• 会場:大阪イノベーションハブ• テーマ:データを検索したお

す!• サイト: https://

goo.gl/KY2AW4

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

本日の予定

19:00 ~ 20:30SPARQL を用いた LOD の検索入門&ハンズオン LOD について,おさらい SPARQL による LOD 検索入門&ハンズオン

20:30 ~ 20:45参加者からの話題提供(ライトニングトーク) 5分 × 3件を予定

20:45 ~ 21:00LOD の公開・利用に便利なツールの紹介

2015/10/27 5LOD とオントロジー勉強会

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

本日の勉強会のねらい

メイントピック SPARQL による LOD の検索

本日の目標 SPARQL の基本的な使い方を学ぶ

基本的な文法 簡単なクエリの書き方

いろいろなクエリのパターンを学ぶ 基本的なクエリを組み合わせて,少し複雑な

SPARQL クエリを書けるようになる 初めて見るデータセット( SPARQL

Endpoint )に対しても,いろいろ試せるようになる

2015/10/27 LOD とオントロジー勉強会 6

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

LOD について,おさらいSPARQL を用いた LOD の検索入門&ハンズオン

2015/10/27 7LOD とオントロジー勉強会

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

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

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

5 ★ オープンデータ★    ( どんな形式でも良いので ) あなたのデータをオープンライセンスでWeb 上に公   開しましょう★★   データを構造化データとして公開しましょう★★★   非独占の形式を使いましょう★★★★   物事を示すのに URI を使いましょう,そうすることで他の人々があなたのデータ にリンクすることができます★★★★★ あなたのデータのコンテキストを提供するために他のデータへリンクしましょう

http://5stardata.info/ja/ より引用(図および原文は http://5stardata.info/ )

ライセンスについて

フォーマットについて

Web の発明者であり Linked Data の創始者でもあるティム・バーナーズ=リーがオープンデータのために提案したスキーム※注:図中の PDF ,エクセル, CSV のアイコンは, あくまでも例示であって,そのフォーマットを推奨 している訳ではない.

2015/10/27 LOD とオントロジー勉強会

LOD

9

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

5★オープンデータにおけるLOD ★★★★  ( RDF ) 

 物事を示すのに URI を使いましょう,そうすることで 他の人々があなたのデータにリンクすることができます

★★★★★ ( LOD ) あなたのデータのコンテキストを提供するために 他のデータへリンクしましょう

 → LOD ( Linked Open Data )  = Web 上で相互にリンクされた Open Data ※リンクする際には「 Web の仕組み」を利用する

データ(物事)を示すのに URI を用いる データ間を(名前付き) Hyper-link でリンクする

2015/10/27 LOD とオントロジー勉強会 10

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

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

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

Linked Data (RDF) の例

http://ja.dbpedia.org/resource/ 大阪府

http://ja.dbpedia.org/resource/ 大阪市

http://ja.dbpedia.org/resource/都道府県 223㎢2,687,287人

http://ja.dbpedia.org/resource/面積

http://ja.dbpedia.org/resource/人口

http://ja.dbpedia.org/resource/吹田市

http://ja.dbpedia.org/resource/豊中市

…http://ja.dbpedia.org/resource/バラ科

http://ja.dbpedia.org/resource/市の木

http://ja.dbpedia.org/resource/隣接自治体

http://ja.dbpedia.org/resource/隣接自治体

http://ja.dbpedia.org/resource/大阪市 という URI から得られる情報

http://ja.dbpedia.org/resource/ サクラ

http://ja.dbpedia.org/resource/ 科

Cherry blossomhttp://ja.dbpedia.org/resource/英名

( DBpedia Japanese より)

※実際のリソースとプロパティは,すべて URI で表される.2015/10/27 LOD とオントロジー勉強会 12

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

SPARQL の基本SPARQL を用いた LOD の検索入門&ハンズオン

2015/10/27 13LOD とオントロジー勉強会

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

SPARQL による RDF の検索 SPARQL

RDF データに対するクエリ言語 「指定したグラフ構造」に一致するトリプルを検索する

最も基本的な検索

select ?s ?p ?owhere { ?s ?p ?o . }LIMIT 100 ←取得する数の制限

←検索するグラフのパターン

←返す要素

この例では「任意のトリプルの組み合わせ」

このパターンを変えることで,欲しいデータを取得する

142015/10/27

「 . 」(ピリオド)を忘れない

LOD とオントロジー勉強会

* とすると全ての変数を返す

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

SPARQL 検索のハンズオン

SPARQL の検索の基本例 DBpedia Japanese の検索を例に,基本的

な SPARQL クエリについて学ぶ さまざまなクエリのパターン

大阪市の情報 LOD を用いた簡単な検索 CSV などの表形式のオープンデータから変換さ

れた RDF の検索 DBpedia Japanese のより複雑な検索

興味があるデータ(リソース)を中心とした検索 同一種類のデータ(リソース)を中心とした検索

2015/10/27 LOD とオントロジー勉強会 15

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

DBPediaWikipedia の各記事のインフォボックスの情報を抽出して自動生成される LOD様々なデータをつなぐ LOD のハブ的な存在となっている.

http://dbpedia.org/

日本語版の DBPedia はhttp://jp.dbpedia.org/ インフォボックスの例

162015/10/27 LOD とオントロジー勉強会

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

データの例(大阪府)

2015/10/27 LOD とオントロジー勉強会 17

すべての Wikipedia の記事がhttp://ja.dbpedia.org/resource/ 大阪府のような URI でデータ化されている

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

DBpedia Japanese

2015/10/27 LOD とオントロジー勉強会 18

http://jp.dbpedia.org/SPARQL Endpoint※ここから,検索可能

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

SPARQL Endpoint の例 

2015/10/27 LOD とオントロジー勉強会 19

サンプルクエリ集http://wp.lodosaka.jp/tool/sparqlquery/

http://ja.dbpedia.org/sparql

ここに,クエリを入れる※プログラムからのクエリ +結果取得も可能

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

SPARQL の検索の基本例① 「東京都を主語( Subject )に含む」トリプルの述語 (?p )と目的語 (?o) を取得する

select distinct ?p ?owhere { <http://ja.dbpedia.org/resource/東京都> ?p ?o . }LIMIT 100 「東京都」を表す URI

DBpedia Japanesehttp://ja.dbpedia.org/sparqlでの検索結果

↑同じパターンは除外する

202015/10/27 LOD とオントロジー勉強会

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

SPARQL の検索の基本例② 「ラベルが“大阪”と一致する」トリプルの主語 (?s)select distinct ?s where {

?s <http://www.w3.org/2000/01/rdf-schema#label> " 大阪 "@ja . }LIMIT 100 リテラルの指定

(※データの言語指定も含めて一致が判定される)

DBpedia Japanesehttp://ja.dbpedia.org/sparqlでの検索結果

212015/10/27 LOD とオントロジー勉強会

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

SPARQL の検索の基本例③ 「ラベルに“大阪”を含む」トリプルの主語 (?

s)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での検索結果

222015/10/27 LOD とオントロジー勉強会

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

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 Japanesehttp://ja.dbpedia.org/sparqlでの検索結果

232015/10/27 LOD とオントロジー勉強会

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

OFFSET の利用

OFFSET を使うと,クエリ結果を n番目から取得できる

PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/>select distinct ?p ?owhere { dbpedia-ja:東京都 ?p ?o . }LIMIT 10OFFSET 10

2015/10/27 24

10番目の結果から取得

LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

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 とオントロジー勉強会

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

SPARQL 検索のハンズオン

SPARQL の検索の基本例 DBpedia Japanese の検索を例に,基本的

な SPARQL クエリについて学ぶ さまざまなクエリのパターン

大阪市の情報 LOD を用いた簡単な検索 CSV などの表形式のオープンデータから変換さ

れた RDF の検索 DBpedia Japanese のより複雑な検索

興味があるデータ(リソース)を中心とした検索 同一種類のデータ(リソース)を中心とした検索

2015/10/27 LOD とオントロジー勉強会 27

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

大阪市の施設情報・防災情報の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

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

表からへ関した RDF データの構造

表から変換した RDF の多くは,下記のようなグラフ構造になる

05/01/2023 29

ID_1

スポーツ施設

千代台公園野球場函館市千代台町 22-26

http://www.zaidan-hako date .com /okugai/baseball/

41.784926140.746367

カテゴリ

施設名(ラベル)住所

HP の URL緯度

経度

主語( Subjec

t )

述語( Propert

y ) 目的語( Object

RDF データ=「主語 -述語 - 目的語」の組み合わせで表されるグラフ構造のデータ

※目的語になるデータには,「 URI で表されるリソース」と「文字列で表されるリテラル」がある.→目的語を他のリソースとすることで,複雑なグラフも表現可能

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

表からへ関した 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

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

SPARQL 検索のハンズオン

SPARQL の検索の基本例 DBpedia Japanese の検索を例に,基本的

な SPARQL クエリについて学ぶ さまざまなクエリのパターン

大阪市の情報 LOD を用いた簡単な検索 CSV などの表形式のオープンデータから変換さ

れた RDF の検索 DBpedia Japanese のより複雑な検索

興味があるデータ(リソース)を中心とした検索 同一種類のデータ(リソース)を中心とした検索

2015/10/27 LOD とオントロジー勉強会 31

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

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 とオントロジー勉強会

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

2015/10/27 33LOD とオントロジー勉強会

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

DBpedia Japanese の検索例大阪府が持つプロパティ一覧

結果が多すぎるので,興味があるトリプルに絞りたい.

どのプロパティ(関係)で絞り込むかを考えるために,“そのデータにつながっているプロパティの一覧”を取得する

2015/10/27 34

PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/>select distinct ?p where { dbpedia-ja: 大阪府 ?p ?o.}

★ 取得する結果を, ?p のみに変える

LOD とオントロジー勉強会

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

2015/10/27 35

ここから,興味があるプロパティ

(関係)を選ぶと良い

例)隣接都道府県

LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 37LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 39LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 41

カウントした結果(数)を ?count に代

LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

SPARQL 検索のハンズオン

SPARQL の検索の基本例 DBpedia Japanese の検索を例に,基本的

な SPARQL クエリについて学ぶ さまざまなクエリのパターン

大阪市の情報 LOD を用いた簡単な検索 CSV などの表形式のオープンデータから変換さ

れた RDF の検索 DBpedia Japanese のより複雑な検索

興味があるデータ(リソース)を中心とした検索 同一種類のデータ(リソース)を中心とした検索

2015/10/27 LOD とオントロジー勉強会 43

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

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 とオントロジー勉強会

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

2015/10/27 45

ここから,興味があるタイプを選ぶと良

い例) Place

LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 47

備考:カテゴリのみの指定だと,このようなゴミが入る

LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 49LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 51LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 53LOD とオントロジー勉強会

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

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 ?prefORDER BY ?c

政治家( ?s )の数をカウント

都道府県

都道府数( ?pref )毎にグ

ループ化

都道府県( ?pref )毎の

政治家( ?s )の数( ?c )

をソートのキーに指定

ここを変えると,いろんな職業の出身県別ランキングが出来る例) Comedian

LOD とオントロジー勉強会

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

2015/10/27 55LOD とオントロジー勉強会

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

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 とオントロジー勉強会

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

2015/10/27 57LOD とオントロジー勉強会

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

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/sparqllod2015/10/27 58LOD とオントロジー勉強会

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

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

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

今後の予定 11/6 (金) ,7 (土)

神戸 IT フェスティバル: LOD のセッション有り

11/7 , 16:30 ~ 17:30   LOD ハンズオン 11 月中旬?

11/23 に向けた「モクモク会」を開催するかも?

11/23 (月) 関西オープンデータディ~検索したおしたん

ディ~ 勉強会の開催日について

平日夜  or  休日? その他のご希望は?

2015/10/27 LOD とオントロジー勉強会 60