RDF®基本データモデル(4) •...

31
RDF

Transcript of RDF®基本データモデル(4) •...

Page 1: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDF

Page 2: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

2001年 2006年 2010年

Webページ

Googleリッチスニペット

YAHOO!SearchMonkey

Dapper

Piggy Bank

スクレイピング

GRDDL RDFa

HTML5 microdata

アノテーション

microformats

生命科学・医療

地図・政府

メディア

ライブラリ

Linked Open Data (LOD) オープン・データ

政府データ

科学データ

音楽データ

写真データ

米国連邦政府英国政府

Science Commons

MusicBrainz

Flickr

FolksonomyWikipedia

集合知

Page 3: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

XML(自由)→RDF(固定)

• XML文書で使用されるタグは任意.

• ソフトウェア(エージェント)にとって理解不能.

• タグ名の選択,モデル使用法は千差万別.

• 単純ではあるがメタデータ記述形式を統一したものがRDF

• RDF上に構築されるRDFスキーマ,オントロジー

を通してソフトウェア(エージェント)が情報の意味が理解できる

Page 4: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

山口高平がhttp://www.yamaguti.ae.keio.ac.jp

というサイトを作成した<is_creator>

<person>山口高平</person>

<web site>http://www.yamaguti…</web site>

</is_creator>

<home_page_by_author>

<web site>http://www.yamaguti…</web site>

<author>山口高平</author>

</home_page_by_author>

Page 5: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDF基本データモデル(1)(Resource Description Framework)

リソース:URIで識別可能な情報資源

プロパティ:リソースの特徴・属性,リソース間の関係を記述するもの

ステートメント(文):リソース+プロパティ+値,リソース+プロパティ+リソースの組み合わせ.主語(Subject)+述語or動詞(Predicate)+目的語(Object)を意味する.

Page 6: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

URI URIURI

RDF基本データモデル(2)

主語 述語(動詞) 目的語リソース プロパティ リソースA君 設計する 情報システムユースケース

役職,スキル,... 入力,参照,出力,ツール, システム仕様,US仕様...

今は放置.あとで飛んだURI先で定義すればいよい.

段階的開発を可能にしている. IDがURIになっていることがSWの本質

Page 7: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFの基本データモデル(3)• RDFの基本モデルは有向ラベル付きグラフ

– 主語,目的語をノードとし,述語をアークとして連結

– リソースノードは楕円,リテラルは長方形で示す• リソースは,URIで参照

– 目的語はリソースまたはリテラル

– 主語,述語,目的語の組み合わせは,ステートメント

http://kanzaki.com 神崎正英dc:creator

リソースプロパティ

リテラル

ステートメント

主語 述語 目的語

Page 8: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFの基本データモデル(4)

• 複数のステートメントを連結したRDF(構造化モデル)– 目的語がリソース:そのリソースを主語とみたてて新たなステートメントを作成可能

– 目的語ノードを主語として連結

– ノードから複数のアークが伸びてよい

上田 猫好き

上田 好き 猫

オス性別

URI URI URI

Page 9: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFの基本データモデル(5)空白ノード

空白ノードは外部からは参照できないが、「ある匿名のリソース」としてトリプルの主語や目的語になることはできる。

URI参照で名前付けをしないため、外部からURIによって見つけることができない

http://www.bb2.comホームページ

URI参照による名前付けをしないノード

Page 10: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

空白ノードと構造化グラフ(例1)

ID 氏名 ホームページ 住所

AA1 石川 www.aa1.com 東京

BB2 今井 www.bb2.com 神奈川

CC3 手島 www.cc3.com 東京

DD4 内藤 www.dd4.com 愛知

ID欄の値は主語ではなくプロパティの一つ。

BB2

http://www.bb2.com

ID

ホームページ

ホームページBB2 http://www.bb2.com

Page 11: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

空白ノードと構造化グラフ(例2)

• 「http://www.bb2.comの作者は今井良で、そのメールアドレスは[email protected]」をRDFのグラフ図で表す場合

「ある人物」を表す匿名の空白ノード

http://www.bb2.com

今井良

[email protected]

作者

氏名

メールアドレス

Page 12: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFの構文(1)

http://kanzaki.com 神崎正英

dc:creator

<rdf:RDF

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:dc="http://purl.org/dc/elements/1.1/">

<rdf:Description rdf:about="http://kanzaki.com">

<dc:creator>神崎正英</dc:creator>

</rdf:Description>

</rdf:RDF>

@prefix dc: <http://purl.org/dc/elements/1.1/> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://kanzaki.com>

dc:creator "神崎正英" .

<http://kanzaki.com> <http://purl.org/dc/elements/1.1/creator>

“神崎正英" .

モデル

XML

Notation3

N-Triple

Page 13: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFのXML構文(基本モデル)

rdf: RDF Model&Syntax name space

Description要素:ステートメント

about属性:主語となるリソースのURI

Description要素内容:プロパティ(dc:creator)+値(神崎正英)

http://kanzaki.com 神崎正英dc:creator

