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

Rev. Ver. 20131017.0
今日のお題

Linked Dataを文字通り「繋ぐ」ために必要な仕組みを紹介
ウェブ上のデータを繋ぐ

は共通語彙

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

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

山本泰智
非常口

扉の属性として、「非常口」という文字か、「人の走り出
る絵」のどちらがより広く再利用され、共有され易いか
第7回LinkedData勉強会 10/8 @ インフォコム

山本泰智
ウェブ上のデータ
様々な人々、組織が自由に作るデータ
PMIDOWN STATDA DCOMLR IS VI DP TI PG LID AB -

AD
FAU
AU
FAU
AU
FAU
AU
FAU
AU
LA
PT
PT
DEP

-

21498548
NLM
MEDLINE
20110418
20110902
20130630
1758-0463 (Electronic)
2011
2011
Allie: a database and a search service of abbreviations and long forms.
bar013
10.1093/database/bar013 [doi]
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/.
Database Center for Life Science, Bunkyo-ku, Tokyo, Japan. yy@dbcls.rois.ac.jp
Yamamoto, Yasunori
Yamamoto Y
Yamaguchi, Atsuko
Yamaguchi A
Bono, Hidemasa
Bono H
Takagi, Toshihisa
Takagi T
eng
Journal Article
Research Support, Non-U.S. Gov't
20110415

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

山本泰智
共通語彙: オントロジー

データが表すものを分かり易く表現し
データの再利用性を高め
より効率の良い知識共有環境の実現へ

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

山本泰智
クラスや属性は大事

属性、プロパティ、単位、クラス、型などなど
例えば、数値
42
これは何を表すか?
http:/
/en.wikipedia.org/wiki/File:Answer_to_Life.png

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

山本泰智
データの表現
山本泰智は42さい男性です。 (日本語、自然言語)

氏名

年齢

性別

山本泰智

42

男

                  (表形式)
ex:yayamamo foaf:age "42"^^rdfs:Literal ; (turtle, RDF)
rdf:type foaf:Person ;
foaf:gender "male"^^rdfs:Literal ;
foaf:name "山本泰智"@ja .
                 ※ 実在の人物とは関係ありません
第7回LinkedData勉強会 10/8 @ インフォコム

山本泰智
機械での処理もし易く

形式が同じでも表現する語彙がバラバラでは繋がりにくい
年齢? 歳? years old? age? y/o?
表現する語彙集=オントロジーを用意して皆で使うと嬉しい
ウェブ上(=分散環境)でデータを交換するのに適したモデル
としてRDFが作られた

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

山本泰智
protégé
オープンソースのオントロジーエディタ
スタンフォード大学で開発
データの属性に関する事項を編集するためのソフトウェア
デスクトップアプリとウェブアプリの2本だて
ウェブアプリは協調作業向け

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

山本泰智
http:/
/protege.stanford.edu/
現時点での最新は
Version 4.3.0 (Build 304)
第7回LinkedData勉強会 10/8 @ インフォコム

山本泰智
今日の例題
表ex
番号 名前 体重 (Kg) 身長 (m)

肥満度判定結果
BMI

クラス

YY

62

1.65

22.77

標準

002 A K

58

1.8

17.9

低体重

003 G P

90

1.7

31.14

肥満

001

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

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

山本泰智
の体重は

xsd:decimal

の身長は

xsd:decimal

BMI =

メタボ傾向生物

体重 (kg)
身長 (m)2

の肥満度は
肥満度判定結果

のBMIは

xsd:decimal

の体重クラスは
人
犬

individual
literal

体重クラス

owl:Class

猫

owl:ObjectProperty
owl:DatatypeProperty
rdf:type

低体重

標準以上

rdfs:subClassOf

標準

肥満

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

山本泰智
基本
モノやコトのクラスを表す概念は owl:Class 型
クラスの間の関係を示す概念は owl:ObjectProperty 型
モノやコトの属性を示す概念は owl:DatatypeProperty 型
ある個体 (individual) があるクラスに属するとき、rdf:type
で関係を示す
ex:yayamamo rdf:type foaf:Person .

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

山本泰智
1

オントロジーの名
前(URI)をつける
例: http:/
/example.com/BMI/

2

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

初期画面

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

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

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

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

山本泰智
「Classes」を選択

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

山本泰智
owl:Class 型の概念を定義

1

2

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

 を選択してクラ
スを定義
Name:に例えば「人」と入力すると下のURI:に自動的
に「http:/
/example.com/BMI/人」と表示される。

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

