Weitere ähnliche Inhalte Ähnlich wie SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回 (20) SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回1. SPARQLから入門する
Linked
Open
Data(LOD)ハンズオン
-‐
Pinpoint
ReminderによるLODアプリ構築
-‐
山口琢(D3)@高橋修研究室
はこだて未来大
v1.0、2013-‐04-‐25
2013-‐04-‐25
1
3. Agenda
1. イントロ
-‐
Linked
Open
Data(LOD)とは
-‐
2. SPARQLでLODを使ってみよう
←
今日は、ここまでは是非
3. Pinpoint
Reminder
-‐
LODアプリの例
-‐
4. Pinpoint
Reminderのハブを作ってみよう
次回、次々回、…があれば:
– 「はこだてMap+」の仕組み・設計
by
観光系の誰か
– 発表(ライトニングトーク、3分/人)
by
みんな
• 20人
x
3分/人
=
1時間!
– 適用分野の観点で、個別・詳細トピック
• 開発ドキュメント管理:
要求
-‐
仕様
-‐
…
• 地理情報:
地理的近さ、Geohash、…
– 開発の観点で、個別・詳細トピック
パーセントエンコーディング、IRI、処理方式・性能、…
2013-‐04-‐25
3
4. 用意するもの
• ネットにつながるPC
• Webブラウザー:
Firefox、Chrome、IE、Opera、…
– Chromeもあればベター、Pinpoint
Reminder拡張機能をイ
ンストールできるので。
• 今日は、そこまでいかない…
…未来大ではIEユーザーをあまり見かけないが、それは特
殊な状況だということを覚えておこう。
• テキスト編集ができるエディター
– 一括置換、エンコーディング、文字コードを扱えるとベター
2013-‐04-‐25
4
6. パーセントエンコーディング
やってみよう
• パーセントエンコード/デコードできるツール
– Webサイト
– そのツールページのエンコーディングは?
• Unicodeになってるツールを選ぶ。Shi^-‐JISはNG。
• Wikipediaで「函館」の項目を表示
– ブラウザのURL欄は、こう見える
hp://ja.wikipedia.org/wiki/函館
– でも、コピーしてテキストエディターに貼り付けると…
hp://ja.wikipedia.org/wiki/%E5%87%BD%E9%A4%A8
– 「%E5%87%BD%E9%A4%A8」は、「函館」をパーセントエンコード
したもの
• ツールでデコードして、「函館」になることを確かめよう
2013-‐04-‐25
6
8. Linked
Open
Data(LOD)
あるデータがあります。それは…
• オープンデータ(Open
Data)だ。オープンデータとは?
• インターフェースがWebに公開されている。
– インターフェース
=
URL
+
問合せ(クエリ)言語。データを取得するには、URLに問い合わせる。
– URL:
エンドポイント
– 問合せ内容を記述する言語:
SPARQL(スパークル)
• 「リンク」が設定されている(Linked)。
– 「リンクが設定されてるって、なにそれ?」
– それを分かることがこのゼミの目標。
ハンズオン:
百聞は一見にしかず
– SPARQLを使ってエンドポイントからLODにアクセス
– 「リンク」を体感
– 開発者向け、not
エンドユーザー向け
2013-‐04-‐25
8
9. 参考資料
セマンティック
HTML/XHTML
– 神崎正英さん
– 毎日コミュニケーションズ
– 未来大の情報ライブラリーにも
ある。
– SPARQLは、後半のp.346から。
「いきなり、ここから入ろう」とい
うのが、今回のハンズオン。
2013-‐04-‐25
9
11. エンドポイント
1. DBpedia
Japanese
hp://ja.dbpedia.org/sparql
DBpedia
Japanese
by
DBpedia
Community
2. 函館○○情報
hp://210.226.0.93/sparql/
函館まちあるきマップ
by
函館市;
はこだてフィルムコミッション
by
函館市;
函館近代化遺産ポータルサイト
by
函館高専、ノース技
研
運営
by
はこだて未来大学 高度ICT演習観光系プロジェクト?
3. DBpedia
hp://dbpedia.org/sparql
2013-‐04-‐25
11
13. 函館○○情報
たどり着いてみよう
1. LODチャレンジ2012
hp://lod.sfc.keio.ac.jp/challenge2012/index.html
2. エントリー
/
データセット部門
3. d055
函館まちあるきルート情報
4. データセットのURL
hp://210.226.0.93/status/
5. Execute
a
test
query
hp://210.226.0.93/test/
2013-‐04-‐25
13
14. SPARQLで書かれた問合せ(クエリ)
• SPARQLで書かれた問合せ
PREFIX
rdf:
<hp://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#>
PREFIX
rdfs:
<hp://www.w3.org/2000/01/rdf-‐schema#>
SELECT
*
WHERE
{
?s
?p
?o
.
}
LIMIT
10
• 実行「Execute」してみる…!
– ブラウザに表示される
– or
ダウンロードが始まる
←
テキストエディターで開く
2013-‐04-‐25
14
15. 問合せ結果
<?xml
version="1.0"?>
<sparql
xmlns="hp://www.w3.org/2005/sparql-‐results#">
<head>
<variable
name="s"/>
<variable
name="p"/>
<variable
name="o"/>
</head>
<results>
<result>
<binding
name="s"><uri>urn:日本最古のコンクリート電柱</uri></binding>
<binding
name="p"><uri>hp://purl.org/dc/elements/1.1/date</uri></binding>
<binding
name="o"><literal>1923</literal></binding>
</result>
<result>
<binding
name="s"><uri>urn:旧戸井線</uri></binding>
<binding
name="p"><uri>hp://schema.org/image</uri></binding>
<binding
name="o"><literal>hp://u.jimdo.com/www19/o/s8a796cc0310d2bed/img/
i9a4c6cff5aae4279/1338284028/thumb/image.jpg</literal></binding>
</result>
…
</results>
</sparql>
2013-‐04-‐25
15
17. ?s
?p
?o
.
• 変数
• s、p、oの文字列は、何でもよい。順番・位置に意味がある。
2013-‐04-‐25
17
19. 結果
<?xml
version="1.0"?>
<sparql
xmlns="hp://www.w3.org/2005/sparql-‐results#">
<head>
<variable
name="s"/>
<variable
name="p"/>
<variable
name="A"/>
</head>
<results>
<result>
<binding
name="s"><uri>urn:日本最古のコンクリート電柱</uri></binding>
<binding
name="p"><uri>hp://purl.org/dc/elements/1.1/date</uri></binding>
<binding
name="A"><literal>1923</literal></binding>
</result>
<result>
<binding
name="s"><uri>urn:旧戸井線</uri></binding>
<binding
name="p"><uri>hp://schema.org/image</uri></binding>
<binding
name="A"><literal>hp://u.jimdo.com/www19/o/s8a796cc0310d2bed/img/
i9a4c6cff5aae4279/1338284028/thumb/image.jpg</literal></binding>
</result>
…
</results>
</sparql>
2013-‐04-‐25
19
28. 問合せ例
#1
1.
とにかく情報をたくさん…
• クエリ
PREFIX
rdf:
<hp://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#>
PREFIX
rdfs:
<hp://www.w3.org/2000/01/rdf-‐schema#>
SELECT
*
WHERE
{
?s
?p
?o
.
}
LIMIT
500
2013-‐04-‐25
28
29. 問合せ例
#1
2.
「恵山山頂」の情報を…
…
<result>
<binding
name="s"><uri>urn:新島橋_13</uri></binding>
<binding
name="p"><uri>hp://www.w3.org/2003/01/geo/wgs84_pos#lat</uri></binding>
<binding
name="o"><literal>41.769647</literal></binding>
</result>
<result>
<binding
name="s"><uri>urn:恵山山頂_20</uri></binding>
<binding
name="p"><uri>hp://www.w3.org/2003/01/geo/wgs84_pos#lat</uri></binding>
<binding
name="o"><literal>41.810507498395</literal></binding>
</result>
<result>
<binding
name="s"><uri>urn:函館漁港船入澗防波堤</uri></binding>
<binding
name="p"><uri>hp://www.w3.org/2003/01/geo/wgs84_pos#lat</uri></binding>
<binding
name="o"><literal>41.7732320517</literal></binding>
</result>
…
2013-‐04-‐25
29
30. 問合せ例
#1
3.
「恵山山頂」緯度を…
「hp://www.w3.org/2003/01/geo/wgs84_pos#lat」が緯度
…
<result>
<binding
name="s"><uri>urn:新島橋_13</uri></binding>
<binding
name="p"><uri>hp://www.w3.org/2003/01/geo/wgs84_pos#lat</uri></binding>
<binding
name="o"><literal>41.769647</literal></binding>
</result>
<result>
<binding
name="s"><uri>urn:恵山山頂_20</uri></binding>
<binding
name="p"><uri>hp://www.w3.org/2003/01/geo/wgs84_pos#lat</uri></binding>
<binding
name="o"><literal>41.810507498395</literal></binding>
</result>
<result>
<binding
name="s"><uri>urn:函館漁港船入澗防波堤</uri></binding>
<binding
name="p"><uri>hp://www.w3.org/2003/01/geo/wgs84_pos#lat</uri></binding>
<binding
name="o"><literal>41.7732320517</literal></binding>
</result>
…
2013-‐04-‐25
30
32. 問合せ例
#1
4.クエリを書く
PREFIX
rdf:
<hp://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#>
PREFIX
rdfs:
<hp://www.w3.org/2000/01/rdf-‐schema#>
SELECT
*
WHERE
{
?s
<hp://www.w3.org/2003/01/geo/wgs84_pos#lat>
?o
.
filter
(
"41.810507498395"
<
?o
)
}
LIMIT
250
2013-‐04-‐25
32
33. 問合せ例
#1
3.
「恵山山頂」緯度を…
ところで、
hp://www.w3.org/2003/01/geo/wgs84_pos#lat
が緯度
↑
って、なぜ分かるの?
2013-‐04-‐25
33
36. 問合せ例
#2
PREFIX
rdf:
<hp://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#>
PREFIX
rdfs:
<hp://www.w3.org/2000/01/rdf-‐schema#>
SELECT
?s
?q
WHERE
{
<urn:恵山山頂_20>
<hp://www.w3.org/2003/01/geo/wgs84_pos#lat>
?q
.
?s
<hp://www.w3.org/2003/01/geo/wgs84_pos#lat>
?q
.
filter
(?q
<
?o)
}
LIMIT
250
2013-‐04-‐25
36
37. #1と#2の違い
地殻変動で恵山の緯度が変わった後…
• #1
filter
(
"41.810507498395"
<
?o
)
– 緯度の値がベタに書かれている。
– クエリを書き直さなくてはならない。
• #2
<urn:恵山山頂_20>
<hp://www.w3.org/2003/01/geo/
wgs84_pos#lat>
?q
.
filter
(?q
<
?o)
– 緯度の値を「函館○○情報」から取得している。
– 「函館○○情報」が更新されていれば、
– クエリを書き直さなくてよい。
2013-‐04-‐25
37
38. 問合せ例
#3
PREFIX
rdf:
<hp://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#>
PREFIX
rdfs:
<hp://www.w3.org/2000/01/rdf-‐schema#>
SELECT
?s
?q
WHERE
{
?e
<hp://www.w3.org/2003/01/geo/wgs84_pos#lat>
?o
.
?s
<hp://www.w3.org/2003/01/geo/wgs84_pos#lat>
?q
.
filter
(
?o
<
?q
)
filter
(
regex(str(?e),
"恵山山頂",
"i")
)
}
LIMIT
250
PS:
–
"i"は不要
–
disznct
?s
?qがベター
…
2013-‐04-‐25
38
41. 体験したこと…
• SPARQLを書いてみた。
• SPARQLで、情報を取り出してみた。…悩んだ。
– 大丈夫、みんな悩んでます。
– 自分がLODデータを公開したら、世界の開発者が、自分
のデータに対して、同じように悩むのです。
2013-‐04-‐25
41