SlideShare a Scribd company logo
1 of 61
Download to read offline
汎用Web API“SPARQL” 
でオープンデータ検索 
@uedayou 
http://uedayou.net/ 
Kobe.R #13 + Open Data 
2014.11.24
オープンデータとの関わり 
• 特定非営利活動法人リンクト・オープン・データ・ 
イニシアティブ 
• 2014年より理事 
• 関西支部支部長補佐 
• Linked Open Data チャレンジJapan 
• 2014年度より実行委員 
• オープンデータを利用するWebアプリを公開中 
• http://uedayou.net/ 
• ソースコード:https://github.com/uedayou
• 目的 
• リンクト・オープン・データ(LOD)の国内での普及促進 
• 理事長 
• 国立情報学研究所武田英明教授 
• 主な事業 
• LOD並びにオープンデータに関する調査研究事業 
• 講座やシンポジウムの開催 
• LOD並びにオープンデータへの取り組み支援 
• オープンデータへの取り組み評価
• 主な実績 
• Open Data METI(平成24〜25年度経済産業省) 
• データカタログサイトの構築 
• LODの設計 
• アイディアソン、ヴィジュアライズソンの開催 
• 都道府県・市区町村コード(平成25年度独立行政法 
人統計センター) 
• 自治体行政情報流通連携基盤実証事業(平成25年度 
総務省) 
• LOD連続セミナー(自主事業)
LOD連続セミナー(自主事業) 
• 2014年5~7月まで計6回開催 
• 資料はLODI のWebサイトで公開中 
• http://linkedopendata.jp/?cat=17
今日お話する内容 
•汎用Web API“SPARQL”とは? 
•SPARQLを使ってみよう! 
•SPARQLでアプリを作ってみよう!
汎用Web API“SPARQL” 
とは?
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/岡山県"岡山県"
SPARQLで検索できる 
オープンデータが増えています 
データ種別Web API 
Wikipedia DBPedia 
Wikipediaオントロジー 
行政データデータシティ鯖江 
都道府県・市区町村コード情報 
Open Data METI 
イベントデータヨコハマ・アート・LOD 
博物館データEuropeana 
LODAC Museum 
The British Museum 
図書館データThe British National Bibliography 
Web NDL Authorities 
地理データLinked Geo Data 
LODAC Location 
気象データ気象庁XML用API 
生物種データLODAC Species 
この他にも多くのオープンデータがSPARQLで検索できます
LODチャレンジもSPARQLで 
検索できるデータベースを公開中! 
http://lodc.jp
過去3年分+αのオープンライセンス 
のデータセットが検索可能 
http://lodc.jp/#dataset
RDFとは 
(Resource Description Framework) 
主語 
(Subject) 
目的語 
(Object) 
述語 
(Predicate) 
• データを「主語」「述語」「目的語」を1つのセット 
(トリプル、三つ組み)として記述 
例えば… 
東京都隣の県神奈川県
トリプルデータを表形式に変換 
主語述語目的語 
dbpedia: 
rdfs:label "東京都" 
東京都 
dbpedia: 
東京都 
rdfs:comment “東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
dbpedia: 
大阪府 
変換! 
id label comment 
rdfs:label “大阪府” 
dbpedia: 
大阪府 
dbpedia: 
東京都 
"東京都" “東京都(とうきょうと)は、日本 
rdfs:comment "大阪府(おおさかふ)は、近畿 
地方(関西地方)に属する日本 
の都道府県の一つ。" 
dbpedia: 
京都府 
rdfs:label “京都府” 
dbpedia: 
京都府 
rdfs:comment "京都府(きょうとふ)は、日本 
国・近畿地方の都道府県。" 
の都道府県の一つである。" 
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エンドポイントによって異なる場合があります
SPARQLを使ってみよう!
URI(IRI)とリテラル 
• URI(IRI) : <http://ja.dbpedia.org/resource/東京都> 
• 「<」「>」で挟まれた文字列 
• 人・もの・出来事などを指し示すID 
• 指定したURIを同じURIを含むデータが検索される 
• リテラル: “東京” , “100” , “2014-09-20” … 
• 「”」で挟まれた文字列 
• データそのもの(string, integer, float他) 
• 指定した文字列と同じ文字列を含むデータが検索され 
る 
• 目的語以外は指定できない
東京都 
http://ja.dbpedia.or 
g/resource/東京都 
http://ja.dbpedia.org/ 
property/隣接都道府県 
http://ja.dbpedia.or 
g/resource/山梨県 
http://ja.dbpedia.or 
g/resource/千葉県 
http://ja.dbpedia.org 
/resource/神奈川県 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://ja.dbpedia.or 
g/resource/埼玉県 
山梨県 
千葉県埼玉県 
神奈川県 
http://ja.dbpedia.org/ 
property/隣接都道府県 
http://ja.dbpedia.org/ 
property/隣接都道府県 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
東京都と隣接県 
RDFグラフ 
東京都(とうきょうと)は、日本 
の都道府県の一つである。 
http://www.w3.org/2000 
/01/rdf-schema#comment
データベース上では… 
主語述語目的語 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“千葉県” 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県”
URIとリテラル 
主語述語目的語 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“千葉県” 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県”
データベース上では… 
主語述語目的語 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“千葉県” 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県”
東京都東京都(とうきょうと)は、日本 
の都道府県の一つである。 
http://ja.dbpedia.or 
g/resource/東京都 
http://ja.dbpedia.or 
g/resource/山梨県 
http://ja.dbpedia.or 
g/resource/千葉県 
http://www.w3.org/2000 
/01/rdf-schema#comment 
http://ja.dbpedia.org 
/resource/神奈川県 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://ja.dbpedia.or 
g/resource/埼玉県 
山梨県 
千葉県埼玉県 
神奈川県 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
東京都と隣接県 
RDFグラフ 
http://ja.dbpedia.org/ 
property/隣接都道府県 
http://ja.dbpedia.org/ 
property/隣接都道府県 
http://ja.dbpedia.org/ 
property/隣接都道府県
(1) シンプルなSPARQLクエリ 
SELECT ?s ?p ?o WHERE 
{ 
?s ?p ?o. 
} 
• 全てのトリプルデータを検索
SELECT 
SELECT ?s ?p ?o WHERE 
{ 
?s ?p ?o. 
} 
• SELECT の後ろに続く変数(?で始まる文字列)に格納さ 
れたデータを表形式で取得 
• 変数名は必ずWHERE文の中で指定したものを記述す 
ること 
• 例では?s 、?p 、?o
SELECT 
SELECT * WHERE 
{ 
?s ?p ?o . 
• アスタリスク「*」を指定すると、WHERE文の中の 
全ての変数を指定したことと同じになる 
• ?s、?p、?o が抽出される 
} 
SELECT ?s ?p ?o WHERE 
{ 
?s ?p ?o. 
} 
=
DISTINCT 
SELECT DISTINCT ?s ?p ?o WHERE 
{ 
?s ?p ?o. 
} 
• 「SELECT」と変数の間に「DISTINCT」を入れると指定 
した全ての変数で重複したパターンがあった場合、 
検索結果から除外される
WHERE 
SELECT ?s ?p ?o WHERE 
{ 
?s ?p ?o . 
} 
• WHERE { } 内に検索したいトリプルパターンを書く
基本構造 
述語の 
指定 
目的語 
の指定 
SELECT ?s ?p ?o WHERE 
{ 
?s ?p ?o . 
} 
主語の 
指定 
必ずピリオド 
で終わる 
• トリプルデータを指定するために、3つの変数(?s, ?p, ?o) 
またはURI、リテラル(目的語のみ)を1セットで書く 
• 1セットの終わりには必ずピリオド「.」をつける
?s ?p ?o 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“千葉県” 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県” 
検索対象
http://uedayou.net/sparql-mashup/test-endpoint/
変数 
• 変数: ?s , ?p , ?o, ?label, ?comment … 
• 「?」で始まる文字列 
• パターンに当てはまるデータ全てが格納される 
• 検索式内の同一変数は同じデータが入るという意味に 
トリプルパターン 
?id rdfs:label ?label. 
id label 
dbpedia: 
東京都 
"東京都" 
dbpedia: 
大阪府 
“大阪府” 
dbpedia: 
京都府 
“京都府”
トリプルパターン 
?id rdfs:comment ?comment. 
id comment 
dbpedia: 
東京都 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
dbpedia: 
大阪府 
"大阪府(おおさかふ)は、近畿 
地方(関西地方)に属する日本 
の都道府県の一つ。" 
dbpedia: 
京都府 
"京都府(きょうとふ)は、日本 
国・近畿地方の都道府県。"
トリプルパターン 
同じ名前の変数(?id)は 
AND検索を意味します 
?id rdfs:label ?label. 
?id rdfs:comment ?comment.
(2) 述語が 
<http://www.w3.org/2000/01/rdf-schema#label> 
であるトリプルを取得 
主語の 
指定 
SELECT ?s ?o WHERE 
{ 
述語の 
指定 
目的語 
の指定 
?s <http://www.w3.org/2000/01/rdf-schema#label> ?o . 
} 
• <http://www.w3.org/2000/01/rdf-schema#label> はデータ 
のラベル(名前)を示す場合によく利用されています。 
• 省略形は「rdfs:label」
?s ?p ?o 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“千葉県” 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県” 
検索対象
http://uedayou.net/sparql-mashup/test-endpoint/
(3)主語に<http://ja.dbpedia.org/resource/東京都> 
が指定されているトリプルを取得 
述語の 
指定 
select distinct * where 
{ 
<http://ja.dbpedia.org/resource/東京都> ?p ?o . 
} 
主語の 
指定 
目的語 
の指定 
• <http://ja.dbpedia.org/resource/東京都>に関する 
データ(述語と目的語)全て検索
?s ?p ?o 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“千葉県” 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県” 
検索対象
http://uedayou.net/sparql-mashup/test-endpoint/
(4) 東京都に隣接する県の名前 
1. 東京都のURIから隣接する都道府県を表す 
<http://ja.dbpedia.org/property/隣接都道府県> 
を述語として持つ目的語を検索する 
2. さらに、検索された目的語を主語に指定して、そ 
のrdfs:labelを検索する 
SELECT DISTINCT ?pref ?label WHERE 
{ 
<http://ja.dbpedia.org/resource/東京都> <http://ja.dbpedia.org/property/隣接都道府県> ?pref. 
?pref <http://www.w3.org/2000/01/rdf-schema#label> ?label. 
} 
• 同じ変数(例えば?pref)を異なるトリプルパターン 
で記述すると、同じURIを持つもののみ検索される 
(AND検索)
主語述語目的語 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://ja.dbpedia.org/resource 
/東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://ja.dbpedia.org/resource 
/山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource 
/千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“千葉県” 
<http://ja.dbpedia.org/resource 
/埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource 
/神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県” 
検索対象 
?pref 
?label 
「?pref」と同じURIを 
主語に持つトリプル 
を選択
http://uedayou.net/sparql-mashup/test-endpoint/
PREFIXによるURIの省略表記 
• URI記述はPREFIXを利用することで省略表記が可能 
• クエリ先頭行に以下のような形式で追加 
• PREFIX BINDNAME : <URI> 
• 例:PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
• PREFIX を指定するとURIを省略表記に 
• <http://www.w3.org/2000/01/rdf-schema#label> 
• PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
• rdfs:label
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> 
PREFIX prop-ja: <http://ja.dbpedia.org/property/> 
主語述語目的語 
<http://ja.dbpedia.org/resource/ 
東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
"東京都" 
<http://ja.dbpedia.org/resource/ 
東京都> 
<http://www.w3.org/2000/01/ 
rdf-schema#comment> 
“東京都(とうきょうと)は、日本 
の都道府県の一つである。" 
<http://ja.dbpedia.org/resource/ 
東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource/ 
山梨県> 
<http://ja.dbpedia.org/resource/ 
東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource/ 
千葉県> 
<http://ja.dbpedia.org/resource/ 
東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource/ 
埼玉県> 
<http://ja.dbpedia.org/resource/ 
東京都> 
<http://ja.dbpedia.org/property 
/隣接都道府県> 
<http://ja.dbpedia.org/resource/ 
神奈川県> 
<http://ja.dbpedia.org/resource/ 
山梨県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“山梨県” 
<http://ja.dbpedia.org/resource/ 
千葉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
<http://ja.dbpedia.org/resource/ 
埼玉県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“埼玉県” 
<http://ja.dbpedia.org/resource/ 
神奈川県> 
<http://www.w3.org/2000/01/ 
rdf-schema#label> 
“神奈川県” 
dbpedia-jp:東京都rdfs:label dbpedia-jp:東京都rdfs:comment dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:山梨県 
dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:千葉県 
dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:埼玉県 
dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:神奈川県 
dbpedia-jp:山梨県rdfs:label dbpedia-jp:千葉県rdfs:label “千葉県” 
dbpedia-jp:埼玉県rdfs:label “埼玉県” 
dbpedia-jp:神奈川県rdfs:label “神奈川県”
rdfs:label 
http://ja.dbpedia.or 
g/resource/東京都 
東京都と隣接県 
RDFグラフ 
http://ja.dbpedia.org/ 
property/隣接都道府県 
prop-ja:隣接都道府県 
http://ja.dbpedia.or 
g/resource/山梨県 
dbpedia-ja:東京都 
prop-ja:隣接都道府県 
http://ja.dbpedia.or 
g/resource/千葉県 
東京都(とうきょうと)は、日本 
の都道府県の一つである。 
http://rdfs:www.comment 
w3.org/2000 
/01/rdf-schema#comment 
prop-ja:隣接都道府県 
http://ja.dbpedia.org 
/resource/神奈川県 
dbpedia-ja:神奈川県 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://ja.dbpedia.or 
g/resource/埼玉県 
山梨県 
千葉県埼玉県 
神奈川県 
http://ja.dbpedia.org/ 
property/隣接都道府県 
http://ja.dbpedia.org/ 
property/隣接都道府県 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
http://www.w3.org/2000 
/01/rdf-schema#label 
東京都 
dbpedia-ja:山梨県 
dbpedia-ja:千葉県dbpedia-ja:埼玉県 
rdfs:label 
rdfs:label rdfs:label 
rdfs:label
(5) 「東京都に隣接する県の名前」 
のクエリを省略して書くと… 
SELECT DISTINCT ?pref ?label WHERE 
{ 
<http://ja.dbpedia.org/resource/東京都> <http://ja.dbpedia.org/property/隣接都道府県> ?pref. 
?pref <http://www.w3.org/2000/01/rdf-schema#label> ?label. 
} 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> 
PREFIX prop-ja: <http://ja.dbpedia.org/property/> 
SELECT DISTINCT ?pref ?label WHERE 
{ 
dbpedia-ja:東京都prop-ja:隣接都道府県?pref . 
?pref rdfs:label ?label . 
}
http://uedayou.net/sparql-mashup/test-endpoint/
(6) 同一主語の省略 
• 同じ主語から異なる複数の述語を指定する場合、 
目的語のあとのピリオド「.」をセミコロン「;」にするこ 
とで次のトリプルパターンの主語を省略できます 
SELECT DISTINCT * WHERE { 
dbpedia-ja:東京都rdfs:label ?label . 
dbpedia-ja:東京都rdfs:comment ?comment . 
} 
SELECT DISTINCT * WHERE { 
dbpedia-ja:東京都rdfs:label ?label ; 
rdfs:comment ?comment . 
} 省略を終了するトリプルパターン 
の最後は必ずピリオドにすること 
主語を 
省略 
できる
http://uedayou.net/sparql-mashup/test-endpoint/
SPARQLの便利な検索機能 
検索句機能 
LIMIT 検索結果の上限を設定 
OFFSET 検索結果の取得位置を指定 
ORDER BY 検索結果の並び順を指定 
OPTIONAL OPTIONAL内は任意検索 
FILTER 検索結果のフィルタリングが可能 
REGEX 正規表現による検索が可能 
BIND 新たな変数への割り当てが可能 
CONCAT 文字列の結合が可能 
REPLACE 文字列の置き換えが可能(正規表現使用可) 
SUBSTR 文字列の切り出しが可能 
COUNT 検索件数を表示 
GROUP BY 変数のグループ化が可能 
HAVING グループ化した変数の絞込みが可能
FROM 
• トリプルデータには、その全体を現す名前(グラフ 
名)が指定されています 
• FROMを使うとグラフ名ごとに検索が行えます 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT DISTINCT ?uri ?label 
FROM 
<http://lod.sfc.keio.ac.jp/challenge2014/show_status.php?id=d001> 
WHERE 
{ 
?uri rdfs:label ?label . 
} 
<http://lod.sfc.keio.ac.jp/challenge2014/show_status.php?id=d001> 
というグラフ名がついているトリプルデータを対象とする
http://lod.sfc.keio.ac.jp/challenge2014 
/show_status.php?id=d001 
グラフ名ごと 
に検索が可能主語述語目的語 
http://lod.sfc.keio.ac.jp/challenge2013 
/show_status.php?id=d030 
dbpedia-ja:大阪府rdfs:label “大阪府" 
dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:兵庫県 
dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:和歌山県 
dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:京都府 
dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:奈良県 
dbpedia-ja:兵庫県rdfs:label “兵庫県” 
dbpedia-ja:和歌山県rdfs:label “和歌山県” 
dbpedia-ja:京都府rdfs:label “京都府” 
dbpedia-ja:奈良県rdfs:label “奈良県” 
FROM 
LODチャレンジエンドポイントでは、 
エントリーページのURLが 
グラフ名になっています
SPARQLでアプリを 
作ってみよう!
トイレ危険地帯 
• Linked Open Data チャレンジ2013 受賞作品 
• 鯖江市が公開するオープンデータのうち、公衆トイ 
レの位置を利用してトイレのない地域をWebアプリ 
でビジュアライズ 
http://y4ashida.github.io/toilet/
○○危険地帯 
• トイレ危険地帯のソースコードを修正して、SPARQL 
でさまざまなデータで空白地域をビジュアライズで 
きるようにしました 
• https://github.com/uedayou/dangerzone-sparql
大阪市版トイレ危険地帯 
http://uedayou.github.io/dangerzone-sparql/
○○危険地帯の使い方 
1. 「Download ZIP」ボタンを押してソースコード 
をダウンロード 
2. ZIPファイルを解凍 
3. config.js の書き換える 
4. Index.html をブラウザで開く 
SPARQLを書きます
config.js の書き方 
// SPARQLエンドポイントを指定 
var endpoint = "http://db.lodc.jp/sparql"; 
// SPARQLクエリを指定 
var query = (function () {/* 
SELECT DISTINCT * 
FROM <http://lod.sfc.keio.ac.jp/challenge2013/show_status.php?id=d030> 
WHERE{ 
?uri <http://lodosaka.hozo.jp/category_1> "公衆トイレ"@ja ; 
<http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?latitude ; 
<http://www.w3.org/2003/01/geo/wgs84_pos#long> ?longitude . 
} 
*/}).toString().match(/¥n([¥s¥S]*)¥n/)[1]; 
// 中心位置を指定 
var initial_latitude =34.68206400648744; 
var initial_longitude =135.49816131591797; 
// ズーム率を指定 
var initial_zoom = 11; 
SPARQL 
エンドポイント 
SPARQL 
クエリ
大阪市のいろんな危険地帯を作っ 
てみよう! 
// SPARQLエンドポイントを指定 
var endpoint = "http://db.lodc.jp/sparql"; 
// SPARQLクエリを指定 
var query = (function () {/* 
SELECT DISTINCT * 
FROM <http://lod.sfc.keio.ac.jp/challenge2013/show_status.php?id=d030> 
WHERE{ 
?uri <http://lodosaka.hozo.jp/category_1> "公衆トイレ"@ja ; 
<http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?latitude ; 
<http://www.w3.org/2003/01/geo/wgs84_pos#long> ?longitude . 
} 
LIMIT 1000 
*/}).toString().match(/¥n([¥s¥S]*)¥n/)[1]; 
// 中心位置を指定 
var initial_latitude =34.68206400648744; 
var initial_longitude =135.49816131591797; 
// ズーム率を指定 
var initial_zoom = 11; 
ここのカテゴリを変えると 
いろんな危険地帯が 
作れます 
例: 
“学校・保育所”@ja 
“名所・旧跡”@ja 
“警察・消防”@ja 
“医療・福祉”@ja 
“公園・スポーツ”@ja 
“駅・バス停”@ja 
…

