SPARQLとMashup環境
年岡晃一
中部大学
LODチャレンジJapan実行委員 東海地区支部長
toshioka@cs.chubu.ac.jp
SPARQLとMashup環境 2014/09/13 1
http://lodcu.cs.chubu.ac.jp/SparqlEPCU/
2014/09/13
contents
I. LOD開発の現況
II. LODとは
III. プログラミング無しで
1. データ登録と更新
2. 検索
IV. プログラミングして独自のアプリ
1. マッシュアップ
2. サンプルコード
V. SPARQLを学ぶ
VI. さらに学ぶには
SPARQLとMashup環境 2014/09/13 2
I.LOD開発の現況
SPARQLとMashup環境 2014/09/13 3
LOD構築の実際
SPARQLとMashup環境 2014/09/13 4
行政 学術機関
民間 民間・学術機関
データ作成者 RDFデータ公開者
アプリ開発者 SPARQL Endpoint提供者
SPARQL利用
RでもOK
データ提供
データ収集
LinkData
DBpedia
DBpediaJapanese
SparqlEPCU
LODAC Museum
・・・
RDFstore
Sparql Timeliner
LOD Browser
・・・
エンドユーザー
多くはSPARQLコマンド画面を
用意している
LOD構築の実際
SPARQLとMashup環境 2014/09/13 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
II.Linked Open Data(LOD)とは
SPARQLとMashup環境 2014/09/13 6
RDFとは (Resource Description Framework )
SPARQLとは (SPARQL Protocol and RDF Query Language)
RDFとは
SPARQLとMashup環境 2014/09/13 7
名古屋 愛知
河村
橋本
県
市長
友人
グラフ表現による知識ネットワーク
実世界
メタデータ
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
SPARQLとMashup環境 2014/09/13 8
検索 SPARQL
select ?s, ?o where{
?s 県 愛知 .
?s 市長 ?o .
}
SPARQLとMashup環境 2014/09/13 9
?s
愛知
?o
県
市長
検索はグラフ探索だが上記
テーブルの自己結合で出来る
愛知県にある市の市長は誰? subject predicate object
名古屋 県 愛知
松阪 県 三重
千種 市 名古屋市
松本町 市 春日井市
担当教員 町 松本町
名古屋 市長 河村
松本町 町長 佐藤
このトリプルが知識の最少単位
以後の話の流れ
SPARQLとMashup環境 2014/09/13 10
データの登録
データの検索
プログラミング無しで、
RDFの登録・検索を体験
データの登録
データの検索
JavaScriptを書いて、
RDFの登録・検索を体験
csv形式
緯度・経度
csv形式
緯度・経度
III.先ずはプログラミング無しで
データ格納と
データ検索
SPARQLとMashup環境 2014/09/13 11
SparqlEPCUを使うと、手軽にRDFをアップ
ロードしたり、SPARQLで検索かけたり出来る
http://lodcu.cs.chubu.ac.jp/SparqlEPCU/
LODデータ
Webアプリケーションサイト(LODアプリ)
エンドユーザ
CLOUD
SPARQLとMashup環境 2014/09/13 12
LODアプリサイト
がマッシュアッ
プで作れるわ♪
グーグルマップの
環境と同じ
SparqlEPCUでLODを公開
SPARQLとMashup環境 2014/09/13 13
ログインして
Project
メニューをクリック
③プロジェクト一覧から作
成したプロジェクトを選択
②
プロジェクトのID、タイ
トル、権限などを設定
①プロジェクトを作成
④データプロジェクト一覧か
ら作成したプロジェクトを選択
CSV形式でRDF登録データを準備
• addCSV.html
SPARQLとMashup環境 2014/09/13 14
@学生, 学籍, 名前, mail
ID09038, 藤木 晋太郎, fujiki_s@mail.com
ID09000, 青山 哲也, aoyama_t@mail.com
ID09001, 伊藤 信士, ito_s@mail.com
ID09002, 遠藤 京子, endo_k@mail.com
クラス
属性
個々の
データ
_id
学籍
名前
学生
ID09xx
藤木xx
fujiki@xx
mailtype
• 緯度、経度データを入れた
い場合はmailなどの代わり
にgeo:lat geo:longを入れる
SparqlEPCUにデータを登録
SPARQLとMashup環境 2014/09/13 15
@学生, 学籍, 名前, mail
ID09038, 藤木 晋太郎, fujiki_s@mail.com
ID09000, 青山 哲也, aoyama_t@mail.com
ID09001, 伊藤 信士,ito_s@mail.com
ID09002, 藤 京子,endo_k@mail.com
③データを貼り付ける
①データ登録タブを選択
②データ形式を選択
④登録ボタンクリック
• コピーペーストまたはファイル転送
• N3,RDF/XML,Turtle,N-tripleなどのデータ形
式が使える
登録したデータを確認
SPARQLとMashup環境 2014/09/13 16
①プロジェクトのSPARQL検索タブを選択
②取り敢えず検索実行をクリック
③
トリプルが表示されれ
ば公開成功
高度なSPARQL実行は後で!
IV.ここからはプログラミング
SPARQLとMashup環境 2014/09/13 17
JavaScript
jQuery
LODを簡単に扱うためのJSライブラリ
サンプルコードをダウンロード
マッシュアップ環境
SlideShare
http://www.slideshare.net/KohichiToshioka/sparql-epculod-28065847
SparqlEPCU
RDFstoreにアクセスするJavaScript APIを公開
SPARQLとMashup環境 2014/09/13 18
LODデータ
Webアプリケーションサイト(LODアプリ)
エンドユーザ
認証システム
OAuth
CLOUD
SPARQLとMashup環境 2014/09/13 19
LODアプリサイト
がマッシュアッ
プで作れるわ♪
SparqlEPCUでは、各LODデータ
セット毎にアクセス権設定を行
えるようにしている
JavaScript APIをつかう
 RDFの登録
 RDFの更新
 RDFの削除
 RDFの検索(SPARQL実行)