<rdf:Description rdf:about=“http://kanzaki.com">

<dc:creator>神崎正英</dc:creator>

</rdf:Description>

<rdf:Description

rdf:about=“http://kanzaki.com“ dc:creator=“神崎正英”/>

短縮構文(要素内容を書かずに属性として記述)

Page 14: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFのXML構文(構造化モデル)

<rdf:RDF ...>

<rdf:Description rdf:about=“urn:isbn:4-8399-0454-5">

<dc:creator>神崎正英</dc:creator>

<dc:publisher>

<rdf:Description rdf:about=" http://www.mycom.co.jp ">

<ex:webmaster>Someone’s name</ex:webmaster>

</rdf:Description>

</dc:publisher>

</rdf:Description>

</rdf:RDF>

urn:isbn:4-8399-0454-5

http://www.mycom.co.jp

神崎正英

Someone’s name

dc:creator

dc:publisher

ex:webmaster

Page 15: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

練習問題1

• 「William の年齢は22歳である」という内容をRDFモデルとXML構文で記述せよ.

• プロパティはAgeとする.

• 発生する問題は?

WilliamAge

22

<?xml version="1.0"?>

<rdf:RDF

xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#

xmlns:mr3=http://mmm.semanticweb.org/mr3#

xml:base="http://mmm.semanticweb.org/mr3#">

<rdf:Description rdf:ID="William">

<mr3:Age>22</mr3:Age>

</rdf:Description>

</rdf:RDF>

Page 16: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

練習問題2

• 「William の父はCharlesである」という内容をRDFモデルとXML構文で記述せよ.

• プロパティはhasFatherとする.

William CharleshasFather

<?xml version="1.0"?>

<rdf:RDF

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:mr3=http://mmm.semanticweb.org/mr3#

xml:base="http://mmm.semanticweb.org/mr3#">

<rdf:Description rdf:ID="William">

<mr3:hasFather rdf:resource="#Charles"/>

</rdf:Description>

</rdf:RDF>

Page 17: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

練習問題3

• こころの作者は夏目漱石である.

• こころは小説である.

• 夏目漱石は作家である.

• すべての作家は人間である.

• 小説の作者は作家のみである.

• 作者を表すプロパティとして,「http://purl.org/dc/elements/1.1/creator」を用いる

Page 18: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

練習問題3 RDF(S)モデル

小説 作家 dc:creator

こころ 夏目漱石

小説 作家dc:creator

人間

RDFS

RDF リソースのタイプ

クラス プロパティ

rdfs:domain: 小説rdfs:range: 作家

dc → http://purl.org/dc/elements/1.1/

Page 19: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

練習問題3 RDF/XML

<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

xmlns:owl="http://www.w3.org/2002/07/owl#"

xmlns:mr3="http://mmm.semanticweb.org/mr3#"

xmlns:dc="http://purl.org/dc/elements/1.1/"

xml:base="http://mmm.semanticweb.org/mr3#">

<rdfs:Class rdf:ID="作家">

<rdfs:subClassOf>

<rdfs:Class rdf:ID="人間"/>

</rdfs:subClassOf>

</rdfs:Class>

<rdfs:Class rdf:ID="小説"/>

<rdf:Property rdf:about="http://purl.org/dc/elements/1.1/creator">

<rdfs:domain rdf:resource="#小説"/>

<rdfs:range rdf:resource="#作家"/>

</rdf:Property>

<mr3:作家 rdf:ID="夏目漱石"/>

<mr3:小説 rdf:ID="こころ">

<dc:creator rdf:resource="#夏目漱石"/>

</mr3:小説>

</rdf:RDF>

Page 20: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFS

Page 21: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFS(スキーマ)

上田 好き たま

オス性別

上田リソース,たまリソースは,どのようなカテゴリに属するのか?→ 上田リソースは,人間クラスに属する→ たまリソースは,猫クラスに属する クラスの定義方法は? リソースがクラスに属することを表明方法は?

好き,性別,色などのプロパティ(述語)は,どのように定義するのか?

プロパティやリソースのカテゴリを定義するための基本的なメカニズムを提供

Page 22: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFS:語彙(タグ)に関するメタ知識

• RDFのモデル・構文に基づいて,RDFSが提供する以下のリソース及びプロパティを用いて,プロパティ定義,クラス定義,クラスのインスタンスの定義を行う– rdf:は,http://www.w3.org/1999/02/22-rdf-syntax-ns#の接頭辞を示す– rdfs:は,http://www.w3.org/2000/01/rdf-schema#の接頭辞を示す

• RDFSの4基本クラス– rdfs:Resource: すべてのものはリソース– rdfs:Class: クラス=基本的なものごとのカテゴリ– rdf:Property: プロパティ=物事の性質、関係– rdfs:Literal: 文字列などのリテラル

• RDFSの7基本プロパティ– あるクラスのインスタンスであることを示す:rdf:type

– クラス,プロパティの派生関係を示す:rdfs:subClassOf,rdfs:subPropertyOf

– プロパティの限量定義: rdfs:range, rdfs:domain