More Related Content

What's hot

What's hot (20)

ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)
 
SPARQLでマッシュアップ -LOD活用のための技術紹介-
SPARQLでマッシュアップ-LOD活用のための技術紹介-SPARQLでマッシュアップ-LOD活用のための技術紹介-
SPARQLでマッシュアップ -LOD活用のための技術紹介-
 
Node-REDのworldmapの活用
Node-REDのworldmapの活用Node-REDのworldmapの活用
Node-REDのworldmapの活用
 
オープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズオープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズ
 
ナレッジグラフ/LOD利用技術の入門(前編)
ナレッジグラフ/LOD利用技術の入門(前編)ナレッジグラフ/LOD利用技術の入門(前編)
ナレッジグラフ/LOD利用技術の入門(前編)
 
Linked Open Dataとは
Linked Open DataとはLinked Open Dataとは
Linked Open Dataとは
 
Linked Open Data(LOD)の基本的な使い方
Linked Open Data(LOD)の基本的な使い方Linked Open Data(LOD)の基本的な使い方
Linked Open Data(LOD)の基本的な使い方
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
公共データをオープンデータ公開することによる効果
公共データをオープンデータ公開することによる効果公共データをオープンデータ公開することによる効果
公共データをオープンデータ公開することによる効果
 
