第7回 linked data 勉強会 @yayamamo

40
オントロジーエディタ protégéを使う 山本泰智 (@yayamamo) ライフサイエンス統合データベースセンター Rev. Ver. 20131011.0

Upload: yayamamo-dbcls-kashiwanoha

Post on 16-Jan-2017

15.663 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 第7回 Linked Data 勉強会 @yayamamo

オントロジーエディタprotégéを使う山本泰智 (@yayamamo)

ライフサイエンス統合データベースセンター

Rev. Ver. 20131011.0

Page 2: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

今日のお題

Linked Dataを文字通り「繋ぐ」ために必要な仕組みを紹介

ウェブ上のデータを繋ぐ鍵は共通語彙

それをここではオントロジーと呼び、オントロジーを作る方法を紹介

Page 3: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

非常口

扉の属性として、「非常口」という文字か、「人の走り出る絵」のどちらがより広く再利用され、共有され易いか

Page 4: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

ウェブ上のデータ様々な人々、組織が自由に作るデータPMID- 21498548OWN - NLMSTAT- MEDLINEDA - 20110418DCOM- 20110902LR - 20130630IS - 1758-0463 (Electronic)VI - 2011DP - 2011TI - Allie: a database and a search service of abbreviations and long forms.PG - bar013LID - 10.1093/database/bar013 [doi]AB - Many abbreviations are used in the literature especially in the life sciences, and polysemous abbreviations appear frequently, making it difficult to read and understand scientific papers that are outside of a reader's expertise. Thus, we ... constructed and updated weekly. Database URL: The Allie service is available at http://allie.dbcls.jp/.AD - Database Center for Life Science, Bunkyo-ku, Tokyo, Japan. [email protected] - Yamamoto, YasunoriAU - Yamamoto YFAU - Yamaguchi, AtsukoAU - Yamaguchi AFAU - Bono, HidemasaAU - Bono HFAU - Takagi, ToshihisaAU - Takagi TLA - engPT - Journal ArticlePT - Research Support, Non-U.S. Gov'tDEP - 20110415

Page 5: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

共通語彙: オントロジー

データが表すものを分かり易く表現し

データの再利用性を高め

より効率の良い知識共有環境の実現へ

Page 6: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

クラスや属性は大事

属性、プロパティ、単位、クラス、型などなど

例えば、数値

42

これは何を表すか?http://en.wikipedia.org/wiki/File:Answer_to_Life.png

Page 7: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

データの表現

山本泰智は42さい男性です。 (日本語、自然言語)

                  (表形式)

ex:yayamamo foaf:age "42"^^rdfs:Literal ; (turtle, RDF) rdf:type foaf:Person ; foaf:gender "male"^^rdfs:Literal ; foaf:name "山本泰智"@ja .

                 ※ 実在の人物とは関係ありません

氏名 年齢 性別山本泰智 42 男

Page 8: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

機械での処理もし易く

形式が同じでも表現する語彙がバラバラでは繋がりにくい

年齢? 歳? years old? age? y/o?

表現する語彙集=オントロジーを用意して皆で使うと嬉しい

ウェブ上(=分散環境)でデータを交換するのに適したモデルとしてRDFが作られた

Page 9: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

protégé

オープンソースのオントロジーエディタ

スタンフォード大学で開発

データの属性に関する事項を編集するためのソフトウェア

デスクトップアプリとウェブアプリの2本だて

ウェブアプリは協調作業向け

Page 10: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

http://protege.stanford.edu/

現時点での最新はVersion 4.3.0 (Build 304)

Page 11: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

今日の例題

番号 名前 体重 (Kg) 身長 (m) 肥満度判定結果肥満度判定結果番号 名前 体重 (Kg) 身長 (m)BMI クラス

001 Y Y 62 1.65 22.77 標準

002 A K 58 1.8 17.9 低体重

003 G P 90 1.7 31.14 肥満