SPARQLとMashup環境 2014/09/13 20
Zipを解凍してindex.htmlをダブルクリック
開発にあたっての前提知識
• RDFに関する知識
• JavaScript, jQuery, JSON
• RDF登録の入力データ形式
– CSV
– TURTLE
– N3
– RDF/XML
– N-TRIPLE
• RDFダウンロード
– TURTLE
– N3
– RDF/XML
– N-TRIPLE
SPARQLとMashup環境 2014/09/13 21
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>
SPARQLとMashup環境 2014/09/13 22
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);
}
SPARQLとMashup環境 2014/09/13 23
http://lodcu.cs.chubu.ac.jp/SparqlEPCU/RDFServer.jsp?reqtype=api&project=
nagoyadata&query=select * where{?s ?p ?o}&output=JSON
RDFmgr.jsのイテレー
タを使うと簡単にデー
タを取り出せる
GET要求も簡単
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
SPARQLとMashup環境 2014/09/13 24
APIs
• CSV形式で登録されたインスタンスの操作
– rdfmgr.insertInstance()
– rdfmgr.updateInstance()
– rdfmgr.deleteInstance()
• 検索
– rdfmgr.executeSparql ()
• 3つ組みとしての操作
– rdfmgr.insertStatement()
– rdfmgr.updateStatement()
– Rdfmgr.deleteStatement()
SPARQLとMashup環境 2014/09/13 25
LOD Browserで検索してみる
SPARQLとMashup環境 2014/09/13 26
緯度、経度情報があればgoogleマップ上に表示します。この画面で編集も出来ます。
SparqlEPCUの今後
• NamedGraphへの対応
• FederatedSearchへの対応
• GoogleRefineや語彙のNegotiation
• ScaleOut
SPARQLとMashup環境 2014/09/13 27
V.SPARQLの機能いろいろ
SPARQLとMashup環境 2014/09/13 28
SQLに似ている
SPARQLの諸機能
• DISTINCT
• COUNT
• LIMIT OFFSET
• OPTIONAL
• ORDER BY
• GROUP BY
• FILTER
SPARQLとMashup環境 2014/09/13 29
SPARQL 1.1の追加機能
• CONSTRUCT
• ASK
• DESCRIBE
• NAMED GRAPH
検索式の基本形式
SPARQLとMashup環境 2014/09/13 30
SELECT *
WHERE {
?s ?p ?o .
} 主
語
述
語
目
的
語
SELECT ?s ? p ?o
WHERE {
?s ?p ?o .
}
SELECT ? p ?o
WHERE {
?s ?p ?o .
}
左と同じ 主語は結果表示
に含めない
SELECT *
WHERE {
?s ?p ?o .
?o ?p2 ?o2 .
}
最後は
ピリオド
?s
?o
?p
?s
?p
?o
?p2
?o2
DISTINCT 重複を取り除く
SPARQLとMashup環境 2014/09/13 31
select DISTINCT ?o
where {
?s lodcu:駅 ?o
}
?s
駅
?o
COUNT データ総数を返す
SPARQLとMashup環境 2014/09/13 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
}
すべてのトリプルを数える
LIMIT OFFSET 出力数を制限する
SPARQLとMashup環境 2014/09/13 33
SELECT * WHERE
{
?s ?p ?o .
}
LIMIT 5 offset 10
?s
?p
?o
ORDER BY 順に並べる
SPARQLとMashup環境 2014/09/13 34
SELECT * WHERE
{?s ?p ?o . }
ORDER BY ?o
?s
?p
?o
降順なら
ORDER BY DESC( ?o)
FILTER
SPARQLとMashup環境 2014/09/13 35
SELECT * WHERE {
?s ?p ?o .
FILTER (?o >2 && ?o <5)
}
?s
?p
?o
条件で絞り込む
緯度、経度の範囲を
指定するなどで便利
FILTER + regex
SPARQLとMashup環境 2014/09/13 36
select * where {
?s ?p ?o.
FILTER ( regex(?o,"名", "i"))
}
?
s?p
?o
文字列検索
OPTIONAL
SPARQLとMashup環境 2014/09/13 37
SELECT * WHERE {
?s rdfs:label ?o .
OPTIONAL{
?s lodcu:TEL ?o2 .
}
}
在ればそれも出すという付帯的な条件
ラベル付きが必須だが、電話が
無くてもリストには出る。
外部結合に相当する
?
s?p
?o
GROUP BY+ count グループごとに集約関数
SPARQLとMashup環境 2014/09/13 38
SELECT ?o (count(?s) as ?cnt)
WHERE {?s lodcu:駅 ?o . }
GROUP BY ?o
?s
?p
?o
BIND 結果を別変数にする
SPARQLとMashup環境 2014/09/13 39
select distinct ?o ?strlen
where {
?s lodcu:駅 ?o .
BIND (STRLEN(?o) as ?strlen)
} order by desc(?strlen)
?s
?p
?o
他にもいろいろ有り
• 多言語用にラベルを用意
• 深いパスへの探索
• 複数LODサイトにSPARQLを実行してもらう
SPARQLとMashup環境 2014/09/13 40
V.さらにSPARQLを学ぶ
SPARQLとMashup環境 2014/09/13 41
SPARQLを勉強する
• W3C勧告
– SPARQL 1.0:http://www.w3.org/TR/rdf-sparql-query/
– SPARQL 1.1:http://www.w3.org/TR/sparql11-query/
• 書籍
– Learning SPARQL(英語)
http://www.amazon.co.jp/dp/1449306594
• SPARQLエンドポイント集
– datahub api/sparql
http://datahub.io/dataset?q=&res_format=api/sparql
– SPARQL Endpoints Status
http://sparqles.okfn.org/availability
• サンプルクエリ集
– LODAC SPARQLスニペット(LODAC Museumで試せます)
http://lod.ac/wiki/SPARQLスニペット
SPARQLとMashup環境 2014/09/13 42
青山学院大 松村冬子氏の資料より
SPARQLエンドポイント
• 相模原市の小・中学校など(SparqlEPCU)
– http://lodcu.cs.chubu.ac.jp/SparqlEPCU/project.jsp?proj
ectID=sagamihara_school
• DBpedia Japanese(日本語WikipediaのLOD)
– http://ja.dbpedia.org/sparql
• LODAC Museum(国内の博物館情報のLOD)
– http://lod.ac/sparql
• LODAC Species(生物多様性情報のLOD)
– http://lod.ac/species/sparql
SPARQLとMashup環境 2014/09/13 43
http://uedayou.net/sparql-
examples/sgvizler/sgvizler-sample.html
可視化
SPARQLとMashup環境 2014/09/13 44
• Timeliner
http://uedayou.net/SPARQLTimeliner/university/
• Gephi
http://uedayou.net/sparql-examples/sgvizler/sgvizler-sample.html
上田洋氏資料から
Thank you
SPARQLとMashup環境 2014/09/13 45
この資料では、松村冬子さん、上田洋さんの
slideshare資料の一部を参考に使わせて頂きました。

