第4回 aiツール入門講座 linked open data入門
TRANSCRIPT
第4回AIツール入門講座Linked Open Data入門
(共)情報・システム研究機構加藤文彦
2013-07-05
1
加藤 文彦 (かとうふみひろ)
• (共)情報・システム研究機構 特任研究員
• LODACプロジェクト
• DBpedia Japanese
• NPO リンクト・オープン・データ・イニシアティブ 理事
• CKAN
• Open DATA METI
• コミュニティ
• Linked Data勉強会
• Linked Open Data チャレンジ Japan
• CKAN日本語
2
ティム・バーナーズ=リーが示す次のウェブ
http://www.ted.com/talks/tim_berners_lee_on_the_next_web.html
オープンデータとマッシュアップで変わる世界
http://www.ted.com/talks/tim_berners_lee_the_year_open_data_went_worldwide.html
Raw Data Now!
3
Linked Data(データのWeb)
Open Data(オープンライセンス)
4
Open Data(オープンライセンス)
Linked Data(データのWeb)
Reuse
5
Open Data
6
Open (Data) License
7
“データやコンテンツがオープンであるというのは,クレジット表示と/またはライセンスの継承をするくらいの条件で,誰もが自由に利用,再利用,再配布できるということである.”
The Open Defini+on -‐ h.p://opendefini+on.org
8
◯ ☓9
Open Government Data
10
11
http://data.gov.uk
12
13
http://www.city.sabae.fukui.jp/pageview.html?id=11552
14
http://datameti.go.jp
15
16
17
18
by DPADM/UMU, OGDCE Toolkit
19
http://spending.jp
20
CKAN• FLOSSのデータポータルソフトウェア
• AGPL v3.0
• http://github.com/okfn/ckan
• Open Knowledge Foundation
• 約50の国や地方自治体等で採用
• Python+JavaScript
• PostgreSQL+SOLR
• API提供
• 豊富な拡張
21
http://datahub.io
22
http://data.linkedopendata.jp
23
Linked Data
24
25
Web技術でデータを公開・共有するための方法論
26
データのWeb
27
Webの原則1.IRIをHTML文書の識別
子として使う
2.IRIにはhttpスキームを使う
3.IRIを見るとHTML文書が返ってくる
4.HTML文書には他のIRIへのリンクがある
28
Linked Dataの原則1.IRIをモノ(Thing)の識
別子として使う
2.IRIにはhttpスキームを使う
3.IRIを見るとモノの構造化データが返ってくる
4.データには他のIRIへの型付リンクがある
子供
執筆
発行日
誕生日出版社
所在地
"Things, not Strings" by Google
29
30
作品
作品
書誌
31
友人
在住
人物
32
舞台
観光地
観光地名前の由来
観光
33
舞台
観光地
観光地名前の由来
作品
作品
友人
在住
書誌人物
観光
34
Reuse
Discovery Integration
ID
35
Reuse構造化データ
36
IRIID
37
26
38
26
ISO3166-2:JP京都府
工業統計コード生産用機械器具製造業
FC東京阿部 巧
39
26
ISO3166-2:JP京都府
工業統計コード生産用機械器具製造業
FC東京阿部 巧
http://www.iso.org/3166-2/jp/26
http://www.fctokyo.co.jp/players/2013/26http://www.meti.go.jp/industrial-code/26
IDをIRIにすると世界でユニークなIDになる
40
DiscoveryDerefereceable IRI (HTTP)
41
Content-negotiation
•あるリソースに対する表現をHTTPリクエストで折衝する仕組み
•例: JPEGとSVGの画像
43
1. request /resource/Japan
2. return an HTML document for /resource/Japan
http://dbpedia.orgWeb Browser
% curl -ILH 'Accept: text/html' http://dbpedia.org/resource/JapanHTTP/1.1 303 See OtherDate: Thu, 04 Jul 2013 09:30:17 GMTContent-Type: text/html; charset=UTF-8Content-Length: 0Connection: keep-aliveServer: Virtuoso/07.00.3203 (Linux) i686-generic-linux-glibc212-64 VDBAccept-Ranges: bytesLocation: http://dbpedia.org/page/Japan
HTTP/1.1 200 OKDate: Thu, 04 Jul 2013 09:31:07 GMTContent-Type: text/html; charset=UTF-8Content-Length: 2023382Connection: keep-aliveVary: Accept-Encoding.....
44
1. request /resource/Japan
2. return a turtle document for /resource/Japan
http://dbpedia.orgLOD Agent
@prefix yago-res: <http://mpii.de/yago/resource/> .@prefix dbpedia: <http://dbpedia.org/resource/> .yago-res:Japan owl:sameAs dbpedia:Japan .<http://data.nytimes.com/59436095099277148161> owl:sameAs dbpedia:Japan .<http://data.nytimes.com/66220885916538669281> owl:sameAs dbpedia:Japan .@prefix dbpedia-owl: <http://dbpedia.org/ontology/> .dbpedia:Ayumi_Hamasaki dbpedia-owl:hometown dbpedia:Japan ; dbpedia-owl:birthPlace dbpedia:Japan .dbpedia:Nippon_Columbia dbpedia-owl:distributingCompany dbpedia:Japan ; dbpedia-owl:distributingLabel dbpedia:Japan ; dbpedia-owl:country dbpedia:Japan .@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .@prefix yago: <http://dbpedia.org/class/yago/> .dbpedia:Japan rdf:type yago:EastAsianCountries , owl:Thing .@prefix ns6: <http://schema.org/> .dbpedia:Japan rdf:type ns6:Country , yago:CountriesBorderingThePhilippineSea , yago:Empires , yago:IslandCountries , yago:StatesAndTerritoriesEstablishedIn660BC , dbpedia-owl:Country , dbpedia-owl:PopulatedPlace , ns6:Place , yago:CountriesBorderingThePacificOcean .@prefix ns7: <http://umbel.org/umbel/rc/> .dbpedia:Japan rdf:type ns7:Country , ns7:PopulatedPlace , dbpedia-owl:Place , yago:OECDMemberEconomies .
% curl -ILH 'Accept: text/turtle' http://dbpedia.org/resource/JapanHTTP/1.1 303 See OtherDate: Thu, 04 Jul 2013 09:36:52 GMTContent-Type: text/turtle; qs=0.7Content-Length: 0Connection: keep-aliveServer: Virtuoso/07.00.3203 (Linux) i686-generic-linux-glibc212-64 VDBTCN: choiceVary: negotiate,acceptLink: <http://mementoarchive.lanl.gov/dbpedia/timegate/http://dbpedia.org/resource/Japan>; rel="timegate"Location: http://dbpedia.org/data/Japan.ttl
HTTP/1.1 200 OKDate: Thu, 04 Jul 2013 09:36:52 GMTContent-Type: text/turtle; charset=UTF-8Content-Length: 1967774Connection: keep-alive......
45
“Cool URIs”• 実体とその表現のIRIも分離
• 2つの代表的なソリューション
• 303 See Other
• 実体IRIを参照したときに適切なIRIへ303でリダイレクトする
• ハッシュIRI
• 実体を’#’付きのIRI
• エージェントがアクセスするときには’#’以下が取れる
46
IntegrationIRI + 型付リンク
47
ID name tel zipcode prefecture
001 市役所 0778-51-2200 916-8666 福井県
施設データテーブル
48
ID name population
18 福井県 795824
26 京都府 2623924
ID name tel zipcode prefecture
001 市役所 0778-51-2200 916-8666 18
施設データテーブル
都道府県データテーブル
IDでjoin
49
ID name population
http://.../3166/jp/18 福井県 795824
http://.../3166/jp/26 京都府 2623924
ID name tel zipcode prefecture
001 市役所 0778-51-2200 916-8666 http://.../3166/jp/18
IDをhttp IRIにすることで外部から参照される
prefectureのデータ
施設データテーブル
都道府県データテーブル
50
RDF
Discovery Integration
Reuse
全てを含んだグラフデータモデル
ID
51
子供
執筆
発行日
誕生日出版社
所在地
52
子供
執筆
発行日
誕生日出版社
所在地
53
シリアライズ形式• Turtle (N3)
• JSON-LD
• RDFa
• Microdata
• RDF/XML
• TriX
• TriG
• ......
54
57
https://developers.google.com/gmail/schemas/reference/formats/json-ld
58
1. オープンライセンス
2. 構造化データ
3. オープンな形式
4. IRIによる識別 / W3C標準
5. 他データへのリンク
Linked Open Data
60
As of September 2011
MusicBrainz
(zitgist)
P20
Turismo de
Zaragoza
yovisto
Yahoo! Geo
Planet
YAGO
World Fact-book
El ViajeroTourism
WordNet (W3C)
WordNet (VUA)
VIVO UF
VIVO Indiana
VIVO Cornell
VIAF
URIBurner
Sussex Reading
Lists
Plymouth Reading
Lists
UniRef
UniProt
UMBEL
UK Post-codes
legislationdata.gov.uk
Uberblic
UB Mann-heim
TWC LOGD
Twarql
transportdata.gov.
uk
Traffic Scotland
theses.fr
Thesau-rus W
totl.net
Tele-graphis
TCMGeneDIT
TaxonConcept
Open Library (Talis)
tags2con delicious
t4gminfo
Swedish Open
Cultural Heritage
Surge Radio
Sudoc
STW
RAMEAU SH
statisticsdata.gov.
uk
St. Andrews Resource
Lists
ECS South-ampton EPrints
SSW Thesaur
us
SmartLink
Slideshare2RDF
semanticweb.org
SemanticTweet
Semantic XBRL
SWDog Food
Source Code Ecosystem Linked Data
US SEC (rdfabout)
Sears
Scotland Geo-
graphy
ScotlandPupils &Exams
Scholaro-meter
WordNet (RKB
Explorer)
Wiki
UN/LOCODE
Ulm
ECS (RKB
Explorer)
Roma
RISKS
RESEX
RAE2001
Pisa
OS
OAI
NSF
New-castle
LAASKISTI
JISC
IRIT
IEEE
IBM
Eurécom
ERA
ePrints dotAC
DEPLOY
DBLP (RKB
Explorer)
Crime Reports
UK
Course-ware
CORDIS (RKB
Explorer)CiteSeer
Budapest
ACM
riese
Revyu
researchdata.gov.
ukRen. Energy Genera-
tors
referencedata.gov.
uk
Recht-spraak.
nl
RDFohloh
Last.FM (rdfize)
RDF Book
Mashup
Rådata nå!
PSH
Product Types
Ontology
ProductDB
PBAC
Poké-pédia
patentsdata.go
v.uk
OxPoints
Ord-nance Survey
Openly Local
Open Library
OpenCyc
Open Corpo-rates
OpenCalais
OpenEI
Open Election
Data Project
OpenData
Thesau-rus
Ontos News Portal
OGOLOD
JanusAMP
Ocean Drilling Codices
New York
Times
NVD
ntnusc
NTU Resource
Lists
Norwe-gian
MeSH
NDL subjects
ndlna
myExperi-ment
Italian Museums
medu-cator
MARC Codes List
Man-chester Reading
Lists
Lotico
Weather Stations
London Gazette
LOIUS
Linked Open Colors
lobidResources
lobidOrgani-sations
LEM
LinkedMDB
LinkedLCCN
LinkedGeoData
LinkedCT
LinkedUser
FeedbackLOV
Linked Open
Numbers
LODE
Eurostat (OntologyCentral)
Linked EDGAR
(OntologyCentral)
Linked Crunch-
base
lingvoj
Lichfield Spen-ding
LIBRIS
Lexvo
LCSH
DBLP (L3S)
Linked Sensor Data (Kno.e.sis)
Klapp-stuhl-club
Good-win
Family
National Radio-activity
JP
Jamendo (DBtune)
Italian public
schools
ISTAT Immi-gration
iServe
IdRef Sudoc
NSZL Catalog
Hellenic PD
Hellenic FBD
PiedmontAccomo-dations
GovTrack
GovWILD
GoogleArt
wrapper
gnoss
GESIS
GeoWordNet
GeoSpecies
GeoNames
GeoLinkedData
GEMET
GTAA
STITCH
SIDER
Project Guten-berg
MediCare
Euro-stat
(FUB)
EURES
DrugBank
Disea-some
DBLP (FU
Berlin)
DailyMed
CORDIS(FUB)
Freebase
flickr wrappr
Fishes of Texas
Finnish Munici-palities
ChEMBL
FanHubz
EventMedia
EUTC Produc-
tions
Eurostat
Europeana
EUNIS
EU Insti-
tutions
ESD stan-dards
EARTh
Enipedia
Popula-tion (En-AKTing)
NHS(En-
AKTing) Mortality(En-
AKTing)
Energy (En-
AKTing)
Crime(En-
AKTing)
CO2 Emission
(En-AKTing)
EEA
SISVU
education.data.g
ov.uk
ECS South-ampton
ECCO-TCP
GND
Didactalia
DDC Deutsche Bio-
graphie
datadcs
MusicBrainz
(DBTune)
Magna-tune
John Peel
(DBTune)
Classical (DB
Tune)
AudioScrobbler (DBTune)
Last.FM artists
(DBTune)
DBTropes
Portu-guese
DBpedia
dbpedia lite
Greek DBpedia
DBpedia
data-open-ac-uk
SMCJournals
Pokedex
Airports
NASA (Data Incu-bator)
MusicBrainz(Data
Incubator)
Moseley Folk
Metoffice Weather Forecasts
Discogs (Data
Incubator)
Climbing
data.gov.uk intervals
Data Gov.ie
databnf.fr
Cornetto
reegle
Chronic-ling
America
Chem2Bio2RDF
Calames
businessdata.gov.
uk
Bricklink
Brazilian Poli-
ticians
BNB
UniSTS
UniPathway
UniParc
Taxonomy
UniProt(Bio2RDF)
SGD
Reactome
PubMedPub
Chem
PRO-SITE
ProDom
Pfam
PDB
OMIMMGI
KEGG Reaction
KEGG Pathway
KEGG Glycan
KEGG Enzyme
KEGG Drug
KEGG Com-pound
InterPro
HomoloGene
HGNC
Gene Ontology
GeneID
Affy-metrix
bible ontology
BibBase
FTS
BBC Wildlife Finder
BBC Program
mes BBC Music
Alpine Ski
Austria
LOCAH
Amster-dam
Museum
AGROVOC
AEMET
US Census (rdfabout)
Media
Geographic
Publications
Government
Cross-domain
Life sciences
User-generated content
Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/
61
http://datahub.io/dataset?q=&groups=lodcloud
62
http://wiki.dbpedia.org/Internationalization/Chapters
65
http://ja.dbpedia.org
66
http://ja.dbpedia.org/resource/日本
67
68
http://linkedgeodata.org/triplify/node355845257
70
http://browser.linkedgeodata.org/
71
http://dev.isb-sib.ch/projects/uniprot-rdf/
73
75
77
78
SPARQL
79
クエリ言語
• データの検索や操作を行うための言語• データモデルやDBシステムに合わせて設計
• 例: SQL
–データモデル: 関係モデル
–DBシステム: RDBMS
• LODのデータモデル: グラフモデル
80
グラフのクエリ
• グラフの最小単位: 3つ組 (トリプル)
• グラフパターン1. 完全一致
• dbp:東京都 dbp-owl:country dbp:日本 .
2. 変数によるパターンマッチ
• dbp:東京都 dbp-owl:country ?country .
3. 1と2の組み合わせ
dbp:東京都 dbp:日本dbpedia-‐owl:country
81
:Amy :Bob :Cathy
:Dan
:Jim
:Ed
:Kate
:Gil
:Flo
:Hal
:Ian
:Lee:May
:like :like
:like
:like :like
:like
:like
:dislike
:dislike
:dislike :dislike
:dislike
:dislike :dislike
:dislike
好き嫌いグラフ
82
:Amy :Bob :Cathy
:Dan
:Jim
:Ed
:Kate
:Gil
:Flo
:Hal
:Ian
:Lee:May
:like :like
:like
:like :like
:like
:like
:dislike
:dislike
:dislike :dislike
:dislike
:dislike :dislike
:dislike
Amyが好きな人グラフパターン:Amy :like ?person .
83
:Amy :Bob :Cathy
:Dan
:Jim
:Ed
:Kate
:Gil
:Flo
:Hal
:Ian
:Lee:May
:like :like
:like
:like :like
:like
:like
:dislike
:dislike
:dislike :dislike
:dislike
:dislike :dislike
:dislike
“Amyが好きな人”が好きな人グラフパターン:Amy :like ?person1 .?person1 :like ?person2 .
84
SPARQL• LOD用クエリ言語
• SQLのような文法
• データモデル: RDF
• プロトコル: HTTP
• W3C仕様
• 1.1が2013-03-21に勧告
• 11種類の文書
85
RDB
Query
DB
Model RDF Model
SQL
Relational Model
RDF Store
SPARQL
86
SPARQLエンドポイント
• SPARQLクエリを受け付ける場所• SPARQLエンドポイントURI
• プログラムからSPARQLを使うときに指定
• 入力フォームがある場合もあり
87
DBpedia Japanese SPARQLエンドポイント
88
dbp-‐owl:AdministraMveRegiondbp:サイボーグ009
dbp-‐owl:ComicsCreator
dbp:宮城県
dbp:石ノ森章太郎
rdfs:label
rdf:type
rdfs:label
dbp-‐prop:生年
dbp-‐owl:notableWork
dbp-‐owl:award
dbp-‐owl:birthPlace
rdf:type
サイボーグ009
宮城県 foaf:Person
1938石ノ森章太郎
rdf:type
rdfs:labeldbp:村井嘉浩
dbp-‐owl:leaderName
DBpedia Japaneseのグラフ例
dbp:手塚治虫文化賞
dbp-‐owl:Comics
rdf:type
89
dbp-‐owl:AdministraMveRegiondbp:サイボーグ009
dbp-‐owl:ComicsCreator
dbp:宮城県
dbp:石ノ森章太郎
rdfs:label
rdf:type
rdfs:label
dbp-‐prop:生年
dbp-‐owl:notableWork
dbp-‐owl:award
dbp-‐owl:birthPlace
rdf:type
サイボーグ009
宮城県 foaf:Person
1938石ノ森章太郎
rdf:type
rdfs:labeldbp:村井嘉浩
dbp-‐owl:leaderName
dbp:手塚治虫文化賞
dbp-‐owl:Comics
rdf:type
クエリ: 石ノ森章太郎の出身地PREFIX dbp: <hYp://ja.dbpedia.org/resource/>PREFIX dbp-‐owl: <hYp://dbpedia.org/ontology/>
SELECT ?birthPlaceWHERE { dbp:石ノ森章太郎 dbp-‐owl:birthPlace ?birthPlace .
}
90
91
• SELECT: 取得したい変数を指定• SELECT * は全ての変数指定と同等• 結果形式: XML, JSON, CSV, TSV, ...
• WHERE: {}内にグラフパターンの組み合わせを記述• LIMIT: 件数の制限• 100だと1-‐100まで取得• LIMITがない場合は全件取得• 量が多い場合はサーバに負荷をかけるので注意
• PREFIX: URIを短縮して記述するための仕組み• dbp:東京都 = <hYp://ja.dbpedia.org/resource/東京都>
PREFIX dbp: <hYp://ja.dbpedia.org/resource/>PREFIX dbp-‐owl: <hYp://dbpedia.org/ontology/>
SELECT ?birthPlaceWHERE { dbp:石ノ森章太郎 dbp-‐owl:birthPlace ?birthPlace .
}
92
dbp-‐owl:AdministraMveRegiondbp:サイボーグ009
dbp-‐owl:ComicsCreator
dbp:宮城県
dbp:石ノ森章太郎
rdfs:label
rdf:type
rdfs:label
dbp-‐prop:生年
dbp-‐owl:notableWork
dbp-‐owl:award
dbp-‐owl:birthPlace
rdf:type
サイボーグ009
宮城県 foaf:Person
1938石ノ森章太郎
rdf:type
rdfs:labeldbp:村井嘉浩
dbp-‐owl:leaderName
dbp:手塚治虫文化賞
dbp-‐owl:Comics
rdf:type
クエリ: 手塚治虫文化賞を受賞した漫画家PREFIX dbp: <hYp://ja.dbpedia.org/resource/>PREFIX dbp-‐owl: <hYp://dbpedia.org/ontology/>
SELECT ?creatorWHERE { ?creator rdf:type dbp-‐owl:ComicsCreator ; dbp-‐owl:award dbp:手塚治虫文化賞 .
}
93
94
dbp-‐owl:AdministraMveRegiondbp:サイボーグ009
dbp-‐owl:ComicsCreator
dbp:宮城県
dbp:石ノ森章太郎
rdfs:label
rdf:type
rdfs:label
dbp-‐prop:生年
dbp-‐owl:notableWork
dbp-‐owl:award
dbp-‐owl:birthPlace
rdf:type
サイボーグ009
宮城県 foaf:Person
1938
rdf:type
rdfs:labeldbp:村井嘉浩
dbp-‐owl:leaderName
dbp:手塚治虫文化賞
dbp-‐owl:Comics
rdf:type
クエリ: 手塚治虫文化賞を受賞した漫画家の代表的な漫画PREFIX dbp: <hYp://ja.dbpedia.org/resource/>PREFIX dbp-‐owl: <hYp://dbpedia.org/ontology/>
SELECT ?creatorName ?comicNameWHERE { ?creator a dbp-‐owl:ComicsCreator ; dbp-‐owl:award dbp:手塚治虫文化賞 ;
dbp-‐owl:notableWork ?comic ; rdfs:label ?creatorName . ?comic a dbp-‐owl:Comics ; rdfs:label ?comicName .}
石ノ森章太郎
95
96
SPARQL 1.0• データ取得
• SELECT
• ASK
• DESCRIBE
• CONSTRUCT
• ほぼどこでも使える
97
SELECT
例) 任意の3つ組を100件取得
SELECT ?s ?p ?o
WHERE {
?s ?p ?o .
}
LIMIT 100
98
ASK• ASK: グラフパターンにマッチするものがあるか• 結果yes か no
例) 石ノ森章太郎の出身地が含まれているかどうかPREFIX dbp: <hYp://ja.dbpedia.org/resource/>PREFIX dbp-‐owl: <hYp://dbpedia.org/ontology/>
ASK WHERE { dbp:石ノ森章太郎 dbp-‐owl:birthPlace ?birthPlace .
}
99
DESCRIBE• DESCRIBE: リソースに関するグラフを取得• 実装依存• 多くの場合は対象リソースをsubjectかobjectに含む3つ組の集合• 結果形式: RDF/XML, Turtle, …
例) http://ja.dbpedia.org/resource/横浜市に関するグラフを取得DESCRIBE <http://ja.dbpedia.org/resource/横浜市>
100
CONSTRUCT• CONSTRUCT: 新しいグラフを作成して取得• 結果形式: RDF/XML, Turtle, …
例) foaf:nameプロパティの3つ組をそのまま取得PREFIX foaf: <hYp://xmlns.com/foaf/0.1/>
CONSTRUCT { ?s foaf:name ?o .}WHERE { ?s foaf:name ?o .}
101
Named Graph• 3つ組の集合を区別したいという要求
• データソースやファイルの違い
• Triple(3つ組)ではなくQuad(4つ組)
102
Named Graphの例
PREFIX dcndl: hYp://ndl.go.jp/dcndl/terms/>PREFIX rdfs: <hYp://www.w3.org/2000/01/rdf-‐schema#>PREFIX dc: <hYp://purl.org/dc/terms/>SELECT DISTINCT *WHERE { GRAPH ?g { <hYp://lod.ac/species/Papilio_xuthus> ?p ?o . } ?g dc:source ?source . ?source dcndl:ediMon ?ediMon ; dc:publisher/rdfs:label ?publisher .}
103
SPARQL 1.1• データ管理
• 作成・更新・削除用句
• INSERT, UPDATE, DELETE, LOAD, DROP
• サービス記述
• Graph Store HTTP Protocol
• 結果形式の追加: JSON, CSV, TSV
• 様々な追加機能
• プロパティパス,集約,条件,数値関数,文字列関数,サブクエリ,Federatedクエリなど
• 実装の差
• 最新の実装だと大分カバーされている
• 実働中のエンドポイントは差あり
• 特にFederatedクエリやBINDあたりは使えないところも多い
104
プロパティパス
•通常の3つ組パターン: ?s ?p ?o
• ?oの省略や?pの繰り返し,?pの逆向き等を記述可能
PREFIX dbp: <hYp://ja.dbpedia.org/resource/>PREFIX dbp-‐owl: <hYp://dbpedia.org/ontology/>
SELECT ?creatorName ?comicNameWHERE { ?creator dbp-‐owl:notableWork/rdfs:label ?comicName .}
105
プロパティパスの例
•?s foaf:knows/foaf:knows ?o
• ?s foaf:knows+ ?o
• ?s ^foaf:knows ?o
• ?s foaf:name|rdfs:label ?o
106
集約• COUNT: 個数
• SUM: 合計
• AVG: 平均
• MIN: 最小値
• MAX: 最大値
• GROUP BY:
107
COUNT
例) 森薫リソースのオブジェクトの数
SELECT (COUNT(?o) AS ?count)WHERE { <hYp://dbpedia.org/resource/Kaoru_Mori> ?p ?o .}
108
GROUP BY例) クラス毎のインスタンスの数上位100件を降順
SELECT ?class (COUNT(?instance) AS ?noOfInstances)WHERE { ?instance a ?class .}GROUP BY ?classORDER BY DESC(?noOfInstances)LIMIT 100
109
サブクエリ例) クラス毎のインスタンスの数の平均
SELECT (AVG(?noOfInstances) AS ?avg)WHERE { { SELECT ?class (COUNT(?instance) AS ?noOfInstances) WHERE { ?instance a ?class . } GROUP BY ?class }}
110
Federatedクエリ• サブクエリの延長
• SERVICE句
• クエリを直接投げたエンドポイント以外を指定してクエリを投げられる
• 2ヶ所以上のSPARQLエンドポイントに対してクエリを発行して自動的に結果を結合
• まだ使えるエンドポイントが限られるし相互運用性も怪しいがSPARQLのパワフルさの象徴の一つ
111
SPARQL Endpointリスト
• http://datahub.io/dataset?q=&res_format=api%2Fsparql
• http://labs.mondeca.com/sparqlEndpointsStatus/
112
http://datahub.io/dataset?q=&res_format=api%2Fsparql
113
http://labs.mondeca.com/sparqlEndpointsStatus/114
http://lod.ac/apps/lodac_location/
115
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT DISTINCT ?link ?title ?lat ?long WHERE { ?link rdfs:label ?title; geo:lat ?lat; geo:long ?long . FILTER ( ?lat > #{sw_lat} && ?lat < #{ne_lat} && ?long > #{sw_long} && ?long < #{ne_long} && lang(?title) = "ja" )}
116
http://lod.ac/apps/yas
117
118
119
© 2013 Scholex co.,ltd. and ATR Creative Inc. © 2013 ATR Creative Inc., Linked Open Data Initiative
120
Tool
121
ライブラリ
122
RDFライブラリ• Java: Jena,
Sesame
• C: Redland
• C#: dotNetRDF
• Ruby: RDF.rb
• PHP: ARC2, Graphite
• Python: rdflib
• Perl: PerlRDF
• JavaScript: rdfQuery, rdfstore-js
• ....http://www.w3.org/2001/sw/wiki/Tools参照
123
SPARQLクライアントライブラリ
• Ruby: sparql
• Python: SPARQLWrapper
• Java: ARQ
• C: Rasqal
• R: SPARQL
• Haskell: hsparql
• 等々
• http://linkeddata.jp/wiki/ツール
• http://www.w3.org/wiki/SparqlImplementations
124
sparql - RDF.rb
$ gem install sparql
125
Querying a SPARQL Endpoint
1 #!/usr/bin/env ruby 2 # -*- coding: utf-8 -*- 3 4 require 'linkeddata' 5 6 client = SPARQL::Client.new("http://dbpedia.org/sparql") 7 8 query = """SELECT ?o 9 WHERE {10 <http://dbpedia.org/resource/Daejeon> <http://dbpedia.org/ontology/country> ?o .11 }"""12 13 client.query(query).each do |solution|14 puts solution[:o]15 end
126
R SPARQL
> install.packages(“SPARQL”)
127
> library(SPARQL)> endpoint <- 'http://dbpedia.org/sparql'> q <- "SELECT ?class (count(?instance) AS ?noOfInstances)WHERE { ?instance a ?class .}GROUP BY ?classORDER BY DESC(?noOfInstances)LIMIT 10"> res <- SPARQL(endpoint, q)$results> pie(res$noOfInstances, label=res$class)
128
RDB
Query
DB
Model RDF Model
SQL
Relational Model
RDF Store
SPARQL
129
RDF Store• TripleStore /
QuadStore / Graph DB
• SPARQLエンドポイント
• オプション
• RDFS/OWL Inference
• Full text indexing
• Clustering• See http://en.wikipedia.org/wiki/
Triplestore
Bigdata®
130
http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/
131
https://github.com/openlink/virtuoso-opensource
132
Virtuoso Open Source• http://virtuoso.openlinksw.com/dataspace/dav/wiki/
Main/
• バイナリとソースあり
• ソースからインストール$ tar xvzf virtuoso-opensource-6.1.6.tar.gz
$ cd virtuoso-opensource-6.1.6
$ ./configure
$ make
$ make install
$ /usr/local/virtuoso-opensource/bin/virtuoso-t +configfile /usr/local/virtuoso-opensource/var/lib/virtuoso/db/virtuoso.ini
133
http://localhost:8890/conductor/
134
http://localhost:8890/conductor/
135
136
137
Sgvizler• Javascript/jQueryの可視化ライブラリ
• https://code.google.com/p/sgvizler/
• 基本的にSPARQL埋め込むだけ
• 主にGoogle Visualization API
• 安定版は0.5
• HEADは大分変更があるので注意
139
140
使い方
•div要素に埋め込む
•直接Javascriptを書く
•クエリフォームから入力する
141
OpenRefine• Freebase Gridworks, GoogleRefine
• データと遊ぶためのツール (一部要拡張)
• インポート形式: *SV, Excel, JSON, XML, RDF/XML Google Data(Spreadsheet, Fusion Table)
• エクスポート形式: *SV, HTML, Excel, ODF Spreadsheet, MQL, RDF/XML, RDF/Turtle
• アップロード: Freebase, CKAN
• ビュアー: ファセット, フィルター,フラグ
• 編集履歴
• スクリプト: GREL
• データ変換
• データ公開
• 様々な拡張
• Reconciliation
142
Reconciliation• ラベル(と付加情報)にマッチ
する潜在的なエンティティリストを推薦
• Apple社 vs フルーツのapple vs New York City
• pathやURI
• サービス
• Freebase
• Reconciliation API
• SPARQL (要RDFRefine)
143
144
•ツール・ライブラリまとめhYp://linkeddata.jp/wiki/ツール
•SPARQLクエリ例hYp://goo.gl/bPSHp
•RDF.rbの資料hYp://www.slideshare.net/fumihiro/programming-‐with-‐lod
145
146