DBpedia Japaneseとは?
DBpedia Japaneseとは?DBpedia Japaneseとは?
DBpedia Japaneseとは?
 
ナレッジグラフとオントロジー
ナレッジグラフとオントロジーナレッジグラフとオントロジー
ナレッジグラフとオントロジー
 
[part 2]ナレッジグラフ推論チャレンジ・Tech Live!
[part 2]ナレッジグラフ推論チャレンジ・Tech Live![part 2]ナレッジグラフ推論チャレンジ・Tech Live!
[part 2]ナレッジグラフ推論チャレンジ・Tech Live!
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
 
第7回 Linked Data 勉強会 @yayamamo
第7回 Linked Data 勉強会 @yayamamo第7回 Linked Data 勉強会 @yayamamo
第7回 Linked Data 勉強会 @yayamamo
 
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
 
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
 
セマンティック・ウェブのためのRdf owl入門解説.ch5
セマンティック・ウェブのためのRdf owl入門解説.ch5セマンティック・ウェブのためのRdf owl入門解説.ch5
セマンティック・ウェブのためのRdf owl入門解説.ch5
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
Linked Dataの基本原則 -LODを公開するときに知っておきたい基本技術-
Linked Dataの基本原則-LODを公開するときに知っておきたい基本技術-Linked Dataの基本原則-LODを公開するときに知っておきたい基本技術-
Linked Dataの基本原則 -LODを公開するときに知っておきたい基本技術-
 
