Weitere ähnliche Inhalte Ähnlich wie Linked Open Data技術 (20) Linked Open Data技術1. 公立はこだて未来大学
オープンデータの最新動向
第二部 オープンデータと技術と事例
~実機による紹介~
1
Future
University
Hakodate
山口 琢
Taku
Yamaguchi,
Future
University
Hakodate
2014/07/12
最初の掲載:
v1.0
2014-‐07-‐12
講演時:
v1.1
2014-‐07-‐12
改訂:
v1.2
2014-‐07-‐13
2. 自己紹介
n 氏名 山口琢
p hCp://www.slideshare.net/yamahige
p 「LODチャレンジ2014」実行委員(見習い)
p 公立はこだて未来大学 システム情報科学研究科 研究生
n 経歴
p 1987年4月〜2004年6月
(株)日立製作所
n ソフトウェア事業部など、ミドルウェア開発、テクニカルマーケティング
p 2004年7月〜2011年1月
(株)ジャストシステム
n テクニカルマーケティング、研究開発
p 2011年4月〜
公立はこだて未来大学 博士(後期)課程
n 〜2014年3月:
研究指導満了退学
n 2014年4月〜:
研究生(在学中)
n 研究内容
p 分野:
文書処理、テキスト・エディタ、EDUPUB
p アプローチ1:
視点の可視化によるコンテンツ作成・評価支援
p アプローチ2:
編集操作(行動)の計測と分析
Taku
Yamaguchi,
Future
University
Hakodate
2
2014/07/12
3. Linked
Open
Data
n Open
p いますぐ触ってみることができる
n Data
p プログラムから扱うことができる
⇒
やりましょう
Taku
Yamaguchi,
Future
University
Hakodate
3
2014/07/12
4. アジェンダ
n 触ってみよう:
Linked
Open
Dataの事例
p LODをどうやって使うのか
p …それを通して、クールなデータセットとは
n トピック
データの識別子、参照解決可能、content
negoSaSon、パーセントエンコーディング(URLエン
コーディング)、IRI、JSON、ユニコード、バックスラッ
シュエスケープ、SPARQL
Taku
Yamaguchi,
Future
University
Hakodate
4
2014/07/12
5. あるとよいもの
n ネットにつながるPC
n Webブラウザ:
Firefox、Chrome、IE、Opera、…
p ブラウザの要求・応答をモニターするツール
n Webプロトコルを試せるツール:
curl
n テキスト編集ができるエディター
p テキストの文字コードとエンコーディング(符号化方式)が分かるもの
n 文字のエンコード/デコードツール
p パーセントエンコーディング(URLエンコード)
p Unicode文字のバックスラッシュエスケープ
n JSONを整形(preCy
print)するツール
2014/07/12
5
Taku
Yamaguchi,
Future
University
Hakodate
8. 文書のWeb
Taku
Yamaguchi,
Future
University
Hakodate
8
HTML
HTML
HTML
リンク
リンク
リンク
hCp://www.fun.ac.jp/
hCp://www.fun.ac.jp/
research/faculty_members/
michikooba/
hCp://www.fun.ac.jp/
research/faculty_members/
2014/07/12
Copyright
©2014,
FUTURE
UNIVERSITY
HAKODATE.
9. [再掲]LODによるデータのWeb
n データ(RDF)+リンク[LOD:
Linked
Open
Data]
p 異なるデータ源のデータが相互に結びつく
n 機械が読むことを想定
p 複雑なデータ空間の中で動作させるアプリケーションを容
易に構築することができる
9
データ
データ
データ
データ
データ
データ
データ
Taku
Yamaguchi,
Future
University
Hakodate
RDF((Resource
DescripSon
Framework))
2014/07/12
10. LODによるデータのWeb
Taku
Yamaguchi,
Future
University
Hakodate
10
データ
データ
データ
データ
データ
データ
データ
RDF((Resource
DescripSon
Framework))
hCp://ja.dbpedia.org/resource/函館市
2014/07/12
スタート:
最初のデータ
11. データのWeb
Taku
Yamaguchi,
Future
University
Hakodate
12
データ
データ
文書
DBpedia
Japanese
hCp://ja.dbpedia.org/resource/函館市
hCp://ja.dbpedia.org/resource/北斗市
函館市
hCp://www.city.hakodate.hokkaido.jp/
2014/07/12
函館市
13. あれ?
#1
n データの名前って、そのまま
ブラウザのアドレス欄に入力できるの?
hCp://ja.dbpedia.org/resource/函館市
⇒
URI:
データの識別子
⇒
hCp://
〜:
参照解決可能(dereferenceable)
n その操作の仕方って、それじゃぁ文書では?
というか、アドレスが変わってないか?
hCp://ja.dbpedia.org/page/函館市
⇒
Content
negoSaSon
Taku
Yamaguchi,
Future
University
Hakodate
14
2014/07/12
14. URI、hCp://〜
n URI:
データの識別子
n hCp://
〜:
参照解決可能(dereferenceable)
⇒
ティム・バーナーズ=リーによるLinked
Data4つの原則
1. Use
URIs
as
names
for
things
2. Use
HTTP
URIs
so
that
people
can
look
up
those
names.
3. When
someone
looks
up
a
URI,
provide
useful
informaSon,
using
the
standards
(RDF*,
SPARQL)
4. Include
links
to
other
URIs.
so
that
they
can
discover
more
things.
hCp://www.w3.org/DesignIssues/LinkedData.html
Taku
Yamaguchi,
Future
University
Hakodate
15
2014/07/12
15. Content
negoSaSon
#1
Google
Chrome
/
Developer
Tools
/
Network
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
16
データ
データ
DBpedia
Japanese
hCp://ja.dbpedia.org/resource/函館市
hCp://ja.dbpedia.org/page/函館市
16. Content
negoSaSon
#2
n 「HTMLと画像を受け付け(accept)ます」とブラウザが言ったら…
n 「では、あちらを見なさい」と別のURIをサーバに案内された
Taku
Yamaguchi,
Future
University
Hakodate
17
Accept:
text/html,applicaSon/xhtml+xml,…
2014/07/12
17. Content
negoSaSon
#3
n 案内された先のHTMLページを見ている
Taku
Yamaguchi,
Future
University
Hakodate
18
Content-‐Type:
text/html;
charset=UTF-‐8
2014/07/12
19. いやいや、「最初から」データが欲しい…
$
curl
-‐iLH
"Accept:
applicaSon/json"
"hCp://ja.dbpedia.org/resource/%E5%87%BD%E9%A4%A8%E5%B8%82"
HTTP/1.1
303
See
Other
Vary:
negoSate,accept
Content-‐Type:
applicaSon/json;
qs=0.6
LocaSon:
hCp://ja.dbpedia.org/data/%E5%87%BD%E9%A4%A8%E5%B8%82.json
Content-‐Length:
0
HTTP/1.1
200
OK
Server:
Virtuoso/07.00.3203
(Linux)
x86_64-‐unknown-‐linux-‐gnu
Content-‐Type:
applicaSon/json
Content-‐Length:
517744
{
"hCp://ja.dbpedia.org/resource/u5317u6D77u9053"
:
{
"hCp://dbpedia.org/ontology/wikiPageWikiLink"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/resource/u51FDu9928u5E02"
}
]
}
,
"hCp://ja.dbpedia.org/resource/u65E5u672Cu30D7u30EDu91CEu7403"
:
{
"hCp://dbpedia.org/ontology/wikiPageWikiLink"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/resource/u51FDu9928u5E02"
}
]
}
,
"hCp://ja.dbpedia.org/resource/u65E5u672Cu306Eu5730u7406"
:
{
"hCp://dbpedia.org/ontology/wikiPageWikiLink"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/resource/u51FDu9928u5E02"
}
]
}
,
…
Taku
Yamaguchi,
Future
University
Hakodate
20
2014/07/12
23. IRI:
国際化したURI
n URL:
Uniform
Resource
Locator
古い用語、表現
n URI:
Uniform
Resource
IdenSfier
ASCIIのサブセット
hCp://ja.wikipedia.org/wiki/%E5%87%BD
%E9%A4%A8%E5%B8%82
n IRI:
InternaSonalized
Resouce
IdenSfier
多言語対応、日本語などを使うことができる
LOD関連の標準はIRIを使う
hCp://ja.dbpedia.org/resource/函館市
Taku
Yamaguchi,
Future
University
Hakodate
24
2014/07/12
24. cURLでJSON形式をゲット
$
curl
-‐iLH
"Accept:
applicaSon/json"
"hCp://ja.dbpedia.org/resource/函館市"
HTTP/1.1
303
See
Other
Content-‐Type:
applicaSon/json;
qs=0.6
LocaSon:
hCp://ja.dbpedia.org/data/函館市.json
Content-‐Length:
0
HTTP/1.1
200
OK
Content-‐Type:
applicaSon/json
{
"hCp://ja.dbpedia.org/resource/u5317u6D77u9053"
:
{
"hCp://dbpedia.org/
ontology/wikiPageWikiLink"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/
resource/u51FDu9928u5E02"
}
]
}
,
…
Taku
Yamaguchi,
Future
University
Hakodate
25
2014/07/12
25. cURLでHTML形式を…
$
curl
-‐iLH
"Accept:
text/html"
"hCp://ja.dbpedia.org/resource/函館市"
HTTP/1.1
303
See
Other
Content-‐Type:
text/html;
charset=UTF-‐8
LocaSon:
hCp://ja.dbpedia.org/page/函館市
HTTP/1.1
404
Not
found
…
Taku
Yamaguchi,
Future
University
Hakodate
26
2014/07/12
26. cURLでHTML形式を…
$
curl
-‐iLH
"Accept:
text/html"
"hCp://ja.dbpedia.org/resource/%E5%87%BD
%E9%A4%A8%E5%B8%82"
HTTP/1.1
303
See
Other
Content-‐Type:
text/html;
charset=UTF-‐8
LocaSon:
hCp://ja.dbpedia.org/page/%E5%87%BD%E9%A4%A8%E5%B8%82
HTTP/1.1
200
OK
Content-‐Type:
text/html;
charset=UTF-‐8
<!DOCTYPE
html>
<html
xmlns="hCp://www.w3.org/1999/xhtml">
<head
profile="hCp://www.w3.org/1999/xhtml/vocab">
<meta
charset="u{-‐8"
/>
<Stle>About:
函館市</Stle>
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
27
28. JSON形式
{
"hCp://ja.dbpedia.org/resource/u5317u6D77u9053"
:
{
"hCp://dbpedia.org/ontology/wikiPageWikiLink"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/resource/u51FD
u9928u5E02"
}
]
}
,
"hCp://ja.dbpedia.org/resource/u65E5u672Cu30D7u30ED
u91CEu7403"
:
{
"hCp://dbpedia.org/ontology/
wikiPageWikiLink"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://
ja.dbpedia.org/resource/u51FDu9928u5E02"
}
]
}
,
"hCp://ja.dbpedia.org/resource/u65E5u672Cu306E
u5730u7406"
:
{
"hCp://dbpedia.org/ontology/
wikiPageWikiLink"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://
ja.dbpedia.org/resource/u51FDu9928u5E02"
}
]
}
,
…
Taku
Yamaguchi,
Future
University
Hakodate
29
2014/07/12
30. バックスラッシュエスケープを使ったユニコード文字
A
string
is
a
sequence
of
zero
or
more
Unicode
characters,
wrapped
in
double
quotes,
using
backslash
escapes.
A
character
is
represented
as
a
single
character
string.
A
string
is
very
much
like
a
C
or
Java
string.
string
in
JSON
hCp://json.org/
Taku
Yamaguchi,
Future
University
Hakodate
31
2014/07/12
31. LOD:
イラスト表現
Taku
Yamaguchi,
Future
University
Hakodate
32
データ
データ
DBpedia
Japanese
hCp://ja.dbpedia.org/resource/北斗市
隣の自治体
hCp://ja.dbpedia.org/resource/函館市
2014/07/12
33. LOD:
イラスト表現
Taku
Yamaguchi,
Future
University
Hakodate
34
函館市
隣の自治体
北斗市
hCp://ja.dbpedia.org/resource/函館市
hCp://ja.dbpedia.org/resource/北斗市
?
2014/07/12
34. JSONでシリアライズ
GET
hCp://ja.dbpedia.org/resource/函館市
Accept:
applicaSon/json
↓
…
,
"hCp://dbpedia.org/ontology/
neighboringMunicipality"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/
resource/u5317u6597u5E02"
}
,
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/
resource/u9752u68EEu770C"
}
]
Taku
Yamaguchi,
Future
University
Hakodate
35
北斗市
2014/07/12
35. JSONでシリアライズ
GET
hCp://ja.dbpedia.org/resource/函館市
Accept:
applicaSon/json
↓
…
,
"hCp://dbpedia.org/ontology/
neighboringMunicipality"
:
[
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/
resource/u5317u6597u5E02"
}
,
{
"type"
:
"uri",
"value"
:
"hCp://ja.dbpedia.org/
resource/u9752u68EEu770C"
}
]
Taku
Yamaguchi,
Future
University
Hakodate
36
データ
データ
データ
北斗市
青森県
隣の自治体
2014/07/12
36. イラスト表現
Taku
Yamaguchi,
Future
University
Hakodate
37
函館市
隣の自治体
北斗市
hCp://ja.dbpedia.org/resource/函館市
hCp://ja.dbpedia.org/resource/北斗市
hCp://dbpedia.org/ontology/neighboringMunicipality
青森県
hCp://ja.dbpedia.org/resource/青森県
隣の自治体
hCp://dbpedia.org/ontology/neighboringMunicipality
2014/07/12
38. 語彙
n 語彙はプロパティの集合
n データセットの仕様を調べる
例)
ヨコハマ・アート・LOD
>
各情報に含まれるメタ情報については、それぞれ
のスキーマページに詳しく記載しています。
hCp://fp.ya•p.org/yokohama_art_lod
n 既存の語彙を調べる
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
39
42. エンドポイント
問合せ窓口 =
エンドポイント
1. DBpedia
Japanese
hCp://ja.dbpedia.org/sparql
DBpedia
Japanese
by
DBpedia
Community
2. 函館観光情報
hCp://210.226.0.93/sparql/
函館まちあるきマップ
by
函館市;
はこだてフィルム
コミッション
by
函館市;
函館近代化遺産ポータルサ
イト
by
函館高専、ノース技研
運営
by
はこだて未来大学 高度ICT演習観光系プ
ロジェクト
2013-‐04-‐25
43
45. SPARQLで問い合わせ
1. 「Query
Text」に、次のように入力
select
disSnct
*
where
{
<hCp://ja.dbpedia.org/resource/函館市>
<hCp://dbpedia.org/ontology/neighboringMunicipality>
?o
.
}
2. 「Run
Query」をクリック
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
46
48. 文法
select
disSnct
*
where
{
<hCp://ja.dbpedia.org/resource/函館市>
<hCp://dbpedia.org/ontology/neighboringMunicipality>
?o
.
}
2013-‐04-‐25
49
WHERE
{
…
}
…というパターンに当てはまる
主語、 述語、目的語の組を選んで
*
全ての変数
(?o、…他にあれば)を
SELECT
取り出しなさい
主語
述語
目的語
文末、組の区切り
50. 函館市の隣は?
Taku
Yamaguchi,
Future
University
Hakodate
51
函館市
hCp://ja.dbpedia.org/resource/函館市
?o
隣の自治体
hCp://dbpedia.org/ontology/neighboringMunicipality
2014/07/12
51. 問い合わせ結果
{
"head":
{
"link":
[],
"vars":
["o"]
},
"results":
{
"disSnct":
false,
"ordered":
true,
"bindings":
[
{
"o":
{
"type":
"uri",
"value":
"hCp://ja.dbpedia.org/resource/u5317u6597u5E02"
}},
{
"o":
{
"type":
"uri",
"value":
"hCp://ja.dbpedia.org/resource/u9752u68EEu770C"
}}
]
}
}
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
52
52. 問合せの変数名
受け取るプログラムの側でオブジェクトのプロパティ名にしたい名前を、
クエリー中の変数名にすればよい。
n Query:
select
disSnct
*
where
{
<hCp://ja.dbpedia.org/resource/函館市>
<hCp://dbpedia.org/ontology/neighboringMunicipality>
?o
.
}
n Result:
{
"head":
{
"link":
[],
"vars":
["o"]
},
"results":
{
"disSnct":
false,
"ordered":
true,
"bindings":
[
{
"o":
{
"type":
"uri",
"value":
"hCp://ja.dbpedia.org/resource/u5317u6597u5E02"
}},
{
"o":
{
"type":
"uri",
"value":
"hCp://ja.dbpedia.org/resource/u9752u68EE
u770C"
}}
]
}
}
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
53
56. 北斗市の隣の隣
(再びDBpedia
Japanese)
PREFIX
dbpedia-‐owl:
<hCp://dbpedia.org/ontology/>
select
disSnct
*
where
{
<hCp://ja.dbpedia.org/resource/北斗市>
dbpedia-‐owl:neighboringMunicipality
?o
.
?o
dbpedia-‐owl:neighboringMunicipality
?oo.
}
?oは、最初の文では目的語、次の文では主語。
プログラムでリンクをたどる。
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
57
57. 北斗市の隣の隣は?
Taku
Yamaguchi,
Future
University
Hakodate
58
?o
隣の自治体
北斗市
hCp://ja.dbpedia.org/resource/北斗市
hCp://dbpedia.org/ontology/neighboringMunicipality
?oo
隣の自治体
hCp://dbpedia.org/ontology/neighboringMunicipality
2014/07/12
59. 結果のアドレスバーを見てみる
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
60
hCp://ja.dbpedia.org/sparql?default-‐graph-‐uri=hCp%3A
%2F%2Fja.dbpedia.org&query=select+disSnct+*+where+
%7B%0D%0A++++%3ChCp%3A%2F%2Fja.dbpedia.org
%2Fresource%2F%E5%87%BD
%E9%A4%A8%E5%B8%82%3E%0D%0A++++%3ChCp%3A
%2F%2Fdbpedia.org%2Fontology
%2FneighboringMunicipality%3E%0D%0A++++%3Fo+.%0D
%0A%7D&format=text%2Fhtml&Smeout=0&debug=on
62. n プログラムで、
このquery
stringを作って、
HTTP
GETすればよい
n リソースはIRI、
それをパーセントエンコードしてある
p 文字を見たら、誰がいつ変換…(略
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
63
65. DBpedia
Japaneseからゲット
{
?s
geo:lat
?lat;
geo:long
?long
.
}
UNION
{
?s
<hCp://dbpedia.org/ontology/wikiPageExternalLink>
?wcz
.
FILTER
regex(
?wcz,
"hCp://watchizu.gsi.go.jp/watchizu.html",
"i"
)
}
さまざまな段階で工夫して、まずは動かす、興味をひく。
全体として敷居を低くすることが、大事だと思います。
(文書の)Webの発展と同様。
2014/07/12
Taku
Yamaguchi,
Future
University
Hakodate
66
緯度
経度
地図へのリンクに
緯度・経度が
埋まっていることも