SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智...
Transcript of SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智...
![Page 1: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/1.jpg)
SPARQLの基礎山本 泰智
ライフサイエンス統合データベースセンター
2016.8.31 @ 大阪
第10回AIツール入門講座SPARQLによるLOD (Linked Open Data)の活用
![Page 2: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/2.jpg)
RDFデータを検索する問い合わせ言語
SPARQL?
(スパークル)
![Page 3: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/3.jpg)
:大阪府:人口
8,838,988
RDF表現
大阪府の人口は8,838,988人。
![Page 4: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/4.jpg)
:大阪府:人口
?
RDFへ質問
大阪府の人口は?
![Page 5: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/5.jpg)
?:人口
100万以上
RDFへ質問
人口が100万人以上の都市は?
:都市
a
![Page 6: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/6.jpg)
?:人口
100万以上
RDFへ質問
人口が100万人以上の都市はいくつある?
???
:都市
a
![Page 7: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/7.jpg)
?:人口
100万以上
RDFへ質問
人口が100万人以上の都市がある国は?
?
:国
:都市
a
![Page 8: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/8.jpg)
SPARQLでできるよ
適切なRDFデータがあれば
![Page 9: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/9.jpg)
SPARQL1.1
W3C
Recommendation
![Page 10: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/10.jpg)
1. SPARQL 1.1 Overview2. SPARQL 1.1 Query Language3. SPARQL 1.1 Update4. SPARQL 1.1 Service Description5. SPARQL 1.1 Federated Query6. SPARQL 1.1 Query Results JSON Format7. SPARQL 1.1 Query Results CSV and TSV Formats8. SPARQL Query Results XML Format (Second Edition)9. SPARQL 1.1 Entailment Regimes10.SPARQL 1.1 Protocol11.SPARQL 1.1 Graph Store HTTP Protocol
仕様は11の文書
![Page 11: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/11.jpg)
クライアント RDFストア
問い合わせ言語仕様(参照系、更新系)
結果の形式(JSON, CSV, TSV, XML)とストアのメタデータ形式
HTTPを利用した通信方法
複数のストアへの問い合わせ方法
問い合わせの解釈方法
![Page 12: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/12.jpg)
問い合わせ言語
参照系(RDFストアの内容を変えない)
更新系(RDFストアの内容を更新する)
大文字小文字の違いを無視
![Page 13: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/13.jpg)
参照系
SELECT
ASK
DESCRIBE
CONSTRUCT
1.0はこれのみ
![Page 14: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/14.jpg)
SELECT欲しいデータのパターンと、
取り出したいデータのパターン中での位置を与える結果は変数に関連付けられる
SELECT ?o WHERE
{
:大阪府 :人口 ?o .
}
?o: 変数, $oでも同じ
トリプルパターン
![Page 15: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/15.jpg)
FILTER
SELECT ?c
WHERE {
?c :人口 ?o .?c a :都市 .
FILTER(?o >= 1000000)
}
aはrdf:typeの簡易表記
トリプルパターンと併せてより詳細なマッチ条件を記述できる
![Page 16: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/16.jpg)
COUNT / AS
SELECT (COUNT(?c) AS ?n)
WHERE {
?c :人口 ?o .
?c a :都市 .
FILTER(?o >= 1000000)
}
![Page 17: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/17.jpg)
DISTINCT
SELECT DISTINCT ?n
WHERE {
?c :人口 ?o .
?c a :都市 .
?c :国 ?n .
FILTER(?o >= 1000000)
}
![Page 18: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/18.jpg)
省略標記
SELECT DISTINCT ?n
WHERE {
[] :人口 ?o ;
a :都市 ;
:国 ?n .
FILTER(?o >= 1000000)
}
![Page 19: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/19.jpg)
OPTIONAL
SELECT DISTINCT ?n ?m
WHERE {
?c :人口 ?o ;
a :都市 ;
:国 ?n .OPTIONAL {
?c :首長 ?m .
}
FILTER(?o >= 1000000)
}
![Page 20: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/20.jpg)
UNION
SELECT ?c ?o
WHERE {
?c :人口 ?o .{ ?c a :町 . }
UNION
{ ?c a :村 . }
FILTER(?o >= 1000)
}
![Page 21: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/21.jpg)
GROUP BY
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)} GROUP BY (?n)
![Page 22: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/22.jpg)
HAVING
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)} GROUP BY ?n
HAVING (?nc > 1)
![Page 23: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/23.jpg)
ORDER BY
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)} GROUP BY ?n
HAVING (?nc > 1)ORDER BY DESC(?nc)
DESC: 降順ASC: 昇順省略時はASC
![Page 24: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/24.jpg)
LIMIT / OFFSET
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)
} GROUP BY (?n)
ORDER BY DESC(?nc)LIMIT 10 OFFSET 0
![Page 25: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/25.jpg)
GROUP BYなど解修飾子の順序
GROUP BY / HAVING / ORDER BY / LIMIT, OFFSET
これらはすべて省略可能だが、順序はこの通りでなくてはならない
ただし、LIMIT, OFFSETは入れ替え可
![Page 26: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/26.jpg)
SERVICE
SELECT ?h ?lat ?long
WHERE {
?c :標高 ?h ;
a :山 .SERVICE <location> {
?c :緯度 ?lat ;
:経度 ?long .
}
FILTER(?h > 2000)
}
![Page 27: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/27.jpg)
BIND / VALUES
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)
BIND(?n AS "日本"@ja)
}
![Page 28: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/28.jpg)
VALUES
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)VALUES ?n
{ "日本"@ja "ブラジル"@ja }
}
![Page 29: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/29.jpg)
VALUES
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a ?t ;
:国 ?n .
FILTER(?h > 2000)VALUES (?t ?n)
{ (:山 "日本"@ja)
(:都市 "ネパール"@ja) }
}
![Page 30: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/30.jpg)
MINUS
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)MINUS {
?c :国 "日本"@ja .
} }
MINUSの中のパターン
に外のパターンと共通する変数が一つは必要
![Page 31: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/31.jpg)
MINUSとNOT EXISTS
SELECT (COUNT(?n) AS ?nc) ?n
WHERE {
?c :標高 ?h ;
a :山 ;
:国 ?n .
FILTER(?h > 2000)FILTER NOT EXISTS {
?c :国 "日本"@ja .
} }
内外で共通する変数がある限りMINUSと同じ作用
![Page 32: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/32.jpg)
サブセレクト
SELECTは入れ子にできる
SELECT ?n ?c WHERE {
?c a :山 ; :標高 ?mh ; :国 ?n .{ SELECT ?n (MAX(?h) AS ?mh)
WHERE {
[] :標高 ?h ;a :山 ;
:国 ?n . }
GROUP BY ?n } }
![Page 33: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/33.jpg)
プロパティパス
SELECT ?who
WHERE {
{:私 :友 ?who .}
UNION
{:私 :友 / :友 ?who .}
}
SELECT ?who
WHERE {
:私 :友+ ?who .
}
? + * / ! ^ | ()を利用して構築
![Page 34: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/34.jpg)
リテラルの型と言語タグ
SELECT ?c
WHERE {
?c :標高 "1234"^^xsd:integer ;
a :山 ;
:国 "日本"@ja . }
"1234"^^xsd:integer は 1234 と同値
"123.4"^^xsd:decimal は 123.4 と同値
"日本"@ja のjaは言語タグ
![Page 35: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/35.jpg)
文字列の扱い
単純リテラル
"日本"
プレインリテラル
"日本"@ja
単純リテラルはxsd:string型リテラルの簡易表現"日本" と "日本"^^xsd:string は同値
単純リテラルとプレインリテラルは互いに異なるデータとして扱われることに注意
![Page 36: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/36.jpg)
よく使われる文字列関連関数
• CONTAINS
• STRSTARTS
• STRENDS
• REGEX
SELECT DISTINCT ?c ?n
WHERE {
?c :人口 ?o ;
:国 ?n .FILTER(STRSTARTS(?n, "ab"))
}
![Page 37: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/37.jpg)
REGEX
Perlの記法を踏襲FILTERと共に利用して文字列マッチ
SELECT ?c
WHERE {
?c :標高 "1234"^^xsd:integer ;
a :山 ;
:国 "日本"@ja .
FILTER REGEX(str(?c), "岳$", "s")
}ここでは不必要だが、REGEX
の記法を紹介するため
![Page 38: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/38.jpg)
REGEX REPLACE
REPLACEと共に利用して文字列置換
SELECT ?c ?label
WHERE {
?c :標高 "1234"^^xsd:integer ;
a :山 ;
:国 "日本"@ja .
BIND(
REPLACE(str(?c), "岳$", "嶽$")
AS ?label)
}
![Page 39: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/39.jpg)
ASK
欲しいデータのパターンを与える結果はパターンにマッチするデータがあるか否か
TRUE / FALSE
ASK WHERE
{
:大阪府 :人口 ?o .}
![Page 40: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/40.jpg)
CONSTRUCT
CONSTRUCT {
?c a :高山 ;
:標高 ?h .
} WHERE {
?c :標高 ?h ;
a :山 .
FILTER(?h > 2000)
}
欲しいデータと生成されるデータのパターンを与える結果は生成パターンに基づく新たなRDFデータ
![Page 41: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/41.jpg)
DESCRIBE
DESCRIBE :大阪市
欲しいデータのURIを与える結果は当該URIに関する有益なRDFデータ
Linked Dataの原則3を実装するのに最適
![Page 42: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/42.jpg)
PREFIX
RDFはURIもしくはリテラルで表記される。URIは長くなり易く人可読性が悪くなりがち。
特定のIDを示す部分を除く共通部分をくくりだして予めPREFIXとして宣言。パターンを表記する際の可読性を上げる。
PREFIX : <http://example.com/>
:大阪市は <http://example.com/大阪市> を示す
![Page 43: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/43.jpg)
よく使われるPREFIXと語彙
• rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
• rdf:type
• rdfs: <http://www.w3.org/2000/01/rdf-schema#>
• rdfs:label
• rdfs:seeAlso
• owl: <http://www.w3.org/2002/07/owl#>
• owl:sameAs
• foaf: <http://xmlns.com/foaf/0.1/>
• foaf:name
• foaf:homepage
• geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
• geo:lat
• geo:long
![Page 44: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/44.jpg)
省略可能な部分
* CONSTRUCTの一形態を除く
WHEREは省略OK*
最後のトリプルのパターンのピリオドは省略OK
SELECT ?c {
?c :人口 ?o .
?c a :都市 .
}
SELECT ?c {
?c :人口 ?o .
?c a :都市}
![Page 45: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/45.jpg)
評価順序
SPARQLクエリは論理式。
複数のトリプルのパターンの列挙はそれらのパターンの論理積を意味する。したがって順序は問わない。
{
?c :人口 ?o .
?c a :都市 .
?c :国 ?n .
}
{
?c a :都市 .
?c :国 ?n .
?c :人口 ?o .
}
![Page 46: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/46.jpg)
トリプルからクワッドへ
一連のRDFトリプルの集合を一つのグラフとして扱い、名前を付けられる
グラフ名もURIなので、主語、述語、目的語、
グラフ名の四つ組すなわちクワッドをデータの最小単位とする
SPARQL1.1からグラフの概念が導入された
シリアライズ方式としてN-quadがある(.nq 形式のファイル)
![Page 47: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/47.jpg)
GRAPH / FROM
SELECT ?o WHERE {GRAPH <graph> {
:大阪府 :人口 ?o .
}}
SELECT ?oFROM <graph>
WHERE {
:大阪府 :人口 ?o .
}
![Page 48: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/48.jpg)
GRAPHの扱いについて注意
グラフ名を陽に指定しないで検索した場合には
1.全てのグラフを検索対象にする
2.DEFAULT GRAPHだけを検索対象にする
のいずれかで実装により異なる
グラフ名を指定しない場合のトリプルはDEFAULT GRAPHに含まれる
![Page 49: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/49.jpg)
DBpedia Japaneseで試す
http://ja.dbpedia.org/sparql
上記ページにあるサンプルを試す。その後、適宜書き換えて試す。
![Page 50: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/50.jpg)
Linked Dataとの関係
http://ja.dbpedia.org/resource/大阪府へのアクセスと
DESCRIBE <http://ja.dbpedia.org/resource/大阪府>
http://ja.dbpedia.org/sparqlで以下のクエリを発行
![Page 51: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/51.jpg)
SPARQLの利用山本 泰智
ライフサイエンス統合データベースセンター
2016.8.31 @ 大阪
第10回AIツール入門講座SPARQLによるLOD (Linked Open Data)の活用
![Page 52: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/52.jpg)
FUSEKI
Apacheプロジェクトにより開発されている実装
Apache Jenaを用いたRDFストア&SPARQLエンドポイント実装
http://jena.apache.org/
SPARQL1.1 Query / Update / Graph
Store protocolに準拠
![Page 53: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/53.jpg)
インストールと立ち上げ
• Qiitaのサイトを参考にしてインストール
• Windows編
http://tinyurl.com/fuseki-win10
• Mac OS編
http://tinyurl.com/fuseki-MacOSX
• Qiitaのサイトを参考にしてデータのロード
• http://tinyurl.com/fuseki-intro
![Page 54: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/54.jpg)
更新系
•参照系とは異なりGRAPHの概念が反映される
• Fusekiに様々なデータを異なるグラフにロード
•参照系のGRAPHの扱いを確認
•なお、PREFIXを適宜加えてください
![Page 55: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/55.jpg)
CREATE / LOAD
グラフの生成とデータのロード
CREATE GRAPH :myGraph
LOAD dbpedia-ja:富士山 INTO
GRAPH :myGraph
残念ながらdbpedia側サーバーの文字コード処理に起因する問題により、現状上記のクエリをfusekiで実行するとエラーになる。例えば、dbpedia-ja:駒ヶ岳などは ok。
取得対象データがLinked Dataの原則3を満たしている場合は当該URIを指定することで適当なデータを取得できる
![Page 56: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/56.jpg)
CLEAR / DROP
CLEAR GRAPH :myGraph
グラフやグラフ内のデータを削除
DROP GRAPH :myGraph
トリプルのないグラフは自動的に消される実装もあり、その場合、両者は同じ
![Page 57: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/57.jpg)
INSERT DATA /DELETE DATA
グラフ内のデータをトリプル単位で挿入や削除更新対象は具体的なトリプルで指定
INSERT DATA
{ GRAPH :myGraph2
{ :sample foaf:homepage :index.html .} }
DELETE DATA
{ GRAPH :myGraph2
{ :sample foaf:homepage :index.html .} }
![Page 58: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/58.jpg)
INSERT / DELETE
グラフ内のデータをトリプル単位で挿入や削除更新対象はパターンで指定
INSERT
{ GRAPH :myGraph2 { ?s ?p ?o .} }
WHERE
{ GRAPH :myGraph1 {
?s ?p ?o .
MINUS {
?s owl:sameAs |
<http://dbpedia.org/ontology/wikiPageWikiLink> ?o }
} }
![Page 59: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/59.jpg)
INSERT DELETE
グラフ内のデータをトリプル単位で一度に削除と挿入更新対象トリプルはパターンで指定
WITH :myGraph1
DELETE { ?s owl:sameAs ?o }
INSERT { ?s rdfs:seeAlso ?o }
WHERE
{ ?s owl:sameAs ?o .
FILTER( ! strstarts(str(?o),
"http://www.wikidata.org/"))
}
![Page 60: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/60.jpg)
ADD / COPY / MOVE
グラフ内のデータをグラフ単位でコピーもしくは移動
ADD GRAPH :myGraph1 TO :myGraph2
COPY GRAPH :myGraph1 TO :myGraph2
MOVE GRAPH :myGraph1 TO :myGraph2
それぞれの違いは、データの追加元と先のグラフに、処理実行前に存在したデータの扱い
追加元 追加先ADD 変化なし 変化なしCOPY 変化なし 削除MOVE 削除 削除
![Page 61: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/61.jpg)
プロパティパス詳細
評価順序1. IRIあるいはプレフィックス表現
2. 否定表現(!)が付いている述語表現群
3. 述語表現群
4. 繰り返し表現(*、?、および+)
5. 逆表現(^)
6. 述語の連続表現(/)
7. 述語の併記表現(|)
演算子?: 0または1回
+: 1回以上
*: 0回以上
/: プロパティの連続
!: 否定
^: 主語と目的語の位置転換
|: または
(): 優先順位変更
トリプルのパターンの述語部分は様々な表現が可能*
*演算子と変数の同時使用は不可
:a :knows / ^:knows ?who
![Page 62: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/62.jpg)
組み込み関数: 論理系
• bound
• if
• coalesce
• exists / not exists
• || / && / =
• sameTerm
• in / not in
coalesce
複数の式を引数に取り、左から
順に評価し、最初にエラーでは
ないものを返す。
例えば、?x=2で?yが非束縛の
とき以下の通りになる。
coalesce(?x, 1/0) 2
coalesce(1/0, ?x) 2
coalesce(5, ?x) 5
coalesce(?y, 3) 3
![Page 63: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/63.jpg)
IFの使用例
SELECT ?ans
WHERE {
BIND (
(if(2 > 3, "2が大きい",
"3が大きい")) AS ?ans)
}
![Page 64: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/64.jpg)
組み込み関数: RDFターム*系
• isIRI
• isBlank
• isLiteral
• isNumeric
• str
• datatype
• lang
• IRI
• bnode
• strdt
• strlang
• uuid
• struuid
判定
変換
生成
*RDFタームとは、全てのURI、リテラル、ブランクノードを含む集合
![Page 65: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/65.jpg)
strdt と strlang
strdtは型付きリテラルを生成
strlangは言語タグ付きプレインリテラルを生成
SELECT ?lit1 ?lit2
WHERE {BIND (strdt("831", xsd:integer) AS ?lit1)
BIND (strlang("大阪", "ja") AS ?lit2)
}
![Page 66: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/66.jpg)
組み込み関数: 文字列系
• strlen
• substr
• ucase
• lcase
• strstarts
• strends
• contains
• strbefore
• strafter
• encode_for_URI
• concat
• langmatches
• regex
• replace
![Page 67: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/67.jpg)
組み込み関数: 集約系
• COUNT
• SUM
• MIN
• MAX
• AVG
• SAMPLE
• GROUP_CONCAT
GROUP_CONCAT
変数に複数の値が関連付けら
れているとき、それらを指定
のデリミタ(省略時には空
白)を用いて列挙した文字列
を返す。
例えば、?xに1,5,3,9が関連付
けられているときは、
GROUP_CONCAT(?x)で、
"1 5 3 9"が得られる。
![Page 68: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/68.jpg)
組み込み関数: 数値演算/日付系
数値演算• abs
• round
• ceil
• floor
• rand
日付• now
• year
• month
• day
• hours
• minutes
• seconds
• timezone / tz
![Page 69: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/69.jpg)
組み込み関数: ハッシュ/キャスト系
ハッシュ• md5
• sha1
• sha256
• sha384
• sha512
キャスト• xsd:boolean
• xsd:double
• xsd:float
• xsd:decimal
• xsd:integer
• xsd:datetime
• xsd:string
![Page 70: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/70.jpg)
文字列型の互換性
下記の文字列関連関数は2引数が必要で、それらの型は互換でなくてはならない
STRSTARTS, STRENDS, CONTAINS, STRBEFORE, STRAFTER
互換とは?
1. 両者ともに単純リテラルかxsd:string型
2. 両者ともにプレインリテラルで同じ言語タグ
3. 第一引数が言語タグ付きのプレインリテラルで第二
引数が単純リテラルもしくはxsd:string型
![Page 71: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/71.jpg)
キャスト可能な型についてFrom To str flt dbl dec int dT bool
str Y M M M M M M
flt Y Y Y M M N Y
dbl Y Y Y M M N Y
dec Y Y Y Y Y N Y
int Y Y Y Y Y N Y
dT Y N N N N Y N
bool Y Y Y Y Y N Y
IRI Y N N N N N N
ltrl Y M M M M M M
bool = xsd:boolean
dbl = xsd:double
flt = xsd:float
str = xsd:string
IRI = IRI
ltrl = simple literal
dec = xsd:decimal
int = xsd:integer
dT = xsd:dateTime
![Page 72: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/72.jpg)
演算子の適用対象の型
=, !=, <, >, <=, >=
数値、単純リテラル、xsd:string、xsd:boolean、xsd:dateTime
上記の2項演算子については下記の型へ適用できる
さらに、=と!=についてはRDFターム全般に適用できる
xsd:booleanの大小についてはTrue > False
と定められている
![Page 73: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/73.jpg)
関連ツール
• YASGUI
クエリ構築を支援http://legacy.yasgui.org/
• Sparklis
クエリを明示的に書かずにデータを閲覧http://www.irisa.fr/LIS/ferre/sparklis/osparklis.html
• Fuseki
すでに紹介済みですが、手元からSERVICEを用いて好きなエンドポイントにクエリを発行できる
• SPARQLES
様々なエンドポイントを複数の見地から定期的に調査http://sparqles.ai.wu.ac.at/
![Page 74: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/74.jpg)
プログラムからアクセス
• Python: SPARQLWrapperhttps://rdflib.github.io/sparqlwrapper/
• R: SPARQL Packagehttps://cran.r-project.org/web/packages/SPARQL/index.html
• Ruby: SPARQL Client for RDF.rbhttps://github.com/ruby-rdf/sparql-client
• Java: Apache Jenahttp://jena.apache.org/
• Java: Eclipse RDF4Jhttp://rdf4j.org/
• JavaScript: SPARQL.js etc.https://github.com/RubenVerborgh/SPARQL.js
![Page 75: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/75.jpg)
curlでアクセス
$ curl -gLH 'Accept: text/tab-separated-values' 'http://ja.dbpedia.org/sparql? query=select+distinct+*+where+{+%3Chttp%3A%2F%2Fja.dbpedia.org%2Fresource%2F%E6%9D%B1%E4%BA%AC%E9%83%BD%3E+%3Fp+%3Fo+.++}+LIMIT+100'
SPARQLの仕様はHTTPを用いたAPIも含む
HTTP GETでのアクセス例
仕様ではクエリ無しでHTTP GETするとエンドポイントのメタデータが得られることになっているが…
![Page 76: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/76.jpg)
curlでアクセス
$ echo ¥'select distinct * where { <http://ja.dbpedia.org/resource/東京都> ?p ?o . } LIMIT 100' ¥| curl -gLH 'Accept: text/tab-separated-values' ¥--data-urlencode query@- 'http://ja.dbpedia.org/sparql'
HTTP POSTでのアクセス例
![Page 77: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/77.jpg)
課題
•人口の多い順に列挙
•各国の首相を列挙
•国ごとの最高峰とその高さや場所を列挙
• DBpedia Japaneseの山に関する情報でWikidata
にも情報があるものを列挙する
•さらにWikidataからの情報も収集する
エンドポイントはhttp://query.wikidata.org/sparql
![Page 78: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/78.jpg)
国内のエンドポイントを探す
• http://wp.lodosaka.jp/tool/searchdata/
• http://succi.jp/blog/?p=1437
• https://data.city.osaka.lg.jp/api/
• http://data.allie.dbcls.jp/
• http://lsd.dbcls.jp/
• http://integbio.jp/rdf/
![Page 79: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/79.jpg)
生命科学分野の話題
•比較的早いうちからRDF化が行われている• 参考: http://id.nii.ac.jp/1001/00163747/(情報処理学会員以外は2018年6月まで有料)
•例のLODクラウドでもそれなりのボリューム
•国内でも最近活発に研究・開発
•筆者所属のDBCLSはハッカソンを定期的に開催• 参加自由ですので、ぜひ!
• http://wiki.lifesciencedb.jp/mw/SPARQLthon
![Page 80: SPARQLの基礎 - Store & Retrieve Data Anywhere€¦ · SPARQLの基礎 山本泰智 ライフサイエンス統合データベースセンター 2016.8.31 @ 大阪 第10回AIツール入門講座](https://reader033.fdocuments.in/reader033/viewer/2022052723/5f0eb4df7e708231d4408a18/html5/thumbnails/80.jpg)
参考文献