Linked Data (再)入門
Linked Data (再)入門Linked Data (再)入門
Linked Data (再)入門
 

Viewers also liked

Linked Open Data 作成支援ツールの紹介
Linked Open Data作成支援ツールの紹介Linked Open Data作成支援ツールの紹介
Linked Open Data 作成支援ツールの紹介
uedayou
 
Sparql epcuでlodをマッシュアップ
Sparql epcuでlodをマッシュアップSparql epcuでlodをマッシュアップ
Sparql epcuでlodをマッシュアップ
Chubu University
 
Scientific And Legal Perspectives On Science Generated For Regulatory Activities
Scientific And Legal Perspectives On Science Generated For Regulatory ActivitiesScientific And Legal Perspectives On Science Generated For Regulatory Activities
Scientific And Legal Perspectives On Science Generated For Regulatory Activities
legalwebsite
 
地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー
地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー
地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー
Fuyuko Matsumura
 
The Legal Rdf Ontology A Generic Model For Legal Documents
The Legal Rdf Ontology A Generic Model For Legal DocumentsThe Legal Rdf Ontology A Generic Model For Legal Documents
The Legal Rdf Ontology A Generic Model For Legal Documents
legalwebsite
 
05 Coreonto It Device Ontology 20080623
05 Coreonto It Device Ontology 2008062305 Coreonto It Device Ontology 20080623
05 Coreonto It Device Ontology 20080623
sejin nam
 

Viewers also liked (20)

Linked Open Data 作成支援ツールの紹介
Linked Open Data作成支援ツールの紹介Linked Open Data作成支援ツールの紹介
Linked Open Data 作成支援ツールの紹介
 
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
 
サーバサイドコース Sinatra + SPARQL 編
サーバサイドコース Sinatra + SPARQL 編サーバサイドコース Sinatra + SPARQL 編
サーバサイドコース Sinatra + SPARQL 編
 
Sparql epcuでlodをマッシュアップ
Sparql epcuでlodをマッシュアップSparql epcuでlodをマッシュアップ
Sparql epcuでlodをマッシュアップ
 
SPARQL作成ツール SPARQL Creator
SPARQL作成ツール SPARQL CreatorSPARQL作成ツール SPARQL Creator
SPARQL作成ツール SPARQL Creator
 
National digitallibaryofkorea series_3_dgitalcontnetmanagementsystem
National digitallibaryofkorea series_3_dgitalcontnetmanagementsystemNational digitallibaryofkorea series_3_dgitalcontnetmanagementsystem
National digitallibaryofkorea series_3_dgitalcontnetmanagementsystem
 
Scientific And Legal Perspectives On Science Generated For Regulatory Activities
Scientific And Legal Perspectives On Science Generated For Regulatory ActivitiesScientific And Legal Perspectives On Science Generated For Regulatory Activities
Scientific And Legal Perspectives On Science Generated For Regulatory Activities
 
地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー
地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー
地域のLinked Open Dataでできること
 ー 奈良の観光情報を例に ー
 
オープンデータと Linked Open Data(LOD)@神戸R
オープンデータとLinked Open Data(LOD)@神戸RオープンデータとLinked Open Data(LOD)@神戸R
オープンデータと Linked Open Data(LOD)@神戸R
 
The Legal Rdf Ontology A Generic Model For Legal Documents
The Legal Rdf Ontology A Generic Model For Legal DocumentsThe Legal Rdf Ontology A Generic Model For Legal Documents
The Legal Rdf Ontology A Generic Model For Legal Documents
 
How to Create a Golden Ontology
How to Create a Golden OntologyHow to Create a Golden Ontology
How to Create a Golden Ontology
 
LODオープンデータのつくりかたと項目名のつけかた
LODオープンデータのつくりかたと項目名のつけかたLODオープンデータのつくりかたと項目名のつけかた
LODオープンデータのつくりかたと項目名のつけかた
 
05 Coreonto It Device Ontology 20080623
05 Coreonto It Device Ontology 2008062305 Coreonto It Device Ontology 20080623
05 Coreonto It Device Ontology 20080623
 
파이썬+데이터+구조+이해하기 20160311
파이썬+데이터+구조+이해하기 20160311파이썬+데이터+구조+이해하기 20160311
파이썬+데이터+구조+이해하기 20160311
 