More Related Content

PPTX
プログラムなしで公開できるLODアプリケーション
PDF
SPARQLでマッシュアップ -LOD活用のための技術紹介-
PDF
サーバサイドコース Sinatra + SPARQL 編
PDF
SPARQL Timelinerの使い方
PDF
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
PDF
Sparql epcuでlodをマッシュアップ
PDF
オープンデータと Linked Open Data(LOD)@神戸R
PPTX
SPARQL作成ツール SPARQL Creator
プログラムなしで公開できるLODアプリケーション
SPARQLでマッシュアップ -LOD活用のための技術紹介-
サーバサイドコース Sinatra + SPARQL 編
SPARQL Timelinerの使い方
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
Sparql epcuでlodをマッシュアップ
オープンデータと Linked Open Data(LOD)@神戸R
SPARQL作成ツール SPARQL Creator

What's hot (20)

PDF
お手軽Linked Open Data可視化ツールSPARQL Timeliner
PDF
汎用Web API“SPARQL”でオープンデータ検索
PDF
SparqlEPCUが提供するlod開発プラットフォーム
PDF
SPARQLとMashup環境 (年岡先生)
KEY
第5回LinkedData勉強会@yayamamo
PDF
SPARQLアプリケーション開発
PDF
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回
PDF
Linked Open Data 作成支援ツールの紹介
PDF
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
PDF
LOD連続講義 第5回「LODの作り方・使い方」
PDF
大阪市オープンデータポータルAPI(SPARQL)勉強会
PDF
Linked Open Data勉強会2020 前編:LODの基礎・作成・公開
PDF
SPARQLでオープンデータ活用!
PDF
LODを閲覧する/作成する
PDF
RDF/OWLの概要及びOSS実装、及び活用イメージについて
PDF
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
PDF
Rdf入門handout
PDF
LODを使ってみよう!
PDF
Ogura LOD at code4lib_20180901
お手軽Linked Open Data可視化ツールSPARQL Timeliner
汎用Web API“SPARQL”でオープンデータ検索
SparqlEPCUが提供するlod開発プラットフォーム
SPARQLとMashup環境 (年岡先生)
第5回LinkedData勉強会@yayamamo
SPARQLアプリケーション開発
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回
Linked Open Data 作成支援ツールの紹介
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
LOD連続講義 第5回「LODの作り方・使い方」
大阪市オープンデータポータルAPI(SPARQL)勉強会
Linked Open Data勉強会2020 前編:LODの基礎・作成・公開
SPARQLでオープンデータ活用!
LODを閲覧する/作成する
RDF/OWLの概要及びOSS実装、及び活用イメージについて
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
Rdf入門handout
LODを使ってみよう!
Ogura LOD at code4lib_20180901
Ad

