Web Information System Design
No.10 セマンティックWebアプリケーションアークテクチャ
萩野 達也
セマンティック
Webとは
データの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/dis15dc:title
資源
プロパティ
値
主語
述語
目的語
Web情報システム構成法
この資源(この授業のWebページ)のタイトルは「Web情報システム構成法」である.
(前回)
分散した情報の統合
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
Linked Data と Linked Open Data(LOD)
オープンデータ
誰でもが利用して良いようにデータを
公開
する
政府のデータ,製品情報,など
Linked Data
事物(資源)の識別子としての
URI
を使う
データ記述の標準フォーマットである
RDF
を使う
共通のURI
を使うことでデータ同士を
リンク
して活用する
Linked Open Data
Linked Open Data(LOD)
Semantic Webアプリケーションのアーキテクチャ
システムの構成要素
RDFパーサ(解析)/シリアライザ(公開)
RDFデータストア
RDFのクエリエンジン
コンバータ/スクレイパ
上記を利用したアプリケーション
※ツールの多くは無償で入手できる
アーキテクチャ(
1)
9
データベースを用いた一般
的なアプリケーションのアー
キテクチャ
RDFアプリケーションのアー
キテクチャ
データベース
データベースエンジン (クエリエンジン)アプリケーション
RDFデータストア
データベースエンジン (クエリエンジン)表
グラフデータ
アプリケーション
アーキテクチャ(2)
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/dis15dc:title
Web情報システム構成法
萩野達也
dc:creator
以下のグラフ構造を持つデータをテ
キストで表現してみよう
N-Triplesによる表現
最も単純な形式
三つ組を直接書く
三つ組ごとに:リソース,プロパティ,値の順に並べて,「.」(ピリオド)で終
わる
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
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
<?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/dis13dc: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 "萩野達也" ;
RDF Validator
W3C RDF Validation Service
http://www.w3.org/RDF/Validator/
RDF/XMLのチェックと視覚化
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="藤沢太郎"
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パーサによるグラフ構造の解析
※シリアライザは逆にRDFグラフ構造のデータモデル からテキストを生成RDFのデータストア/データベース
19
格納されたRDFデータは統合される
SPARQLなどのクエリ言語により検索す
ることが可能になる
複数のデータ集合の統合が基本機能とし
て備わっている
リレーショナルデータベースの場合,通常,
アプリケーション側でデータベースに格納さ
れている形式に応じて問い合わせを行ない,
結果をまとめる処理を行っている
RDFデータストアの場合,すべてのデータ
はRDF
オープンソースから製品までさまざまな
データストアが公開されている
データベースエンジン (クエリエンジン)アプリケーション
RDFデータス トアで統合し て扱われるクエリ
RDFのクエリ言語とは
セマンティック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クエリ仕様(複数マッチング)
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 ?priceWHERE { ?x ns:price ?price . FILTER (?price < 30.5) ?x dc:title ?title . }
title
price
SPARQLクエリ仕様(オプショナルマッチング)
@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クエリを発行して動作を確認してみたい
コンバータ/スクレイパ
コンバータ
別の形式のデータを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ページに埋め込まれた構造化データの活用
構造化データが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