인공지능시대의 한국어 정보처리
인공지능시대의 한국어 정보처리인공지능시대의 한국어 정보처리
인공지능시대의 한국어 정보처리
 
Rdf入門handout
Rdf入門handoutRdf入門handout
Rdf入門handout
 
ガバメント分野におけるLODの活用例
ガバメント分野におけるLODの活用例ガバメント分野におけるLODの活用例
ガバメント分野におけるLODの活用例
 
地理空間情報におけるLinked Open Dataの活用例
地理空間情報におけるLinked Open Dataの活用例地理空間情報におけるLinked Open Dataの活用例
地理空間情報におけるLinked Open Dataの活用例
 
Office 365 와 Office 2013으로 스마트한 팀 협업 시스템 만들기 - 2. 도구 활용 1
Office 365 와 Office 2013으로 스마트한 팀 협업 시스템 만들기 - 2. 도구 활용 1Office 365 와 Office 2013으로 스마트한 팀 협업 시스템 만들기 - 2. 도구 활용 1
Office 365 와 Office 2013으로 스마트한 팀 협업 시스템 만들기 - 2. 도구 활용 1
 
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
 

Similar to 汎用Web API“SPARQL”でオープンデータ検索

SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
yamahige
 
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
Ikki Ohmukai
 
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
Fuyuko Matsumura
 

Similar to 汎用Web API“SPARQL”でオープンデータ検索 (20)

LODを使ってみよう!
LODを使ってみよう!LODを使ってみよう!
LODを使ってみよう!
 
Web API入門
Web API入門Web API入門
Web API入門
 
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
 
大阪市オープンデータポータルAPI(SPARQL)勉強会
大阪市オープンデータポータルAPI(SPARQL)勉強会大阪市オープンデータポータルAPI(SPARQL)勉強会
大阪市オープンデータポータルAPI(SPARQL)勉強会
 
RESTful Web API Design
RESTful Web API DesignRESTful Web API Design
RESTful Web API Design
 
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
 
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
 
リンクトオープンデータ(LOD)の紹介と、その先にある参画・協働・復興促進
リンクトオープンデータ(LOD)の紹介と、その先にある参画・協働・復興促進リンクトオープンデータ(LOD)の紹介と、その先にある参画・協働・復興促進
リンクトオープンデータ(LOD)の紹介と、その先にある参画・協働・復興促進
 
Data cooperation between Ogura Hyakunin Isshu LOD and Minna de Honkoku
Data cooperation between Ogura Hyakunin Isshu LOD and Minna de Honkoku Data cooperation between Ogura Hyakunin Isshu LOD and Minna de Honkoku
Data cooperation between Ogura Hyakunin Isshu LOD and Minna de Honkoku
 
SPARQLアプリケーション開発
SPARQLアプリケーション開発SPARQLアプリケーション開発
SPARQLアプリケーション開発
 
DOI勉強会@nii
DOI勉強会@niiDOI勉強会@nii
DOI勉強会@nii
 
DBpedia Japanese
DBpedia JapaneseDBpedia Japanese
DBpedia Japanese
 
データ共有基盤の構築に向けて
データ共有基盤の構築に向けてデータ共有基盤の構築に向けて
データ共有基盤の構築に向けて
 
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
オープンデータと「つながる社会」@オープンデータ京都勉強会(2013.04.20)
 
Rから利用するオープンデータAPI
Rから利用するオープンデータAPIRから利用するオープンデータAPI
Rから利用するオープンデータAPI
 
「オープンなジオデータを考える」資料
「オープンなジオデータを考える」資料「オープンなジオデータを考える」資料
「オープンなジオデータを考える」資料
 
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
 
Ogura LOD at code4lib_20180901
Ogura LOD at code4lib_20180901Ogura LOD at code4lib_20180901
Ogura LOD at code4lib_20180901
 
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
 
オープンデータの技術よりな話
オープンデータの技術よりな話オープンデータの技術よりな話
オープンデータの技術よりな話
 

More from uedayou

関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
uedayou
 
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
uedayou
 
ミュージアムへ行こう!
ミュージアムへ行こう!ミュージアムへ行こう!
ミュージアムへ行こう!
uedayou
 

More from uedayou (15)

Linked Data API Navi(アーバンデータチャレンジ2022)
Linked Data API Navi(アーバンデータチャレンジ2022)Linked Data API Navi(アーバンデータチャレンジ2022)
Linked Data API Navi(アーバンデータチャレンジ2022)
 
Linked Data API Navi(LODチャレンジ2022)
Linked Data API Navi(LODチャレンジ2022)Linked Data API Navi(LODチャレンジ2022)
Linked Data API Navi(LODチャレンジ2022)
 
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
 
鉄道駅LOD
鉄道駅LOD鉄道駅LOD
鉄道駅LOD
 
LODを誰でも簡単に「Simple LODI」
LODを誰でも簡単に「Simple LODI」LODを誰でも簡単に「Simple LODI」
LODを誰でも簡単に「Simple LODI」
 
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
 
大阪市の警察署・交番と犯罪発生地点の重ね合わせ ~大阪市 警察署 x 犯罪発生~
大阪市の警察署・交番と犯罪発生地点の重ね合わせ~大阪市 警察署 x 犯罪発生~大阪市の警察署・交番と犯罪発生地点の重ね合わせ~大阪市 警察署 x 犯罪発生~
大阪市の警察署・交番と犯罪発生地点の重ね合わせ ~大阪市 警察署 x 犯罪発生~
 
AllegroGraphでsgvizler 0.5を使うときの注意点
AllegroGraphでsgvizler 0.5を使うときの注意点AllegroGraphでsgvizler 0.5を使うときの注意点
AllegroGraphでsgvizler 0.5を使うときの注意点
 
ソースコード公開しました! HTML5 x LOD WEBアプリ “SPARQL Timeliner”
ソースコード公開しました!HTML5 x LOD WEBアプリ“SPARQL Timeliner”ソースコード公開しました!HTML5 x LOD WEBアプリ“SPARQL Timeliner”
ソースコード公開しました! HTML5 x LOD WEBアプリ “SPARQL Timeliner”
 
LODx簡単アプリ作成 SPARQL Timeliner
LODx簡単アプリ作成 SPARQL TimelinerLODx簡単アプリ作成 SPARQL Timeliner
LODx簡単アプリ作成 SPARQL Timeliner
 
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
 
お手軽Linked Open Data可視化ツールSPARQL Timeliner
お手軽Linked Open Data可視化ツールSPARQL Timelinerお手軽Linked Open Data可視化ツールSPARQL Timeliner
お手軽Linked Open Data可視化ツールSPARQL Timeliner
 
SPARQL Timelinerの使い方
SPARQL Timelinerの使い方SPARQL Timelinerの使い方
SPARQL Timelinerの使い方
 