BMIの計算について http://www.cdc.gov/healthyweight/assessing/bmi/adult_bmi/index.html

表ex

Page 12: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

メタボ傾向生物

肥満度判定結果

低体重

標準

標準以上

肥満

xsd:decimalの体重は

の身長は

の肥満度はのBMIは

の体重クラスは

体重クラス

rdfs:subClassOf

owl:Class

owl:DatatypeProperty

owl:ObjectProperty

literal

individual

rdf:type

xsd:decimal

xsd:decimal

体重 (kg)

身長 (m)2BMI =

Page 13: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

基本

モノやコトのクラスを表す概念は owl:Class 型

クラスの間の関係を示す概念は owl:ObjectProperty 型

モノやコトの属性を示す概念は owl:DatatypeProperty 型

ある個体 (individual) があるクラスに属するとき、rdf:type

で関係を示すex:yayamamo rdf:type foaf:Person .

Page 14: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

初期画面

オントロジーの名前(URI)をつける1

2 「Annotations」を選択し、+をクリック

例: http://example.com/BMI/

Page 15: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

オントロジーの概要を書く(ライセンス情報も)

日本語で書く場合、言語選択に日本語を示す「ja」が無いので、直接書き込む

Page 16: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

「Classes」を選択

Page 17: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

クラス編集表示

 を選択してクラスを定義

2

「Thing」を選択してアクティブに

1

Name:に例えば「人」と入力すると下のURI:に自動的に「http://example.com/BMI/人」と表示される。

Page 18: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

クラスについて記述する 「label」を選択し、「Value」

に分かり易い名前を書く

それを記述する言語の情報も併せて

12

3

4

5

Page 19: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

「comment」の「Value」にはそのクラスについて説明を

それを記述する言語の情報も併せて

クラスについて記述する

Page 20: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

クラスについて記述する

1

2

3

4 5

67

「人」クラスに属する個体は、その属性「の体重は」について、丁度1つの10進数の値を持つ

Page 21: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

クラスについて記述する

クラスに特定の個体(individual)のみ属することを規定する場合、各個体をカンマ区切りで列挙して{}で囲む

Page 22: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

クラス名を変更する方法

Page 23: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

「Object Properties」を選択

1

クラスと同様に名前や説明を書く

2

プロパティの特徴を選択

3

Functional: 対象となる個体が決まれば一意に決まるプロパティであるか否か。肥満度は、その人固有で、二つ以上は無いので、Functionalなプロパティ。

プロパティの対象やその値が持つクラスを規定

4

Domains: 対象となる個体の属するクラスRanges: プロパティの値が属するクラス「の肥満度は」プロパティは「メタボ傾向生物」クラス、及びそのサブクラスの個体(「人」クラスも含まれる)が持てるプロパティで、その値は「肥満度判定結果」クラスに属する個体であることを規定。

Page 24: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

「Data Properties」を選択

「Object Properties」と同様に

Page 25: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

Page 26: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

bmi:人 rdf:type owl:Class ; rdfs:label "人" ; rdfs:subClassOf :メタボ傾向生物 ; rdfs:comment "foaf:Personクラスと同等"@ja ; owl:disjointUnionOf ( bmi:犬 bmi:猫) .bmi:の体重クラスは rdf:type owl:FunctionalProperty ,  owl:ObjectProperty ; rdfs:label "の体重クラスは"@ja ; rdfs:comment "BMIに基づく体重クラスを示すためのプロパティ。"@ja ; rdfs:range :体重クラス ; rdfs:domain :肥満度判定結果 .bmi:のBMIは rdf:type owl:DatatypeProperty ,  owl:FunctionalProperty ; rdfs:label "のBMIは"@ja ; rdfs:comment "主語に来る生物のBody Mass Index (BMI)を示すためのプロパティ。"@ja ; rdfs:domain :肥満度判定結果 ; rdfs:range xsd:decimal .

