Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open...

30
Web Information System Design No.10 セマンティックWebアプリケーションアークテクチャ 萩野 達也 1

Transcript of Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open...

Page 1: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

Web Information System Design No.10 セマンティックWebアプリケーションアークテクチャ

萩野 達也

1

Page 2: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

セマンティックWebとは

2

データのWeb 「文書のWeb」から「データのWeb」へ

メタデータ

メタデータ = 文書やデータに関するデータ 計算機可読なメタデータをアプリケーションで共有する データの共有や統合を可能にする

文書・データ

メタデータ

about

理解

利用

アプリケーション

W3CセマンティックWebアクティビティ http://www.w3.org/2001/sw/ 「セマンティックWebはアプリケーションや組織などの境界を越えてデータを共有し再利用することのできる共通のフレームワークを提供する」

(前回)

Page 3: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

RDF

3

Resource Description Framework データを三つ組みとして表す

三つ組み(Triple) 資源 - プロパティ - 値 主語 - 述語 - 目的語 有向グラフ

http://www.sfc.keio.ac.jp/~hagino/dis15 dc:title

資源 プロパティ 値

主語 述語 目的語

Web情報システム構成法

この資源(この授業のWebページ)のタイトルは「Web情報システム構成法」である.

(前回)

Page 4: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

分散した情報の統合

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)のデータ

(前回)

Page 5: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

今回の内容

セマンティックWebアプリケーションアーキテクチャ

Web上に分散したデータをいかにして集めるのか

どのようにして統合するのか

どのようにして活用するのか

Keywords

Linked Open Data (LOD)

情報統合

データ統合

SPARQL

5

Page 6: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

Linked Data と Linked Open Data(LOD)

6

オープンデータ

誰でもが利用して良いようにデータを公開する

政府のデータ,製品情報,など

Linked Data

事物(資源)の識別子としてのURIを使う

データ記述の標準フォーマットであるRDFを使う

共通のURIを使うことでデータ同士をリンクして活用する

Linked Open Data

オープンなライセンスの下で提供するLinked Data

Page 7: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

Linked Open Data(LOD)

7 Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/

Page 8: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

Semantic Webアプリケーションのアーキテクチャ

8

システムの構成要素

RDFパーサ(解析)/シリアライザ(公開)

RDFデータストア

RDFのクエリエンジン

コンバータ/スクレイパ

上記を利用したアプリケーション

※ツールの多くは無償で入手できる

Page 9: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

アーキテクチャ(1)

9

データベースを用いた一般的なアプリケーションのアーキテクチャ

RDFアプリケーションのアーキテクチャ

データベース

データベースエンジン (クエリエンジン)

アプリケーション

RDFデータストア

データベースエンジン (クエリエンジン)

表 グラフデータ

アプリケーション

Page 10: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

アーキテクチャ(2)

10

RDF ファイル

Webページ、エクセル表、

既存のデータベースなど

データベースエンジン (クエリエンジン)

アプリケーション

RDFデータストアで統合して扱われる

シリアライザ

パーサ RDF ファイル

RDFデータストア

データベースエンジン (クエリエンジン)

コンバータ/ スクレイパ

既存のデータを取り込む

ファイルの形でも他のシステムにデータを渡せる

別システム

1つのデータストアにアクセスして得られたデータに関連するデータを別のデータ

ストアにアクセスして参照

RDF ファイル

Page 11: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

RDFのテキスト形式は複数ある

11

テキスト形式による表現(シリアライズ) N-Triples

Notation3 (N3)

RDF/XML

Turtle

RDF/JSON

http://web.sfc.keio.ac.jp/~hagino/dis15

dc:title Web情報システム構成法

萩野達也 dc:creator

以下のグラフ構造を持つデータをテキストで表現してみよう

Page 12: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

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

Page 13: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

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 "萩野達也" .

Page 14: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

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>

Page 15: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

ブランクノード

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]> ] .

Page 16: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

RDF Validator

W3C RDF Validation Service http://www.w3.org/RDF/Validator/

RDF/XMLのチェックと視覚化 http://www.kanzaki.com/works/2005/rap/graph-check

16

Page 17: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

RDF Validation Service

17

Webブラウザから利用可能

入力 直接

ファイル

URL

出力 解析結果

三つ組

グラフ

Page 18: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

<?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グラフ構造のデータモデルからテキストを生成

Page 19: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

RDFのデータストア/データベース

19

格納されたRDFデータは統合される

SPARQLなどのクエリ言語により検索することが可能になる 複数のデータ集合の統合が基本機能として備わっている

リレーショナルデータベースの場合,通常,アプリケーション側でデータベースに格納されている形式に応じて問い合わせを行ない,結果をまとめる処理を行っている

RDFデータストアの場合,すべてのデータはRDF

オープンソースから製品までさまざまなデータストアが公開されている

データベースエンジン (クエリエンジン)

アプリケーション

RDFデータストアで統合して扱われる

Page 20: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

クエリ

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

入門が返される

Page 21: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

SPARQL

21

SPARQL Protocol and RDF Query Language

グラフベースのクエリ言語(トリプルパターンマッチング)

グラフ

(RDFデータベース内のデータ)

グラフパターン

(クエリ)

who whom addrm

_:1 _:2 "[email protected]"

クエリ結果

(グラフパターンの変数 who,whom,addrmの値を提示)

Page 22: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

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]> クエリ結果

変数

トリプルパターン

Page 23: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

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

Page 24: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

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"

Page 25: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

DBpediaのSPARQLエンドポイント

25

DBpedia Wikipediaから構造化データを抽出しWeb上で使えるようにしたもの

http://dbpedia.org/

DBpediaデータにクエリを発行できるSPARQLエンドポイント http://dbpedia.org/sparql

日本語版のDBpediaも公開された http://ja.dbpedia.org/

実際にSPARQLクエリを発行して動作を確認してみたい

Page 26: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

コンバータ/スクレイパ

26

コンバータ

別の形式のデータをRDFに変換するツール

例:エクセルの表データ,関係データベース

スクレイパ

構造化された情報をWebページから抽出するツール

Page 27: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

構造化データを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の仕様を解釈できる機械は以下のメタデータを読み取ることができる

Page 28: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

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

Page 29: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

Semantic Webのアーキテクチャに基づく

アプリケーション開発

29

Semantic Web Development Tools

http://www.w3.org/2001/sw/wiki/Tools

Semantic Webのアーキテクチャを支えるパーサやデータストア、また開発環境に関連したツールなどの情報がまとめられている

Page 30: Web Information System Designweb.sfc.keio.ac.jp/~hagino/dis15/10.pdfLinked Data と Linked Open Data(LOD) 6 オープンデータ 誰でもが利用して良いようにデータを公開する

まとめ

30

Linked Open Data

RDFのデータをオープンなライセンスの下に公開し、異なるデータ同士をリンクして活用する試みとして注目を集める

セマンティックWebアーキテクチャ

RDFパーサ

RDFデータストア

SPARQL検索