sparql epcuでlodをマッシュアップ
TRANSCRIPT
SparqlEPCUで LODをマッシュアップ
年岡晃一
2013第3回LODチャレンジデーin東海 改訂版 2013/11/06
SparqlEPCU 2013/08/24 1
lodcu.cs.chubu.ac.jp/SparqlEPCU/
contents
1. 概要 – LOD開発環境SparqlEPCU
– lod_browser
2. プログラミング無しでCSVデータをRDF登録 – Projectとアクセス権
– 汎用アプリで格納データを確認
3. JavaScriptでLODをマッシュアップ – CSVデータをクラウドへ格納
– SPARQL実行
SparqlEPCU 2013/08/24 2
1.概要
SparqlEPCU 2013/08/24 3
目的:LOD開発環境を提供する SparqlEPCU mashup LOD_browser
ユーザー: JavaScriptプログラマー マッシュアップ
LODデータ
Webアプリケーションサイト
エンドユーザ
認証システム OAuth
CLOUD
SparqlEPCU 2013/08/24 4
LODがクラウド で使えるわ♪ らくちん!
コース順
SparqlEPCU 2013/08/24 5
データの登録
データの検索
プログラミング無しで、RDFの登録・検索を体験
自分のプロジェクトを作る
データの登録
データの検索
JavaScriptを書いて、
RDFの登録・検索を体験
csv形式 緯度・経度
csv形式 緯度・経度
RDFとは
SparqlEPCU 2013/08/24 6
名古屋 愛知
河村
橋本
県
市長
友人
グラフ表現による知識ネットワーク
実世界
メタデータ
SPARQL
select ?s, ?o where{
?s 県 愛知 .
?s 市長 ?o .
}
SparqlEPCU 2013/08/24 7
?s
愛知
?o
県
市長
グラフ探索
愛知県にある市の市長は誰?
SparqlEPCU RDFstoreにアクセスするJavaScript APIを公開
SparqlEPCU 2013/08/24 8
2.先ずはプログラミング無しで データ格納と データ検索
SparqlEPCU 2013/08/24 9
誰でも手軽にRDFをアップロードしてSPARQLでクエリかけられる
CSV形式でRDF登録データを準備する
• addCSV.html
SparqlEPCU 2013/08/24 10
@学生, 学籍, 名前, mail ID09038, 藤木 晋太郎, [email protected] ID09000, 青山 哲也, [email protected] ID09001, 伊藤 信士, [email protected] ID09002, 遠藤 京子, [email protected]
クラス 属性
個々の データ
_id 学籍
名前
学生
ID09xx
藤木xx
fujiki@xx
mail type
CSV形式でRDF登録 (subjectIDを付けて)
• addCSV2.html
SparqlEPCU 2013/08/24 11
@学生, 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登録になります
データを登録する
SparqlEPCU 2013/08/24 12
登録したデータを検索してみる
SparqlEPCU 2013/08/24 13
?s ?p ?o
LOD Browserで検索してみる
SparqlEPCU 2013/08/24 14
緯度、経度情報があればgoogleマップ上に表示します。この画面で編集も出来ます。
3.ここからはプログラミング
SparqlEPCU 2013/08/24 15
JavaScript jQuery マッシュアップ
先ずはサンプルコードをダウンロード
JavaScript APIをつかう
CLOUDを使えばJavaScriptのコードを書くだけで LODアプリケーションサイト構築が可
RDFの登録
RDFの更新
RDFの削除
RDFの検索(SPARQL実行)
SparqlEPCU 2013/08/24 16
Zipを解凍してindex.htmlをダブルクリック
開発にあたっての前提知識
• RDFに関する知識
• JavaScript, jQuery, JSON • RDF登録の入力データ形式
– CSV
– TURTLE
– N3
– RDF/XML
– N-TRIPLE
• RDFダウンロード
– TURTLE
– N3
– RDF/XML
– N-TRIPLE
SparqlEPCU 2013/08/24 17
設定
• conf.jsの設定 (使用するプロジェクトを指定する)
var rdfserver_project=“nagoyadata";
• Jsライブラリの指定 <script type="text/javascript" src="http://lodcu.cs.chubu.ac.jp:8080/SparqlEPCU/RDFmgr/rdfmgr-2.0.0.js"> </script>
SparqlEPCU 2013/08/24 18
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 2013/08/24 19
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 2013/08/24 20
http://lodcu.cs.chubu.ac.jp/SparqlEPCU/RDFServer.jsp?reqtype=api&project=nagoyadata&query=select * where{?s ?p ?o}&output=JSON
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 2013/08/24 21
APIs
• CSV形式で登録されたインスタンスの操作 – rdfmgr.insertInstance() – rdfmgr.updateInstance() – rdfmgr.deleteInstance()
• 検索 – rdfmgr.executeSparql ()
• 3つ組みとしての操作
– rdfmgr.insertStatement() – rdfmgr.updateStatement() – Rdfmgr.deleteStatement()
SparqlEPCU 2013/08/24 22
まとめ
• データを生成する人
• データを登録する人
• アプリを作る人
• 基盤環境を作る人
– Sparqlエンドポイントを作る人
–データカタログ、Hubを作る人
–語彙の統制を計る人
–問い合わせ文からSPARQL式を作る人
SparqlEPCU 2013/08/24 23
SparqlEPCU 2013/08/24 24
• サポートサイト – http://lodcu.cs.chubu.ac.jp/SparqlEPCU/
• ダウンロード・サービス – Web API 仕様書
– APP JavaScriptサンプルコード
• デモへのリンク – LOD Browser
• お問い合わせ