Similar to SPARQLとMashup環境 (20)

PDF
Linked Open Data(LOD)の基本理念と基盤となる技術
PPTX
SPARQLによるLODの検索@第4回LODとオントロジー勉強会-
PDF
d3sparql.js
PDF
ナレッジグラフ/LOD利用技術の入門(前編)
PDF
GraphQL超入門(座学).pdf
PPTX
Silkについて
PPTX
RDF をプロパティグラフに 変換するマッピング言語 G2GML
PPTX
JapanDreamin24_はじめてのGraphQL×LWC.pptx
PPTX
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
PDF
QA回答.pdf
PPTX
Apache Sparkを使った感情極性分析
PDF
Linked Open Data(LOD)の基本的な使い方
PDF
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
PDF
セマンテックウェブとRDFDB
PDF
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システム
PDF
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
PDF
GraphQL入門 (AWS AppSync)
PDF
GraphQL入門+診断観点
PDF
GraphQLはどんな時に使うか
PDF
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
Linked Open Data(LOD)の基本理念と基盤となる技術
SPARQLによるLODの検索@第4回LODとオントロジー勉強会-
d3sparql.js
ナレッジグラフ/LOD利用技術の入門(前編)
GraphQL超入門(座学).pdf
Silkについて
RDF をプロパティグラフに 変換するマッピング言語 G2GML
JapanDreamin24_はじめてのGraphQL×LWC.pptx
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
QA回答.pdf
Apache Sparkを使った感情極性分析
Linked Open Data(LOD)の基本的な使い方
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
セマンテックウェブとRDFDB
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システム
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
GraphQL入門 (AWS AppSync)
GraphQL入門+診断観点
GraphQLはどんな時に使うか
Linked Open Dataによる博物館情報および地域情報の連携活用(じんもんこん2011)
Ad

SPARQLとMashup環境