山本泰智
2
1
クラスについて
記述する

4

3

「label」を選択し、「Value」
に分かり易い名前を書く
それを記述する言
語の情報も併せて

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

5

山本泰智
クラスについて
記述する

「comment」の「Value」に
はそのクラスについて説明を
それを記述する言
語の情報も併せて

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

山本泰智
クラスについて
記述する

1

3
2

5

4

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

6
第7回LinkedData勉強会 10/8 @ インフォコム

7

山本泰智
クラスについて
記述する

クラスに特定の個体(individual)のみ
属することを規定する場合、各個体
をカンマ区切りで列挙して{}で囲む
第7回LinkedData勉強会 10/8 @ インフォコム

山本泰智
クラス名を変更する方法

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

山本泰智
owl:ObjectProperty 型の概念を定義

「Object Properties」
1
を選択

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

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

4

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

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

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

山本泰智
owl:DatatypeProperty 型の概念を定義

「Data Properties」
を選択

「Object Properties」
と同様に

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

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

山本泰智
bmi:人 rdf:type owl:Class ;

構築オントロジーの一部

rdfs:label "人" ;
rdfs:subClassOf bmi:メタボ傾向生物 ;
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 bmi:体重クラス ;
rdfs:domain bmi:肥満度判定結果 .
bmi:のBMIは rdf:type owl:DatatypeProperty ,
 

owl:FunctionalProperty ;
rdfs:label "のBMIは"@ja ;
rdfs:comment "主語に来る生物のBody Mass Index (BMI)を示すためのプロパティ。"@ja ;
rdfs:domain bmi:肥満度判定結果 ;
rdfs:range xsd:decimal .
第7回LinkedData勉強会 10/8 @ インフォコム

山本泰智
オントロジーを使ってデータを表現
表ex
番号

名前

体重 (Kg)

身長 (m)

001

YY

62

1.65

肥満度判定結果
BMI

クラス

22.77

標準

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:肥満度判定結果 ;

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

bmi:のBMIは "22.77"^^xsd:decimal ;
bmi:の体重クラスは bmi:標準 .
第7回LinkedData勉強会 10/8 @ インフォコム

山本泰智
グラフで表示

http:/
/www.kanzaki.com/works/2005/rap/graph-check

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

山本泰智
まとめ

オントロジーも、それに従って記述されたデータも、同じ
RDFとして表現される
スキーマもデータも同じ形式で表現される
SPARQLを使うことで横断的に検索できる
必ずしも予めオントロジーを知らなくても検索できる

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

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

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

山本泰智
参考文献

http:/
/www.learningsparql.com/
http:/
/workingontologist.org/
http:/
/www.kanzaki.com/docs/sw/
第7回LinkedData勉強会 10/8 @ インフォコム

山本泰智
参考文献
http:/
/www.w3.org/TR/owl-ref/

日本語訳もあります。
第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) Vocabulary
http:/
/www.w3.org/2004/02/skos/core#
foaf, Friend of a Friend (FOAF) vocabulary
http:/
/xmlns.com/foaf/0.1/
dc, DCMI Metadata Terms in the /terms/ namespace
http:/
/purl.org/dc/terms/
geo, WGS84 Geo Positioning: an RDF vocabulary
http:/
/www.w3.org/2003/01/geo/wgs84_pos#

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

山本泰智
既存オントロジー例

書誌情報
DCMI Metadata Terms
http:/
/purl.org/dc/terms/
The Bibliographic Ontology
http:/
/purl.org/ontology/bibo/

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

山本泰智
関係するオントロジーを見つける

ググる
∼ ontology, ∼ vocabulary ( + owl, rdf ...)
Linked Open Dataに関する統計情報を眺める
http:/
/stats.lod2.eu/stats
http:/
/stats.lod2.eu/vocabularies
DBpediaなどの既存Linked Dataをハックする

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

山本泰智
セマンティックウェブの3原則

AAA (Anyone can say Anything about Any topic)
Open World
Nonunique Naming

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

山本泰智
クラスとインディビジュアル

なんでもクラスにしてしまうと適切な推論が働かない
:Poet :wrote :Poem .
クラスとクラスの間の関係を記述しても意味が伝わらない
「詩人という集合が詩という集合を書いた。」???

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

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

山本泰智
FOAF

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

山本泰智
FOAFクラス間の関係

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

山本泰智

第7回 Linked Data 勉強会 @yayamamo