Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open...
Transcript of Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open...
Web Information System Design No.10 セマンティックWebアプリケーションアークテクチャ
萩野 達也
1
セマンティックWebとは
2
データのWeb 「文書のWeb」から「データのWeb」へ
メタデータ
メタデータ = 文書やデータに関するデータ 計算機可読なメタデータをアプリケーションで共有する データの共有や統合を可能にする
文書・データ
メタデータ
about
理解
利用
アプリケーション
W3CセマンティックWebアクティビティ http://www.w3.org/2001/sw/ 「セマンティックWebはアプリケーションや組織などの境界を越えてデータを共有し再利用することのできる共通のフレームワークを提供する」
(前回)
RDF
3
Resource Description Framework データを三つ組みとして表す
三つ組み(Triple) 資源 - プロパティ - 値 主語 - 述語 - 目的語 有向グラフ
http://www.sfc.keio.ac.jp/~hagino/dis15 dc:title
資源 プロパティ 値
主語 述語 目的語
Web情報システム構成法
この資源(この授業のWebページ)のタイトルは「Web情報システム構成法」である.
(前回)
分散した情報の統合
4
RDFのグラフ構造のデータモデルにより異なるデータを統合して扱うことができる
foaf:knows
foaf:mbox
foaf:name 萩野 達也
mailto:hagino@sfc...
http://www.keio.ac...
foaf:workplaceHomepage
mailto:hsato@sfc...
佐藤 宏之
http://www.sfc.keio.ac.jp/~hagino/dis15
Web情報システム構成法
foaf:mbox
foaf:name
dc:title
dc:creator
rdf:type
foaf:Person
rdf:type
シラバスに関するRDFデータ FOAF(Friend of a Friend)のデータ
(前回)
今回の内容
セマンティックWebアプリケーションアーキテクチャ
Web上に分散したデータをいかにして集めるのか
どのようにして統合するのか
どのようにして活用するのか
Keywords
Linked Open Data (LOD)
情報統合
データ統合
SPARQL
5
Linked Data と Linked Open Data(LOD)
6
オープンデータ
誰でもが利用して良いようにデータを公開する
政府のデータ,製品情報,など
Linked Data
事物(資源)の識別子としてのURIを使う
データ記述の標準フォーマットであるRDFを使う
共通のURIを使うことでデータ同士をリンクして活用する
Linked Open Data
オープンなライセンスの下で提供するLinked Data
Linked Open Data(LOD)
7 Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/
Semantic Webアプリケーションのアーキテクチャ
8
システムの構成要素
RDFパーサ(解析)/シリアライザ(公開)
RDFデータストア
RDFのクエリエンジン
コンバータ/スクレイパ
上記を利用したアプリケーション
※ツールの多くは無償で入手できる
アーキテクチャ(1)
9
データベースを用いた一般的なアプリケーションのアーキテクチャ
RDFアプリケーションのアーキテクチャ
データベース
データベースエンジン (クエリエンジン)
アプリケーション
RDFデータストア
データベースエンジン (クエリエンジン)
表 グラフデータ
アプリケーション
アーキテクチャ(2)
10
RDF ファイル
Webページ、エクセル表、
既存のデータベースなど
データベースエンジン (クエリエンジン)
アプリケーション
RDFデータストアで統合して扱われる
シリアライザ
パーサ RDF ファイル
RDFデータストア
データベースエンジン (クエリエンジン)
コンバータ/ スクレイパ
既存のデータを取り込む
ファイルの形でも他のシステムにデータを渡せる
別システム
1つのデータストアにアクセスして得られたデータに関連するデータを別のデータ
ストアにアクセスして参照
RDF ファイル
RDFのテキスト形式は複数ある
11
テキスト形式による表現(シリアライズ) N-Triples
Notation3 (N3)
RDF/XML
Turtle
RDF/JSON
…
http://web.sfc.keio.ac.jp/~hagino/dis15
dc:title Web情報システム構成法
萩野達也 dc:creator
以下のグラフ構造を持つデータをテキストで表現してみよう
N-Triplesによる表現
12
最も単純な形式
三つ組を直接書く
三つ組ごとに:リソース,プロパティ,値の順に並べて,「.」(ピリオド)で終わる
URIは<>で囲み,リテラルは" "で囲む
<http://web.sfc.keio.ac.jp/~hagino/dis15> <http://purl.org/dc/terms/title> "Web情報システム構成法" .
<http://web.sfc.keio.ac.jp/~hagino/dis15> <http://purl.org/dc/terms/creator> "萩野達也" .
参考:RDF Test Cases
3. N-Triples
http://www.w3.org/TR/rdf-testcases/#ntriples
N3による表現
Notation 3 RDF (略してN3)
N-Triplesの明快さを維持しつつ簡略化できる
TurtleはN3のサブセット
13
※Turtleでも同様
See:Tim Berners-Lee, Primer: Getting into RDF & Semantic Web using N3
http://www.w3.org/2000/10/swap/Primer.html
神崎正英, Notation3:RDFの簡易表記から論理表現まで
http://www.kanzaki.com/docs/sw/n3.html
@prefix dc: <http://purl.org/dc/terms/> .
<http://web.sfc.keio.ac.jp/~hagino/dis15> dc:title "Web情報システム構成法" ;
dc:creator "萩野達也" .
RDF/XMLによる表現
参考:RDF/XML Syntax Specification (Revised)
http://www.w3.org/TR/REC-rdf-syntax/
神崎正英, RDF -- リソース表現のフレームワーク
http://www.kanzaki.com/docs/sw/rdf-model.html
14
<?xml version="1.0” encoding=“utf-8”?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/terms/">
<rdf:Description
rdf:about="http://web.sfc.keio.ac.jp/~hagino/dis15">
<dc:title>Web情報システム構成法</dc:title>
<dc:creator>萩野達也</dc:creator>
</rdf:Description>
</rdf:RDF>
ブランクノード
15
グラフ表現においてURIが与えられないノード 与えない方が表現の都合が良いことがある システムが自動的に一意的なURIを割り当てる
匿名ノードとも呼ばれる
http://web.sfc.keio.ac.jp/~hagino/dis13
dc:title 分散情報システム構成法
萩野達也 foaf:name
foaf:mbox mailto:hagino@sfc...
dc:creator
N3で表現 (Turtleでも同様)
※ブランクノードを主語とするトリプルは、主語を略して[述語 目的語]と表記することができる
@prefix dc: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://web.sfc.keio.ac.jp/~hagino/dis15>
dc:title "Web情報システム構成法" ;
dc:creator [ foaf:name "萩野達也" ;
foaf:mbox <mailto:[email protected]> ] .
RDF Validator
W3C RDF Validation Service http://www.w3.org/RDF/Validator/
RDF/XMLのチェックと視覚化 http://www.kanzaki.com/works/2005/rap/graph-check
16
RDF Validation Service
17
Webブラウザから利用可能
入力 直接
ファイル
URL
出力 解析結果
三つ組
グラフ
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://example.jpschema/">
<rdf:Description rdf:about="http://example.jp/doc.html">
<s:creator>
<rdf:Description>
<s:name>藤沢太郎</s:name>
<s:Email>taro@example...</s:Email>
</rdf:Description>
</s:creator>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://example.jp/schema/">
<rdf:Description rdf:about="http://example.jp/doc.html">
<s:creator s:name="藤沢太郎" s:Email="taro@example..." />
</rdf:Description>
</rdf:RDF>
rdf:RDF
rdf:Description
rdf:about=“…doc.html”
s:creator
rdf:Description
s:name
s:Email
s:creator
s:name="藤沢太郎"
s:Email="taro@example..."
XMLパーサによる解析(ツ
リー構造のデータモデル)
RDFパーサによる解析 (グラフ構造のデータモデル)
…doc.html
藤沢太郎
taro@example...
藤沢太郎 taro@example...
s:name
s:Email
s:creator
…doc.html
藤沢太郎 taro@example...
s:name s:Email
s:creator rdf:RDF
rdf:Description
rdf:about=“…doc.html”
RDFパーサにかけると両者が
同じ意味を持っていることを
機械が判別できる XMLパーサにかけただけだと、
要素の値や親子関係、属性の値を
抽出することができるが、両者が同じ意味を
持っているということを機械が判別できない
同じ意味を異なる表現で表した
XMLで記述されたRDF
(a) fujisawa.rdf
(b) fujisawa2.rdf
RDFパーサによるグラフ構造の解析
18
※シリアライザは逆にRDFグラフ構造のデータモデルからテキストを生成
RDFのデータストア/データベース
19
格納されたRDFデータは統合される
SPARQLなどのクエリ言語により検索することが可能になる 複数のデータ集合の統合が基本機能として備わっている
リレーショナルデータベースの場合,通常,アプリケーション側でデータベースに格納されている形式に応じて問い合わせを行ない,結果をまとめる処理を行っている
RDFデータストアの場合,すべてのデータはRDF
オープンソースから製品までさまざまなデータストアが公開されている
データベースエンジン (クエリエンジン)
アプリケーション
RDFデータストアで統合して扱われる
クエリ
RDFのクエリ言語とは
20
セマンティックWebのアプリケーションで利用されるRDFのクエリエンジンへのアクセス(入出力)を規定 データベースで管理されるグラフ構造のRDFデータからURIやリテラル値などの情報やサブグラフを取得
RDFクエリエンジン
(セマンティックWebのミドルウェア)
アプリケーションプログラム
RDFデータベース
API http://www.example... /swbook
http://www.example... /swbook セマンティックWeb入門
dc:title
SELECT ?title
WHERE
dc:title
dc:creator 藤沢太郎
?title
クエリとデータベース中のRDFのグラフ構造
がマッチ
クエリの結果
title セマンティックWeb入門
変数titleの値としてリテラル値:セマンティックWeb
入門が返される
SPARQL
21
SPARQL Protocol and RDF Query Language
グラフベースのクエリ言語(トリプルパターンマッチング)
グラフ
(RDFデータベース内のデータ)
グラフパターン
(クエリ)
who whom addrm
_:1 _:2 "[email protected]"
クエリ結果
(グラフパターンの変数 who,whom,addrmの値を提示)
SPARQLクエリ仕様(複数マッチング)
22
SELECT節 値を取得したい変数の名前を記述
WHERE節 変数を含んだグラフパターン(トリプルパターン)
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Johnny Lee Outlaw" .
_:a foaf:mbox <mailto:[email protected]> .
_:b foaf:name "Peter Goodguy" .
_:b foaf:mbox <mailto:[email protected]> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name, ?mbox
WHERE
{ ?x foaf:name ?name . ?x foaf:box ?mbox }
データ
クエリ
name mbox
"Johnny Lee Outlaw" <mailto:[email protected]>
"Peter Goodguy" <mailto:[email protected]> クエリ結果
変数
トリプルパターン
SPARQLクエリ仕様(値の制約)
23
@prefix dc: <http://purl.org/dc/terms/> .
@prefix : <http://example.org/book/> .
@prefix ns: <http://example.org/ns#> .
:book1 dc:title "SPARQL Tutorial" .
:book1 ns:price 42 .
:book2 dc:title "The Semantic Web" .
:book2 ns:price 23 .
データ
クエリ
クエリ結果
値の制約(priceの値が30.5未満
のパターンのみマッチ)
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX ns: <http://example.org/ns#>
SELECT ?title ?price
WHERE { ?x ns:price ?price .
FILTER (?price < 30.5)
?x dc:title ?title . }
title price
"The Semantic Web" 23
SPARQLクエリ仕様(オプショナルマッチング)
24
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
_:a rdf:type foaf:Person .
_:a foaf:name "Alice" .
_:a foaf:mbox <mailto:[email protected]> .
_:b rdf:type foaf:Person .
_:b foaf:name "Bob" .
データ
クエリ
クエリ結果
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE { ?x foaf:name ?name .
OPTIONAL { ?x foaf:mbox ?mbox }
} オプショナルパターン(このパターンがマッチしなくても結果は得られる)
name mbox
"Alice" <mailto:[email protected]>
"Bob"
DBpediaのSPARQLエンドポイント
25
DBpedia Wikipediaから構造化データを抽出しWeb上で使えるようにしたもの
http://dbpedia.org/
DBpediaデータにクエリを発行できるSPARQLエンドポイント http://dbpedia.org/sparql
日本語版のDBpediaも公開された http://ja.dbpedia.org/
実際にSPARQLクエリを発行して動作を確認してみたい
コンバータ/スクレイパ
26
コンバータ
別の形式のデータをRDFに変換するツール
例:エクセルの表データ,関係データベース
スクレイパ
構造化された情報をWebページから抽出するツール
構造化データをWebページに埋め込む
27
構造化データ(メタデータ)をWebページに埋め込むための仕様 RDFa
http://www.w3.org/TR/rdfa-core/
Microdata http://www.w3.org/html/wg/drafts/microdata/master/
microformats http://microformats.org/
John knows
<a about="mailto:[email protected]"
rel="foaf:knows"
href="mailto:[email protected]">Sue</a>.
HTMLに左記のようなRDFa
の記述が埋め込まれている場合
John knows Sue.
Webブラウザで人間が見ると
<mailto:[email protected]> foaf:knows <mailto:[email protected]> .
RDFaの仕様を解釈できる機械は以下のメタデータを読み取ることができる
Webページに埋め込まれた構造化データの活用
28
構造化データがWebページに記述されていると、ページを参照したアプリケーション(機械)がそれを利用できる
Googleは収集したWebページの構造化データを読み取っている 検索結果に表示する文字列(スニペット)といっしょに適切なプロパティ(属性)情報を表示させている
リッチ スニペット(microdata,microformats,RDFa,データ ハイライター) http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=9
9170&topic=1088472&ctx=topic
構造化データテストツールを用いると、Webページに埋め込まれている構造化データを確認できる http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=1
73839&topic=1088473&ctx=topic
Semantic Webのアーキテクチャに基づく
アプリケーション開発
29
Semantic Web Development Tools
http://www.w3.org/2001/sw/wiki/Tools
Semantic Webのアーキテクチャを支えるパーサやデータストア、また開発環境に関連したツールなどの情報がまとめられている
まとめ
30
Linked Open Data
RDFのデータをオープンなライセンスの下に公開し、異なるデータ同士をリンクして活用する試みとして注目を集める
セマンティックWebアーキテクチャ
RDFパーサ
RDFデータストア
SPARQL検索