SPARQLとMashup環境 (年岡先生)
-
Upload
shun-shiramatsu -
Category
Technology
-
view
449 -
download
6
description
Transcript of SPARQLとMashup環境 (年岡先生)
![Page 1: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/1.jpg)
SPARQLとMashup環境
年岡晃一 中部大学
LODチャレンジJapan実行委員 東海地区支部長 [email protected]
SparqlEPCU 2014/09/07 1
http://lodcu.cs.chubu.ac.jp/SparqlEPCU/ 2014/09/07
![Page 2: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/2.jpg)
contents
I. LOD開発の現況 II. LODとは III. プログラミング無しで
1. データ登録と更新 2. 検索
IV. プログラミングして 1. Mashup 2. サンプルコード
V. SPARQLを学ぶ VI. さらに学ぶには(今回パス)
SparqlEPCU 2014/09/07 2
9/13 LODチャレンジデー2014 in 名古屋 でも話します
![Page 3: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/3.jpg)
I.LOD開発の現況
SparqlEPCU 2014/09/07 3
![Page 4: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/4.jpg)
LOD構築の実際
SparqlEPCU 2014/09/07 4
行政 学術機関
民間 民間・学術機関
データ作成者 RDFデータ公開者
アプリ開発者 SPARQL Endpoint提供者
SPARQL利用 RでもOK
データ提供
データ収集
LinkData
DBpedia DBpediaJapanese SparqlEPCU LODAC Museum ・・・
RDFstore
Sparql Timeliner LOD Browser ・・・
エンドユーザー
多くはSPARQLコマンド画面を用意している
![Page 5: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/5.jpg)
LOD構築の実際
SparqlEPCU 2014/09/07 5
行政 学術機関
民間 民間・学術機関
データ作成者 RDFデータ公開者
アプリ開発者 SPARQL Endpoint提供者
SPARQL
csv,xls,xml
csv,ttl
LinkData
csv,ttl
DBpedia DBpediaJapanese SparqlEPCU LODAC Museum ・・・
RDFstore
Sparql Timeliner LOD Browser ・・・
エンドユーザー
GUI
LOD catalog
CKAN
Fuseki virtuoso
![Page 6: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/6.jpg)
II.Linked Open Data(LOD)とは
SparqlEPCU 2014/09/07 6
RDFとは (Resource Description Framework ) SPARQLとは (SPARQL Protocol and RDF Query Language)
![Page 7: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/7.jpg)
rel:participant
bibo:organizer
RDF(Resource Description Framework)
CodeForNagoya Meeting foaf:name
2014-09-27
http://codeForJapan.org/conf19
dc:date
http://www.facebook.com/kawaguchi
河口信夫
foaf:name http://codeForeJapan.org/
http://www.facebook.com/miyauchi 宮内元 foaf:name
CodeForNagoya
foaf:name nco:representative
foaf:knows
事物をURIで指定する 事物間の関係を意味的リンクで結ぶグラフでデータを表現する(モデル)
規則 ノードはURIで特定できる(世界で只1つ) プロパティもURIなので関係性の意味定義も唯一が保証される
WEB上の知識(リソース)を URIで特定し、「意味定義が唯一」が保証
された述語で表現していきましょうLOD
![Page 8: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/8.jpg)
RDFとは
SparqlEPCU 2014/09/07 8
名古屋 愛知
河村
橋本
県
市長
友人
グラフ表現による知識ネットワーク
実世界
メタデータ
![Page 9: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/9.jpg)
検索 SPARQL
select ?s, ?o where{ ?s 県 愛知 . ?s 市長 ?o . }
SparqlEPCU 2014/09/07 9
?s
愛知
?o
県
市長
検索はグラフ探索だが上記テーブルの自己結合で出来る
愛知県にある市の市長は誰? subject predicate object
名古屋 県 愛知
松阪 県 三重
千種 市 名古屋市
松本町 市 春日井市
担当教員 町 松本町
名古屋 市長 河村
松本町 町長 佐藤
このトリプルが知識の最少単位
![Page 10: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/10.jpg)
LODデータ
Webアプリケーションサイト(LODアプリ)
エンドユーザ
CLOUD
SparqlEPCU 2014/09/07 10
LODアプリサイト
がマッシュアップで作れるわ♪
グーグルマップの環境と同じ
![Page 11: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/11.jpg)
III.先ずはプログラミング無しで データ格納と データ検索
SparqlEPCU 2014/09/07 11
誰でも手軽にRDFをアップロードしてSPARQLでクエリかけられる
http://lodcu.cs.chubu.ac.jp/SparqlEPCU/
![Page 12: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/12.jpg)
コース順
SparqlEPCU 2014/09/07 12
データの登録
データの検索
プログラミング無しで、RDFの登録・検索を体験
データの登録
データの検索
JavaScriptを書いて、
RDFの登録・検索を体験
csv形式 緯度・経度
csv形式 緯度・経度
![Page 13: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/13.jpg)
CSV形式でRDF登録データを準備する
• addCSV.html
SparqlEPCU 2014/09/07 13
@学生, 学籍, 名前, mail ID09038, 藤木 晋太郎, [email protected] ID09000, 青山 哲也, [email protected] ID09001, 伊藤 信士, [email protected] ID09002, 遠藤 京子, [email protected]
クラス 属性
個々の データ
_id 学籍
名前
学生
ID09xx
藤木xx
fujiki@xx mail type
![Page 14: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/14.jpg)
CSV形式でRDF登録 (subjectIDを付けて)
• addCSV2.html
SparqlEPCU 2014/09/07 14
@学生, SubjectID, 学籍, 名前, mail http://aaa/, ID09038, 藤木 晋太郎, [email protected] http://bbb/, ID09000, 青山 哲也, [email protected] http://ccc/, ID09001, 伊藤 信士, [email protected] http://ddd/, ID09002, 遠藤 京子, [email protected]
クラス 属性
個々の データ
http://aaa/ 学籍
名前
学生
ID09xx
藤木xx
fujiki@xx mail type
先頭属性がsubjectIDであれば、指定URLのRDF登録になります
![Page 15: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/15.jpg)
データを登録する
SparqlEPCU 2014/09/07 15
![Page 16: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/16.jpg)
登録したデータを検索してみる
SparqlEPCU 2014/09/07 16
![Page 17: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/17.jpg)
IV.ここからはプログラミング
SparqlEPCU 2014/09/07 17
JavaScript jQuery LODを簡単に扱うためのJSライブラリ サンプルコードをダウンロード
マッシュアップ環境
SlideShare http://www.slideshare.net/KohichiToshioka/sparql-epculod-28065847
![Page 18: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/18.jpg)
SparqlEPCU RDFstoreにアクセスするJavaScript APIを公開
SparqlEPCU 2014/09/07 18
![Page 19: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/19.jpg)
LODデータ
Webアプリケーションサイト(LODアプリ)
エンドユーザ
認証システム OAuth
CLOUD
SparqlEPCU 2014/09/07 19
LODアプリサイト
がマッシュアップで作れるわ♪
SparqlEPCUでは、各LODデータ
セット毎にアクセス権設定を行えるようにしている
![Page 20: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/20.jpg)
JavaScript APIをつかう RDFの登録 RDFの更新 RDFの削除
RDFの検索(SPARQL実行)
SparqlEPCU 2014/09/07 20
Zipを解凍してindex.htmlをダブルクリック
![Page 21: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/21.jpg)
開発にあたっての前提知識
• RDFに関する知識 • JavaScript, jQuery, JSON • RDF登録の入力データ形式
– CSV – TURTLE – N3 – RDF/XML – N-TRIPLE
• RDFダウンロード – TURTLE – N3 – RDF/XML – N-TRIPLE
SparqlEPCU 2014/09/07 21
![Page 22: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/22.jpg)
LOD登録script <script type="text/javascript"> //インスタンスの宣言 var rdfmgr = new RDFmgr( rdfserver_project ); function goData(){ rdfmgr.insertInstance({ // CSV形式のデータをSparqlEPCUに送信 rdfdata: $("#csvdata").val(), success: function(){ alert("成功しました。"); } , error: getErrorMsg, overwrite: false }); } //エラー表示用関数 function getErrorMsg ( eType,eMsg,eInfo ){ alert(eMsg+"¥n¥n"+eInfo); } </script>
SparqlEPCU 2014/09/07 22
![Page 23: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/23.jpg)
LOD検索script function sparqlSend () { var stext = $(“#sparql”).val(); // 検索式を入力フィールドより持って来る rdfmgr.executeSparql ( { // SPARQL検索を行う sparql: stext, // 検索式 inference: false, // 推論を行うか行わないかを指定する success: maketable, // 処理が終わった時に表示関数を呼び出す指定 error: getErrorMsg // 例外が起きた時にエラー処理関数を呼び出す }); } function maketable(re) { // 検索結果のJSONデータを、イテレータを使用して取り出して表作成する $("#disp").empty(); var str = new String("<tr>"); for(var i=0; i<re.getKeyListLength();i++){ str += “<td>”+re.getKey(i)+“</td>”; } str += "</tr>"; while(re.next()) { for(var i=0; i < re.getLength();i++) { str += “<td><pre>”+re.getValue(i)+“</pre></td>”; } str += "</tr>"; } $("#disp").append(str); }
SparqlEPCU 2014/09/07 23
http://lodcu.cs.chubu.ac.jp/SparqlEPCU/RDFServer.jsp?reqtype=api&project=nagoyadata&query=select * where{?s ?p ?o}&output=JSON
![Page 24: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/24.jpg)
DeleteInstance
GET http://lodcu.cs.chubu.ac.jp/SparqlEPCU/RDFServer.jsp? sparqlCallback=xxx& hostname=& reqtype=manage& type=removeInstance& graphID=null& project=test2& subject= http://lodcu.cs.chubu.ac.jp/SparqlEPCU/project/test2#id_2
SparqlEPCU 2014/09/07 24
![Page 25: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/25.jpg)
APIs
• CSV形式で登録されたインスタンスの操作 – rdfmgr.insertInstance() – rdfmgr.updateInstance() – rdfmgr.deleteInstance()
• 検索 – rdfmgr.executeSparql ()
• 3つ組みとしての操作
– rdfmgr.insertStatement() – rdfmgr.updateStatement() – Rdfmgr.deleteStatement()
SparqlEPCU 2014/09/07 25
![Page 26: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/26.jpg)
LOD Browserで検索してみる
SparqlEPCU 2014/09/07 26
緯度、経度情報があればgoogleマップ上に表示します。この画面で編集も出来ます。
![Page 27: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/27.jpg)
SparqlEPCUの今後
• NamedGraphの利用 – 現バージョンでも使える
• FederatedSearchへの対応 • GoogleRefineや語彙のNegotiation • ScaleOut
SparqlEPCU 2014/09/07 27
![Page 28: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/28.jpg)
V.SPARQLの機能いろいろ
SparqlEPCU 2014/09/07 28
SQLに似ている
![Page 29: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/29.jpg)
SPARQLの諸機能
• DISTINCT • COUNT • LIMIT OFFSET • OPTIONAL • ORDER BY • GROUP BY • FILTER
SparqlEPCU 2014/09/07 29
SPARQL 1.1の追加機能 • CONSTRUCT • ASK • DESCRIBE • NAMED GRAPH
![Page 30: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/30.jpg)
基本クエリ
SparqlEPCU 2014/09/07 30
SELECT * WHERE { ?s ?p ?o . }
?s
?p
?o
主語
述語
目的語
SELECT ?s ? p ?o WHERE { ?s ?p ?o . }
SELECT ? p ?o WHERE { ?s ?p ?o . }
左と同じ 主語は結果表示に含めない
![Page 31: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/31.jpg)
DISTINCT 重複を取り除く
SparqlEPCU 2014/09/07 31
select DISTINCT ?o where { ?s lodcu:駅 ?o }
?s
駅
?o
![Page 32: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/32.jpg)
COUNT データ総数を返す
SparqlEPCU 2014/09/07 32
select (count(?o) as ?c) where { ?s lodcu:駅 ?o }
?s 駅
?o
select (count( distinct ?o) as ?c) where { ?s lodcu:駅 ?o }
上記では同じ駅が何回でも出て来るので
集約関数 他にSUM,AVG,MAX.MINなども
select (count(?s) as ?c) where { ?s ?p ?o }
すべてのトリプルを数える
![Page 33: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/33.jpg)
LIMIT OFFSET
SparqlEPCU 2014/09/07 33
SELECT * WHERE { ?s ?p ?o . } LIMIT 5 offset 10
?s
?p
?o
![Page 34: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/34.jpg)
ORDER BY
SparqlEPCU 2014/09/07 34
SELECT * WHERE {?s ?p ?o . } ORDER BY ?o
?s
?p
?o
降順なら ORDER BY DESC( ?o)
![Page 35: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/35.jpg)
FILTER
SparqlEPCU 2014/09/07 35
SELECT * WHERE { ?s ?p ?o . FILTER (?o >2 && ?o <5) }
?s
?p
?o
条件で絞り込む
![Page 36: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/36.jpg)
FILTER + regex
SparqlEPCU 2014/09/07 36
select * where { ?s ?p ?o. FILTER ( regex(?o,"名", "i")) }
?s
?p
?o
文字列検索
![Page 37: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/37.jpg)
OPTIONAL
SparqlEPCU 2014/09/07 37
SELECT * WHERE { ?s rdfs:label ?o . OPTIONAL{ ?s lodcu:TEL ?o2 . } }
?s
?p
?o
在ればそれも出すという付帯的な条件
ラベル付きが必須だが、電話が無くてもリストには出る。 外部結合に相当する
![Page 38: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/38.jpg)
GROUP BY+ count グループごとに集約関数
SparqlEPCU 2014/09/07 38
?s
?p
?o
SELECT ?o (count(?s) as ?cnt) WHERE {?s lodcu:駅 ?o . } GROUP BY ?o
![Page 39: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/39.jpg)
BIND
SparqlEPCU 2014/09/07 39
select distinct ?o ?strlen where { ?s lodcu:駅 ?o . BIND (STRLEN(?o) as ?strlen) } order by desc(?strlen)
?s
?p
?o
![Page 40: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/40.jpg)
他に
• 多言語用にラベルを用意 • 深いパスへの探索 • 複数LODサイトにSPARQLを実行してもらう
SparqlEPCU 2014/09/07 40
![Page 41: SPARQLとMashup環境 (年岡先生)](https://reader033.fdocument.pub/reader033/viewer/2022050816/5495f821ac79592f2e8b4fb8/html5/thumbnails/41.jpg)
Thank you
SparqlEPCU 2014/09/07 41