– 人間に理解できる情報: rdfs:label, rdfs:comment

Page 23: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFSクラスの作り方

RDFSもRDFモデル(SPO)的に考えて作成する.

① rdf:typeプロパティの値をrdfs:Classとしてクラスを作る(クラスはrdfs:Classのインスタンスとする)

②簡略法<rdfs:Class …></rdfs:Class>

<rdf:Description rdf:ID=“動物">

<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema #Class"/>

or <rdf:type rdf:resoucre=“&rdfs;Class”/>

<rdfs:subClassOf rdf:resource=“#生物"/>

</rdf:Description>

<rdfs:Class rdf:ID=“犬">

<rdfs:subClassOf rdf:resource=“#動物"/>

</rdfs:Class>

生物

動物

is-a

is-a

Page 24: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDF/XMLの省略記述

• RDFのXML構文では,rdf:typeでタイプを指定したノード(型付きノード)は,rdf:Description要素をタイプ名で置き換えることができる

<rdf:Description rdf:ID="Symphony">

<rdf:type rdf:resource=" http://www.w3.org/2000/01/rdf-schema#Class"/>

<rdfs:subClassOf rdf:resource="#Music"/>

</rdf:Description>

<rdfs:Class rdf:ID="Symphony">

<rdfs:subClassOf rdf:resource="#Music"/>

</rdfs:Class>

Page 25: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

EX:Personクラスを作ろう

<rdf:Description rdf:ID=“Person”>

<rdf:type rdf:resource=“&rdfs;Class”/>

<rdfs:subClassof rdf:resource=“rdfs;Resource”/>

<rdfs:Class ID=“Person”>

<rdfs:subClassof rdf:resource=“rdfs;Resource”/>

</rdfs:Class>

Page 26: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFSプロパティ定義

• プロパティはクラスに従属せずグローバル

– OOP言語のクラスにおけるプロパティ定義と異なる概念

• プロパティの継承、適用範囲の定義

– 上位プロパティを継承するrdfs:subPropertyOf

– 定義域(主語の範囲)を定義するrdfs:domain

– 値域(目的語の範囲)を定義するrdfs:range

<rdf:Property rdf:ID=“好き">

<rdfs:subPropertyOf rdf:resource=“..."/>

<rdfs:domain rdf:resource=“#人間"/>

<rdfs:range rdf:resource=“#猫"/>

</rdf:Property>

Page 27: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDFSインスタンス定義

• rdf:typeによる型指定

– 定義したクラスのインスタンスであることをrdf:typeによって示す

<rdf:RDF

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" >

<rdf:Description rdf:about="#たま">

<rdf:type rdf:resource="#猫"/>

</rdf:Description>

<rdf:Description rdf:about="#上田">

<rdf:type rdf:resource="#人間"/>

<好き rdf:resource="#たま"/>

</rdf:Description>

</rdf:RDF>

上田好き

rdf:type

「上田」というリソースのカテゴリが人間,「たま」というリソースのカテゴリが猫であることをあらわしている

たま

人間 猫

rdf:type

Page 28: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

プロパティのdomainとrange は?

rdf:type はrdf:Property の一種であり,rdfs:domainはresourceであり,rdfs:rangeはclassである.

rdfs:subClassOf,rdfs:subPropertyOf

rdfs:label, rdfs:commentも同様に考えよ.

Page 29: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

RDF/RDFS

WilliamCharles

subject

(Resource)predicate

(Property)object(Literal)

hasFather

statement

Model

Syntax

<rdf:Description about=“William”>

<hasFather>Charles<hasFather/>

<rdf:type resource=“Person”/>

</rdf:Description>

Resource

Property

Literal

Personrdf:type

object(Resource)

<rdf:Class rdf:about=“Person”>

<rdfs:subClassOf resource=“&rdfs;Resource”/>

</rdf:Class>

<rdf:Property rdf:about=“hasFather”>

</rdf:Property>

Syntax

Model

Person

hasFather

rdfs:Class

rdf:Property

rdf:type

rdf:typerdfs:Resource

rdfs:subClassOf

(Class)

(Property)

RDF RDFS

Page 30: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

W3Cから提供されているRDFツール IsaViz

<rdf:RDF xmlns:rdfs=“…rdf-schema#">

<rdfs:Class rdf:about="http://purl.org/rss/1.0..."

rdfs:label=“…“></rdfs:Class>

<rdf:Property rdf:about="http://purl.org/rss/1.0..."

rdfs:label=“…“></rdf:Property>

</rdf:RDF>

<rdf:RDF xmlns:rdfs=“…rdf-syntax-ns”>

<image rdf:about="http://...">

<title>…</title>

<link>http://…</link>

</image>…

</rdf:RDF>

RDFS/XML

RDF/XML

RDF + RDFS

Page 31: RDF®基本データモデル(4) • 複数のステートメントを連結したRDF(構造化モデル) – 目的語がリソース:そのリソースを主語とみたてて新たなステート

www.yamaguti.comp.ae.keio.ac.jp

MMM project をクリック

RDFグラフィカルエディター MR3