構築オントロジーの一部

オントロジーを利用して、例えば、入力フォームの生成や内容のチェックも機械

的に行える。

Page 27: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

オントロジーを使ってデータを表現

ex:001 rdf:type bmi:人 ;

foaf:name "Y Y"^^rdfs:Literal ; bmi:の体重は "62"^^xsd:decimal ;

bmi:の身長は "1.65"^^xsd:decimal ;

bmi:の肥満度は _:b01 .

_:b01 rdf:type bmi:肥満度判定結果 ;

bmi:のBMIは "22.77"^^xsd:decimal ;

bmi:の体重クラスは "標準" .

番号 名前 体重 (Kg) 身長 (m)肥満度判定結果肥満度判定結果

番号 名前 体重 (Kg) 身長 (m)BMI クラス

001 Y Y 62 1.65 22.77 標準

表ex

_:b01はブランクノードという。「肥満度判定結果」クラスの

個体。

Page 28: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

http://www.kanzaki.com/works/2009/pub/graph-draw

グラフで表示

Page 29: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

まとめ

オントロジーも、それに従って記述されたデータも、同じRDFとして表現される⇒スキーマもデータも同じ形式で表現される

SPARQLを使うことで横断的に検索できる

必ずしも予めオントロジーを知らなくても検索できる

Page 30: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

オントロジーは使われてなんぼ言語がそうであるように

Page 31: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

http://www.learningsparql.com/

http://workingontologist.org/

http://www.kanzaki.com/docs/sw/

参考文献

Page 32: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

参考文献http://www.w3.org/TR/owl-ref/

日本語訳もあります。

Page 33: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

よく使われる既存オントロジー

rdf, The RDF Vocabulary (RDF)http://www.w3.org/1999/02/22-rdf-syntax-ns#

rdfs, The RDF Schema vocabulary (RDFS)http://www.w3.org/2000/01/rdf-schema#

owl, The OWL 2 Schema vocabulary (OWL 2)http://www.w3.org/2002/07/owl#

skos, Simple Knowledge Organization System (SKOS) Vocabularyhttp://www.w3.org/2004/02/skos/core#

foaf, Friend of a Friend (FOAF) vocabularyhttp://xmlns.com/foaf/0.1/

dc, DCMI Metadata Terms in the /terms/ namespacehttp://purl.org/dc/terms/

geo, WGS84 Geo Positioning: an RDF vocabularyhttp://www.w3.org/2003/01/geo/wgs84_pos#

Page 34: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

既存オントロジー例

書誌情報

DCMI Metadata Termshttp://purl.org/dc/terms/

The Bibliographic Ontologyhttp://purl.org/ontology/bibo/

Page 35: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

関係するオントロジーを見つける

ググる~ ontology, ~ vocabulary ( + owl, rdf ...)

Linked Open Dataに関する統計情報を眺めるhttp://stats.lod2.eu/statshttp://stats.lod2.eu/vocabularies

DBpediaなどの既存Linked Dataをハックする

Page 36: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

セマンティックウェブの3原則

AAA (Anyone can say Anything about Any topic)

Open World

Nonunique Naming

Page 37: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

クラスとインディビジュアル

なんでもクラスにしてしまうと適切な推論が働かない

:Poet :wrote :Poem .

クラスとクラスの間の関係を記述しても意味が伝わらない

「詩人という集合が詩という集合を書いた。」???

Page 38: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

詩を書く人は詩人

制限クラスを使う

:Poet rdfs:subClassOf [a owl:Restriction; owl:onProperty :wrote; owl:someValuesFrom :Poem] .

逆に、詩人なら詩を書く、ともいえるので

:Poet owl:equivalentClass [a owl:Restriction; owl:onProperty :wrote; owl:someValuesFrom :Poem] .

Page 39: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

FOAF

Page 40: 第7回 Linked Data 勉強会 @yayamamo

第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智

FOAFクラス間の関係