第7回 linked data 勉強会 @yayamamo
TRANSCRIPT
オントロジーエディタprotégéを使う山本泰智 (@yayamamo)
ライフサイエンス統合データベースセンター
Rev. Ver. 20131011.0
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
今日のお題
Linked Dataを文字通り「繋ぐ」ために必要な仕組みを紹介
ウェブ上のデータを繋ぐ鍵は共通語彙
それをここではオントロジーと呼び、オントロジーを作る方法を紹介
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
非常口
扉の属性として、「非常口」という文字か、「人の走り出る絵」のどちらがより広く再利用され、共有され易いか
第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
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
共通語彙: オントロジー
データが表すものを分かり易く表現し
データの再利用性を高め
より効率の良い知識共有環境の実現へ
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
クラスや属性は大事
属性、プロパティ、単位、クラス、型などなど
例えば、数値
42
これは何を表すか?http://en.wikipedia.org/wiki/File:Answer_to_Life.png
第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 男
第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 @ インフォコム 山本泰智
今日の例題
番号 名前 体重 (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
第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 =
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
基本
モノやコトのクラスを表す概念は owl:Class 型
クラスの間の関係を示す概念は owl:ObjectProperty 型
モノやコトの属性を示す概念は owl:DatatypeProperty 型
ある個体 (individual) があるクラスに属するとき、rdf:type
で関係を示すex:yayamamo rdf:type foaf:Person .
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
初期画面
オントロジーの名前(URI)をつける1
2 「Annotations」を選択し、+をクリック
例: http://example.com/BMI/
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
オントロジーの概要を書く(ライセンス情報も)
日本語で書く場合、言語選択に日本語を示す「ja」が無いので、直接書き込む
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
「Classes」を選択
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
クラス編集表示
を選択してクラスを定義
2
「Thing」を選択してアクティブに
1
Name:に例えば「人」と入力すると下のURI:に自動的に「http://example.com/BMI/人」と表示される。
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
クラスについて記述する 「label」を選択し、「Value」
に分かり易い名前を書く
それを記述する言語の情報も併せて
12
3
4
5
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
「comment」の「Value」にはそのクラスについて説明を
それを記述する言語の情報も併せて
クラスについて記述する
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
クラスについて記述する
1
2
3
4 5
67
「人」クラスに属する個体は、その属性「の体重は」について、丁度1つの10進数の値を持つ
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
クラスについて記述する
クラスに特定の個体(individual)のみ属することを規定する場合、各個体をカンマ区切りで列挙して{}で囲む
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
クラス名を変更する方法
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
「Object Properties」を選択
1
クラスと同様に名前や説明を書く
2
プロパティの特徴を選択
3
Functional: 対象となる個体が決まれば一意に決まるプロパティであるか否か。肥満度は、その人固有で、二つ以上は無いので、Functionalなプロパティ。
プロパティの対象やその値が持つクラスを規定
4
Domains: 対象となる個体の属するクラスRanges: プロパティの値が属するクラス「の肥満度は」プロパティは「メタボ傾向生物」クラス、及びそのサブクラスの個体(「人」クラスも含まれる)が持てるプロパティで、その値は「肥満度判定結果」クラスに属する個体であることを規定。
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
「Data Properties」を選択
「Object Properties」と同様に
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
第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 .
構築オントロジーの一部
オントロジーを利用して、例えば、入力フォームの生成や内容のチェックも機械
的に行える。
第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はブランクノードという。「肥満度判定結果」クラスの
個体。
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
http://www.kanzaki.com/works/2009/pub/graph-draw
グラフで表示
第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) 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#
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
既存オントロジー例
書誌情報
DCMI Metadata Termshttp://purl.org/dc/terms/
The Bibliographic Ontologyhttp://purl.org/ontology/bibo/
第7回LinkedData勉強会 10/8 @ インフォコム 山本泰智
関係するオントロジーを見つける
ググる~ ontology, ~ vocabulary ( + owl, rdf ...)
Linked Open Dataに関する統計情報を眺めるhttp://stats.lod2.eu/statshttp://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クラス間の関係