ミュージアムへ行こう!
ミュージアムへ行こう!ミュージアムへ行こう!
ミュージアムへ行こう!
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
 

汎用Web API“SPARQL”でオープンデータ検索

  • 1. 汎用Web API“SPARQL” でオープンデータ検索 @uedayou http://uedayou.net/ Kobe.R #13 + Open Data 2014.11.24
  • 2. オープンデータとの関わり • 特定非営利活動法人リンクト・オープン・データ・ イニシアティブ • 2014年より理事 • 関西支部支部長補佐 • Linked Open Data チャレンジJapan • 2014年度より実行委員 • オープンデータを利用するWebアプリを公開中 • http://uedayou.net/ • ソースコード:https://github.com/uedayou
  • 3. • 目的 • リンクト・オープン・データ(LOD)の国内での普及促進 • 理事長 • 国立情報学研究所武田英明教授 • 主な事業 • LOD並びにオープンデータに関する調査研究事業 • 講座やシンポジウムの開催 • LOD並びにオープンデータへの取り組み支援 • オープンデータへの取り組み評価
  • 4. • 主な実績 • Open Data METI(平成24〜25年度経済産業省) • データカタログサイトの構築 • LODの設計 • アイディアソン、ヴィジュアライズソンの開催 • 都道府県・市区町村コード(平成25年度独立行政法 人統計センター) • 自治体行政情報流通連携基盤実証事業(平成25年度 総務省) • LOD連続セミナー(自主事業)
  • 5. LOD連続セミナー(自主事業) • 2014年5~7月まで計6回開催 • 資料はLODI のWebサイトで公開中 • http://linkedopendata.jp/?cat=17
  • 6. 今日お話する内容 •汎用Web API“SPARQL”とは? •SPARQLを使ってみよう! •SPARQLでアプリを作ってみよう!
  • 8. 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/岡山県"岡山県"
  • 9. SPARQLで検索できる オープンデータが増えています データ種別Web API Wikipedia DBPedia Wikipediaオントロジー 行政データデータシティ鯖江 都道府県・市区町村コード情報 Open Data METI イベントデータヨコハマ・アート・LOD 博物館データEuropeana LODAC Museum The British Museum 図書館データThe British National Bibliography Web NDL Authorities 地理データLinked Geo Data LODAC Location 気象データ気象庁XML用API 生物種データLODAC Species この他にも多くのオープンデータがSPARQLで検索できます
  • 12.
  • 13.
  • 14. RDFとは (Resource Description Framework) 主語 (Subject) 目的語 (Object) 述語 (Predicate) • データを「主語」「述語」「目的語」を1つのセット (トリプル、三つ組み)として記述 例えば… 東京都隣の県神奈川県
  • 15. トリプルデータを表形式に変換 主語述語目的語 dbpedia: rdfs:label "東京都" 東京都 dbpedia: 東京都 rdfs:comment “東京都(とうきょうと)は、日本 の都道府県の一つである。" dbpedia: 大阪府 変換! id label comment rdfs:label “大阪府” dbpedia: 大阪府 dbpedia: 東京都 "東京都" “東京都(とうきょうと)は、日本 rdfs:comment "大阪府(おおさかふ)は、近畿 地方(関西地方)に属する日本 の都道府県の一つ。" dbpedia: 京都府 rdfs:label “京都府” dbpedia: 京都府 rdfs:comment "京都府(きょうとふ)は、日本 国・近畿地方の都道府県。" の都道府県の一つである。" dbpedia: 大阪府 “大阪府” "大阪府(おおさかふ)は、近畿 地方(関西地方)に属する日本 の都道府県の一つ。" dbpedia: 京都府 “京都府” "京都府(きょうとふ)は、日本 国・近畿地方の都道府県。" SPARQLなら簡単にできます!
  • 16. 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エンドポイントによって異なる場合があります
  • 17.
  • 19. URI(IRI)とリテラル • URI(IRI) : <http://ja.dbpedia.org/resource/東京都> • 「<」「>」で挟まれた文字列 • 人・もの・出来事などを指し示すID • 指定したURIを同じURIを含むデータが検索される • リテラル: “東京” , “100” , “2014-09-20” … • 「”」で挟まれた文字列 • データそのもの(string, integer, float他) • 指定した文字列と同じ文字列を含むデータが検索され る • 目的語以外は指定できない
  • 20. 東京都 http://ja.dbpedia.or g/resource/東京都 http://ja.dbpedia.org/ property/隣接都道府県 http://ja.dbpedia.or g/resource/山梨県 http://ja.dbpedia.or g/resource/千葉県 http://ja.dbpedia.org /resource/神奈川県 http://www.w3.org/2000 /01/rdf-schema#label http://ja.dbpedia.or g/resource/埼玉県 山梨県 千葉県埼玉県 神奈川県 http://ja.dbpedia.org/ property/隣接都道府県 http://ja.dbpedia.org/ property/隣接都道府県 http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label 東京都と隣接県 RDFグラフ 東京都(とうきょうと)は、日本 の都道府県の一つである。 http://www.w3.org/2000 /01/rdf-schema#comment
  • 21. データベース上では… 主語述語目的語 <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /山梨県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /千葉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /埼玉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /神奈川県> <http://ja.dbpedia.org/resource /山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource /千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> “千葉県” <http://ja.dbpedia.org/resource /埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource /神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県”
  • 22. URIとリテラル 主語述語目的語 <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /山梨県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /千葉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /埼玉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /神奈川県> <http://ja.dbpedia.org/resource /山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource /千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> “千葉県” <http://ja.dbpedia.org/resource /埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource /神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県”
  • 23. データベース上では… 主語述語目的語 <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /山梨県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /千葉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /埼玉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /神奈川県> <http://ja.dbpedia.org/resource /山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource /千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> “千葉県” <http://ja.dbpedia.org/resource /埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource /神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県”
  • 24. 東京都東京都(とうきょうと)は、日本 の都道府県の一つである。 http://ja.dbpedia.or g/resource/東京都 http://ja.dbpedia.or g/resource/山梨県 http://ja.dbpedia.or g/resource/千葉県 http://www.w3.org/2000 /01/rdf-schema#comment http://ja.dbpedia.org /resource/神奈川県 http://www.w3.org/2000 /01/rdf-schema#label http://ja.dbpedia.or g/resource/埼玉県 山梨県 千葉県埼玉県 神奈川県 http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label 東京都と隣接県 RDFグラフ http://ja.dbpedia.org/ property/隣接都道府県 http://ja.dbpedia.org/ property/隣接都道府県 http://ja.dbpedia.org/ property/隣接都道府県
  • 25. (1) シンプルなSPARQLクエリ SELECT ?s ?p ?o WHERE { ?s ?p ?o. } • 全てのトリプルデータを検索
  • 26. SELECT SELECT ?s ?p ?o WHERE { ?s ?p ?o. } • SELECT の後ろに続く変数(?で始まる文字列)に格納さ れたデータを表形式で取得 • 変数名は必ずWHERE文の中で指定したものを記述す ること • 例では?s 、?p 、?o
  • 27. SELECT SELECT * WHERE { ?s ?p ?o . • アスタリスク「*」を指定すると、WHERE文の中の 全ての変数を指定したことと同じになる • ?s、?p、?o が抽出される } SELECT ?s ?p ?o WHERE { ?s ?p ?o. } =
  • 28. DISTINCT SELECT DISTINCT ?s ?p ?o WHERE { ?s ?p ?o. } • 「SELECT」と変数の間に「DISTINCT」を入れると指定 した全ての変数で重複したパターンがあった場合、 検索結果から除外される
  • 29. WHERE SELECT ?s ?p ?o WHERE { ?s ?p ?o . } • WHERE { } 内に検索したいトリプルパターンを書く
  • 30. 基本構造 述語の 指定 目的語 の指定 SELECT ?s ?p ?o WHERE { ?s ?p ?o . } 主語の 指定 必ずピリオド で終わる • トリプルデータを指定するために、3つの変数(?s, ?p, ?o) またはURI、リテラル(目的語のみ)を1セットで書く • 1セットの終わりには必ずピリオド「.」をつける
  • 31. ?s ?p ?o <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /山梨県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /千葉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /埼玉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /神奈川県> <http://ja.dbpedia.org/resource /山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource /千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> “千葉県” <http://ja.dbpedia.org/resource /埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource /神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県” 検索対象
  • 33. 変数 • 変数: ?s , ?p , ?o, ?label, ?comment … • 「?」で始まる文字列 • パターンに当てはまるデータ全てが格納される • 検索式内の同一変数は同じデータが入るという意味に トリプルパターン ?id rdfs:label ?label. id label dbpedia: 東京都 "東京都" dbpedia: 大阪府 “大阪府” dbpedia: 京都府 “京都府”
  • 34. トリプルパターン ?id rdfs:comment ?comment. id comment dbpedia: 東京都 “東京都(とうきょうと)は、日本 の都道府県の一つである。" dbpedia: 大阪府 "大阪府(おおさかふ)は、近畿 地方(関西地方)に属する日本 の都道府県の一つ。" dbpedia: 京都府 "京都府(きょうとふ)は、日本 国・近畿地方の都道府県。"
  • 36. (2) 述語が <http://www.w3.org/2000/01/rdf-schema#label> であるトリプルを取得 主語の 指定 SELECT ?s ?o WHERE { 述語の 指定 目的語 の指定 ?s <http://www.w3.org/2000/01/rdf-schema#label> ?o . } • <http://www.w3.org/2000/01/rdf-schema#label> はデータ のラベル(名前)を示す場合によく利用されています。 • 省略形は「rdfs:label」
  • 37. ?s ?p ?o <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /山梨県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /千葉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /埼玉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /神奈川県> <http://ja.dbpedia.org/resource /山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource /千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> “千葉県” <http://ja.dbpedia.org/resource /埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource /神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県” 検索対象
  • 39. (3)主語に<http://ja.dbpedia.org/resource/東京都> が指定されているトリプルを取得 述語の 指定 select distinct * where { <http://ja.dbpedia.org/resource/東京都> ?p ?o . } 主語の 指定 目的語 の指定 • <http://ja.dbpedia.org/resource/東京都>に関する データ(述語と目的語)全て検索
  • 40. ?s ?p ?o <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /山梨県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /千葉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /埼玉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /神奈川県> <http://ja.dbpedia.org/resource /山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource /千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> “千葉県” <http://ja.dbpedia.org/resource /埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource /神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県” 検索対象
  • 42. (4) 東京都に隣接する県の名前 1. 東京都のURIから隣接する都道府県を表す <http://ja.dbpedia.org/property/隣接都道府県> を述語として持つ目的語を検索する 2. さらに、検索された目的語を主語に指定して、そ のrdfs:labelを検索する SELECT DISTINCT ?pref ?label WHERE { <http://ja.dbpedia.org/resource/東京都> <http://ja.dbpedia.org/property/隣接都道府県> ?pref. ?pref <http://www.w3.org/2000/01/rdf-schema#label> ?label. } • 同じ変数(例えば?pref)を異なるトリプルパターン で記述すると、同じURIを持つもののみ検索される (AND検索)
  • 43. 主語述語目的語 <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource /東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /山梨県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /千葉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /埼玉県> <http://ja.dbpedia.org/resource /東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource /神奈川県> <http://ja.dbpedia.org/resource /山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource /千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> “千葉県” <http://ja.dbpedia.org/resource /埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource /神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県” 検索対象 ?pref ?label 「?pref」と同じURIを 主語に持つトリプル を選択
  • 45. PREFIXによるURIの省略表記 • URI記述はPREFIXを利用することで省略表記が可能 • クエリ先頭行に以下のような形式で追加 • PREFIX BINDNAME : <URI> • 例:PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> • PREFIX を指定するとURIを省略表記に • <http://www.w3.org/2000/01/rdf-schema#label> • PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> • rdfs:label
  • 46. PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX prop-ja: <http://ja.dbpedia.org/property/> 主語述語目的語 <http://ja.dbpedia.org/resource/ 東京都> <http://www.w3.org/2000/01/ rdf-schema#label> "東京都" <http://ja.dbpedia.org/resource/ 東京都> <http://www.w3.org/2000/01/ rdf-schema#comment> “東京都(とうきょうと)は、日本 の都道府県の一つである。" <http://ja.dbpedia.org/resource/ 東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource/ 山梨県> <http://ja.dbpedia.org/resource/ 東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource/ 千葉県> <http://ja.dbpedia.org/resource/ 東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource/ 埼玉県> <http://ja.dbpedia.org/resource/ 東京都> <http://ja.dbpedia.org/property /隣接都道府県> <http://ja.dbpedia.org/resource/ 神奈川県> <http://ja.dbpedia.org/resource/ 山梨県> <http://www.w3.org/2000/01/ rdf-schema#label> “山梨県” <http://ja.dbpedia.org/resource/ 千葉県> <http://www.w3.org/2000/01/ rdf-schema#label> <http://ja.dbpedia.org/resource/ 埼玉県> <http://www.w3.org/2000/01/ rdf-schema#label> “埼玉県” <http://ja.dbpedia.org/resource/ 神奈川県> <http://www.w3.org/2000/01/ rdf-schema#label> “神奈川県” dbpedia-jp:東京都rdfs:label dbpedia-jp:東京都rdfs:comment dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:山梨県 dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:千葉県 dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:埼玉県 dbpedia-jp:東京都prop-ja:隣接都道府県dbpedia-jp:神奈川県 dbpedia-jp:山梨県rdfs:label dbpedia-jp:千葉県rdfs:label “千葉県” dbpedia-jp:埼玉県rdfs:label “埼玉県” dbpedia-jp:神奈川県rdfs:label “神奈川県”
  • 47. rdfs:label http://ja.dbpedia.or g/resource/東京都 東京都と隣接県 RDFグラフ http://ja.dbpedia.org/ property/隣接都道府県 prop-ja:隣接都道府県 http://ja.dbpedia.or g/resource/山梨県 dbpedia-ja:東京都 prop-ja:隣接都道府県 http://ja.dbpedia.or g/resource/千葉県 東京都(とうきょうと)は、日本 の都道府県の一つである。 http://rdfs:www.comment w3.org/2000 /01/rdf-schema#comment prop-ja:隣接都道府県 http://ja.dbpedia.org /resource/神奈川県 dbpedia-ja:神奈川県 http://www.w3.org/2000 /01/rdf-schema#label http://ja.dbpedia.or g/resource/埼玉県 山梨県 千葉県埼玉県 神奈川県 http://ja.dbpedia.org/ property/隣接都道府県 http://ja.dbpedia.org/ property/隣接都道府県 http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label http://www.w3.org/2000 /01/rdf-schema#label 東京都 dbpedia-ja:山梨県 dbpedia-ja:千葉県dbpedia-ja:埼玉県 rdfs:label rdfs:label rdfs:label rdfs:label
  • 48. (5) 「東京都に隣接する県の名前」 のクエリを省略して書くと… SELECT DISTINCT ?pref ?label WHERE { <http://ja.dbpedia.org/resource/東京都> <http://ja.dbpedia.org/property/隣接都道府県> ?pref. ?pref <http://www.w3.org/2000/01/rdf-schema#label> ?label. } PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dbpedia-ja: <http://ja.dbpedia.org/resource/> PREFIX prop-ja: <http://ja.dbpedia.org/property/> SELECT DISTINCT ?pref ?label WHERE { dbpedia-ja:東京都prop-ja:隣接都道府県?pref . ?pref rdfs:label ?label . }
  • 50. (6) 同一主語の省略 • 同じ主語から異なる複数の述語を指定する場合、 目的語のあとのピリオド「.」をセミコロン「;」にするこ とで次のトリプルパターンの主語を省略できます SELECT DISTINCT * WHERE { dbpedia-ja:東京都rdfs:label ?label . dbpedia-ja:東京都rdfs:comment ?comment . } SELECT DISTINCT * WHERE { dbpedia-ja:東京都rdfs:label ?label ; rdfs:comment ?comment . } 省略を終了するトリプルパターン の最後は必ずピリオドにすること 主語を 省略 できる
  • 52. SPARQLの便利な検索機能 検索句機能 LIMIT 検索結果の上限を設定 OFFSET 検索結果の取得位置を指定 ORDER BY 検索結果の並び順を指定 OPTIONAL OPTIONAL内は任意検索 FILTER 検索結果のフィルタリングが可能 REGEX 正規表現による検索が可能 BIND 新たな変数への割り当てが可能 CONCAT 文字列の結合が可能 REPLACE 文字列の置き換えが可能(正規表現使用可) SUBSTR 文字列の切り出しが可能 COUNT 検索件数を表示 GROUP BY 変数のグループ化が可能 HAVING グループ化した変数の絞込みが可能
  • 53. FROM • トリプルデータには、その全体を現す名前(グラフ 名)が指定されています • FROMを使うとグラフ名ごとに検索が行えます PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT DISTINCT ?uri ?label FROM <http://lod.sfc.keio.ac.jp/challenge2014/show_status.php?id=d001> WHERE { ?uri rdfs:label ?label . } <http://lod.sfc.keio.ac.jp/challenge2014/show_status.php?id=d001> というグラフ名がついているトリプルデータを対象とする
  • 54. http://lod.sfc.keio.ac.jp/challenge2014 /show_status.php?id=d001 グラフ名ごと に検索が可能主語述語目的語 http://lod.sfc.keio.ac.jp/challenge2013 /show_status.php?id=d030 dbpedia-ja:大阪府rdfs:label “大阪府" dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:兵庫県 dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:和歌山県 dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:京都府 dbpedia-ja:大阪府prop-ja:隣接都道府県dbpedia-ja:奈良県 dbpedia-ja:兵庫県rdfs:label “兵庫県” dbpedia-ja:和歌山県rdfs:label “和歌山県” dbpedia-ja:京都府rdfs:label “京都府” dbpedia-ja:奈良県rdfs:label “奈良県” FROM LODチャレンジエンドポイントでは、 エントリーページのURLが グラフ名になっています
  • 56. トイレ危険地帯 • Linked Open Data チャレンジ2013 受賞作品 • 鯖江市が公開するオープンデータのうち、公衆トイ レの位置を利用してトイレのない地域をWebアプリ でビジュアライズ http://y4ashida.github.io/toilet/
  • 57. ○○危険地帯 • トイレ危険地帯のソースコードを修正して、SPARQL でさまざまなデータで空白地域をビジュアライズで きるようにしました • https://github.com/uedayou/dangerzone-sparql
  • 59. ○○危険地帯の使い方 1. 「Download ZIP」ボタンを押してソースコード をダウンロード 2. ZIPファイルを解凍 3. config.js の書き換える 4. Index.html をブラウザで開く SPARQLを書きます
  • 60. config.js の書き方 // SPARQLエンドポイントを指定 var endpoint = "http://db.lodc.jp/sparql"; // SPARQLクエリを指定 var query = (function () {/* SELECT DISTINCT * FROM <http://lod.sfc.keio.ac.jp/challenge2013/show_status.php?id=d030> WHERE{ ?uri <http://lodosaka.hozo.jp/category_1> "公衆トイレ"@ja ; <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?latitude ; <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?longitude . } */}).toString().match(/¥n([¥s¥S]*)¥n/)[1]; // 中心位置を指定 var initial_latitude =34.68206400648744; var initial_longitude =135.49816131591797; // ズーム率を指定 var initial_zoom = 11; SPARQL エンドポイント SPARQL クエリ
  • 61. 大阪市のいろんな危険地帯を作っ てみよう! // SPARQLエンドポイントを指定 var endpoint = "http://db.lodc.jp/sparql"; // SPARQLクエリを指定 var query = (function () {/* SELECT DISTINCT * FROM <http://lod.sfc.keio.ac.jp/challenge2013/show_status.php?id=d030> WHERE{ ?uri <http://lodosaka.hozo.jp/category_1> "公衆トイレ"@ja ; <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?latitude ; <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?longitude . } LIMIT 1000 */}).toString().match(/¥n([¥s¥S]*)¥n/)[1]; // 中心位置を指定 var initial_latitude =34.68206400648744; var initial_longitude =135.49816131591797; // ズーム率を指定 var initial_zoom = 11; ここのカテゴリを変えると いろんな危険地帯が 作れます 例: “学校・保育所”@ja “名所・旧跡”@ja “警察・消防”@ja “医療・福祉”@ja “公園・スポーツ”@ja “駅・バス停”@ja …