シソーラスとクラス階層とRDF/OWL
クラスとは
- 分類としてのクラス
- 認識の対象を、何らかの性質の違いに着目してより詳細な単位に区分けしていく(taxonomy)
- 何らかの性質を共有するものをまとめ、仕分けしていく(classify)
- 型としてのクラス
- 知識表現のフレーム
- 記述論理(DL)のConcept
- オブジェクト指向言語のクラス
- クラスの定義
- 内包的定義:クラスのメンバーである条件を記述的に定義する(公理)
- 外延的定義:クラスのメンバーを列挙することで集合的に定義する
クラス階層
- is-a関係
- 分類一般の階層は、is-a、part-of、instance-ofなどの多様な関係があり得る
- クラス階層はis-a関係を表す
- サブクラスのインスタンス集合は上位クラスのインスタンス集合の部分集合
- 継承
- 下位クラスは上位クラスの性質(内包的定義、プロパティ)を継承する
- 祖先の性質は子孫に渡って継承されていく(推移律)
RDFプロパティ
- リソース間の関係
- 述語論理 P(x,y) に相当する2項関係
- 関係の方向性がある
- リソースの属性
- 記述論理のRole、フレームのSlot、オブジェクトのプロパティ
- 同じ働きのプロパティを持つもの → クラスの内包定義
- 例:memberプロパティの値がすべて弦楽器奏者で出現回数が4 → 弦楽四重奏団
OWLのクラス
- 記述論理のConceptに相当
- 概念の名前付けによる定義
- 基本概念の組み合わせによる定義(インスタンス集合の論理演算)
- Role(プロパティ)の制約による定義
- 記述論理の推論が使える
- 包含関係(サブクラス関係)の推論
- クラスの定義から、あるクラスが別のクラスのサブクラスであることを導く
- オントロジ全体の整合性の検証
- 矛盾する(インスタンスが存在し得ない)クラスはないか:
A disjointWith B ∧ A subClassOf B
はあり得ない
- 矛盾する(インスタンスが存在し得ない)クラスはないか:
- 個体の自動分類
- リソースの持つプロパティからクラスを推論
- 包含関係(サブクラス関係)の推論
OWLのプロパティ
- クラスの制約条件
- 値の制約(
allValuesFrom
,someValuesFrom
,hasValue
) - 数の制約(
maxCardinality
,minCardinality
,cardinality
)
- 値の制約(
- プロパティの型
- 推移型、対称型、関数型、逆関数型
- プロパティを用いた推論を行う
- Pが推移型プロパティのとき、
x p y. y p z. => x p z.
- Pが推移型プロパティのとき、
- プロパティの関係と階層化
- サブプロパティ、逆プロパティ、同等プロパティ
- ほかの語彙とのマッピングや横断検索を可能にする
- 目的語の型の区別
ObjectProperty
とDatatypeProperty
- プロパティの値はそれぞれ個体、(型付)リテラル
OWL DLでのインスタンス
- 語彙と言明:DLの2つの世界
- TBox(Terminology)=クラス、プロパティを定義する
- ABox(Assertion)=個体(インスタンス)を記述する
- 世界の区別
- ひとつの名前(URI)がクラス(TBox)であると同時に個体(ABox)にもなることはできない
- RDFS/OWL Fullでは可能 → 記述論理の推論、計算が保証されない
- プロパティはABoxの個体間の2項関係を表す
- 主語、目的語をクラス(TBox)にすることはできない
- SWBPでRepresenting Classes As Property Values on the Semantic Web (W3C Group Note) として5つの方法が検討されているが、どれも一長一短
- ひとつの名前(URI)がクラス(TBox)であると同時に個体(ABox)にもなることはできない
件名標目とクラス
- 件名標目表はクラス階層に近いように見える…
- 主題(概念)を束ねて名前付けし、体系的に分類されている
- シソーラスとして定義された階層構造を持つ
- …しかし
- 件名標目表にしばしば現れる固有名詞は?
- 階層以外の関係は?
- この「クラス」のインスタンスとは?
固有名詞の扱い
- 一般に固有名詞はクラスではなく個体と考えられる
国際連合 BT 国際組織
という関係があるが- 「国際連合」はクラスというよりは「国際組織」のインスタンス
- 整合性と変換のコスト
- 個体である「国際連合」はABoxに属し、クラスと同列の語彙として扱うことができない
- 固有名詞だけをインスタンスとして扱う(BTをsubClassOfではなくrdf:typeとして変換する)ためには個別処理が必要
OWL DLでは概念同士の関係を直接記述できない
- クラス自身を記述するのはメタ・プロパティ
- クラスを主語、目的語にできるのはsubClassOf、equivalentClassなど、特別なメタ・プロパティのみ
- クラス階層(
紀行文学 subClassOf 文学.
)は定義できるが、クラス同士の関係を、紀行 RT 案内記.
、紀行文学 hasTopic 旅.
とは直接記述できない。
- プロパティ制約を用いたクラスの性質の記述
- 概念(クラス)間の関係はプロパティ制約で表現する
<owl:Class rdf:ID="紀行文学"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="
#hasTopic
"/> <owl:someValuesFrom
rdf:resource="#旅
"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class>
「紀行文学」クラスのインスタンス
- 文学作品の集合体としての「紀行文学」クラスの場合
- 作品としての『奥の細道』は「紀行文学」のインスタンス
- 「紀行文学」という件名標目を表すクラスの場合
- インスタンスは個々の作品が持つ「主題」?
- このインスタンスはプロパティを持つか(ある作品における主題と別のリソースの関係とは?)
dc:subjectの目的語とは
- 「紀行文学」クラス
<dc:subject rdf:resource="http://example.org/classes/紀行文学"/>
- → DLではクラスは目的語にできない
- 「紀行文学」の(匿名)インスタンス
<dc:subject
rdf:type
="http://example.org/subjectclasses/紀行文学"/>- → 文学作品としての「紀行文学」クラスとは異なる、件名標目のクラスが別途必要
- 「紀行文学」という名前(URI)を持つリソース
<dc:subject rdf:resource="
http://purl.org/net/ns/ndlsh/
紀行文学"/>- → 「紀行文学」をクラスとして扱わず、「Concept」などのインスタンスとする(シソーラス型)
※発表に際して、「紀行文学」を主題件名として記述することはないというご指摘を頂きました。この例は、あくまで「クラスをdc:subjectの目的語にする」ことに関する説明のためで、実際の用例としては適切ではないことに注意してください。
シソーラスの階層構造
- 語彙あるいは件名標目の相互関係
- BT、NTによる階層(RT、UFは階層にはならない)
- BT、NTの階層は、推移律は成り立つが、必ずしも継承の関係ではない
- シソーラスの階層関係
- 属関係:類もしくはカテゴリーの要素または種の間の関係を同定するもの(is-a)
- 例:脊椎動物→哺乳類、教師→学校教師
- 階層的部分全体関係:いかなる文脈においても、部分の名称がその部分を含む全体の名称を含意する(part-of)
- 例:耳→内耳、イングランド→西部イングランド
- 事例関係:普通名詞で表現される事物と事象の一般的なカテゴリーと、そのカテゴリーにおける個々の事例の関係(instance-of)
- 例:海→地中海
- 重合階層関係:ある用語が複数のカテゴリーに現れる
- 例:看護婦→看護管理者;健康管理者→看護管理者、東アフリカ→ザンビア;南アフリカ→ザンビア、耳→聴覚神経;神経→聴覚神経
- 属関係:類もしくはカテゴリーの要素または種の間の関係を同定するもの(is-a)
シソーラスのRDF表現
- 既存シソーラスのRDF表現:一つの戦略
- 既存のシソーラスの資産を生かす(そのままマッピング)
- 階層以外の関係(RT、UF)、階層も必ずしもis-a関係ではない、インスタンスも含まれるなどの前提
- できるだけ低コスト
- 基本的にはプログラムで一括変換
- シソーラス表現の基本語彙はシンプルに
- 必要に応じて複数の語彙を組み合わせることで、より詳細な関係も追加記述可能
- 既存のシソーラスの資産を生かす(そのままマッピング)
- 件名標目をクラスではなくインスタンスとして扱う
- 各件名標目はConceptなどのクラスのインスタンス
- インスタンスなので、is-aでない階層や関係もそのままマップできる
- 件名標目(概念)間の関係を直接記述できる
SKOS
- Simple Knowledge Organization Sysmtem
- シソーラスなどの概念スキーム(概念の集合で、オプションで概念間の関係記述を含むもの)の基本的な構造や内容を記述するためのRDFモデル
- SKOS Core Guide(2005-11-02時点でW3C Working Draft)
- Conceptクラスのインスタンスとして概念を記述
- 概念名を示す
prefLabel
,altLabel
と説明scopeNote
- 概念間の関係を示す
broader
,narrower
,related
- 最上位概念とシソーラス自身の関係を表す
inScheme
- グループ化された概念を表す
Collection
とmember
- 概念名を示す
SKOSによるシソーラス表現の例
- NDLSHをSKOSで記述してみる
<skos:Concept rdf:about="http://purl.org/net/ns/ndlsh/紀行文学"> <skos:
prefLabel
>紀行文学</skos:prefLabel> <skos:altLabel
>紀行文</skos:altLabel> <skos:broader
rdf:resource="http://purl.org/net/ns/ndlsh/文学"/> <skos:broader
rdf:resource="http://purl.org/net/ns/ndlsh/紀行"/> </skos:Concept> <skos:Concept rdf:about="http://purl.org/net/ns/ndlsh/紀行"> <skos:prefLabel
>紀行</skos:prefLabel> <skos:narrower
rdf:resource="http://purl.org/net/ns/ndlsh/漂流記"/> <skos:narrower
rdf:resource="http://purl.org/net/ns/ndlsh/紀行文学"/> <skos:related
rdf:resource="http://purl.org/net/ns/ndlsh/案内記"/> </skos:Concept>
SKOSの拡張案
- SKOS Extensions Vocabulary
- BT、NT、RTのサブプロパティを定義して、より精緻なシソーラス記述を
- SKOS Extensions Vocabulary Specification (非公式ドラフト)
- あまり進展しておらず、標準化の見通しは不明
- 定義されている語彙
- BTのサブプロパティ:
broaderGeneric
,broaderInstantive
,broaderPartitive
- NTのサブプロパティ:
narrowerGeneric
,narrowerInstantive
,narrowerPartitive
- RTのサブプロパティ:
relatedHasPart
,relatedPartOf
- BTのサブプロパティ:
WordNetのRDF/OWL表現
- W3C SWDWGによるこころみ
- RDF/OWL Representation of WordNet(2006-06-19時点でW3C Working Draft)
- WordNet 2.0の構造をそのままRDF/OWLで表現(シソーラス的)
- WordNetをクラス階層とみなす Wordnet for the Web(Dan Brickley et al.)とは異なるアプローチ
- Synset
- ある意味を持つ語のグループ(複数の「語=WordSense」を含む)
- 「インスタンス名前空間 synset - 語形 - 品詞 - 番号」という形のURI
http://www.w3.org/2006/03/wn/wn20/instances/
synset
-United_Nations
-noun-1- Synset間の関係:
hyponymOf
,entails
,similarTo
,classifiedBy
,meronymOf
etc...
- WordSense
- ある「語」のうち一つのSynsetに属するもの=意味+形態(辞書の語定義の各意味項目)
http://www.w3.org/2006/03/wn/wn20/instances/
wordsense
-United_Nations
-noun-1- WordSense間の関係:
derivationallyRelated
,antonymOf
,seeAlso
,participleOf
WordNet RDF/XMLの記述例(United Nations)
- Synset
<wn20s:NounSynset rdf:about='&wn20i;synset-United_Nations-noun-1'> <wn20s:synsetId>107794959</wn20s:synsetId> <rdfs:label>United Nations</rdfs:label> <wn20s:
containsWordSense
rdf:resource='&wn20i;wordsense-United_Nations-noun-1'/> <wn20s:containsWordSense
rdf:resource='&wn20i;wordsense-UN-noun-1'/> <wn20s:gloss
>(an organization of independent states formed...)</wn20s:gloss> <wn20s:hyponymOf
rdf:resource='&wn20i;synset-world_organization-noun-1'/> </wn20s:NounSynset>
- Wordsense
<wn20s:NounWordSense rdf:about='&wn20i;wordsense-United_Nations-noun-1'> <wn20s:
word
rdf:resource='&wn20i;word-United_Nations'/> <wn20s:tagCount>4</wn20s:tagCount> <rdfs:label>United Nations</rdfs:label> </wn20s:NounWordSense>
- Word
<wn20s:Collocation rdf:about='&wn20i;word-United_Nations'> <wn20s:lexicalForm>United Nations</wn20s:lexicalForm> </wn20s:Collocation>
コンセプトのURI (1)
- 国立国会図書館典拠IDをURIに用いる
<skos:Concept rdf:about="http://purl.org/net/ns/ndlsh/
00560099
"> <skos:prefLabel>愛</skos:prefLabel> ... </skos:Concept>
- 明快だが書誌データの記述のときにラベルがないとわかりにくい
<ex:Book rdf:ID="book0123"> ... <dc:subject rdf:resource="http://purl.org/net/ns/ndlsh/
00560099
"/> </ex:Book>- 書誌記述にラベルを加えればよいが、やや面倒
<dc:subject rdf:resource="http://purl.org/net/ns/ndlsh/
00560099
" skos:prefLabel="愛
"/>
コンセプトのURI (2)
- 件名標目をURIの一部に用いる
<skos:Concept rdf:about="http://purl.org/net/ns/ndlsh/
愛
"> <ndl:authid>00560099
</ndl:authid> <skos:prefLabel>愛</skos:prefLabel> ... </skos:Concept> ... <dc:subject rdf:resource="http://purl.org/net/ns/ndlsh/愛
"/>- 日本語も%HHエンコードせず、IRIとして記述できる(英数記号は全角を用いないように注意)
- 分かりやすいが、標目に指示や細目が組み込まれているときにどうするか
- 例:愛(キリスト教)
- やや違和感はあるが、主題の識別は可能
- 例:移民・植民〈地理区分〉
- 識別子としては不適当
- 「移民・植民(日本)」といった実際の件名標目をオントロジーで表現できない
- 例:日本文学―作家
- ハイフンでつなぐ、あるいは複数のプロパティで示す?
- 例:愛(キリスト教)
クラス階層とシソーラスでの主題アクセス
- クラス階層ならばRDF/OWLの組み込み伴意が利用できる
- 「情報処理→データ処理→データ圧縮」というサブクラスの関係があるとき、「データ処理」「データ圧縮」のインスタンスも「情報処理」のインスタンスになる
- システムに推論させて、自動的に検索対象にできる(検索式はシンプルでよい)
- BT、NTはRDF/OWLには組み込まれていない関係
- これらを利用したクエリを記述できる
PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?book ?title WHERE { ?book dc:title ?title . {?book dc:subject ?subject}
UNION
{?book dc:subject ?nt . ?subjectskos:narrower
?nt} FILTER (?subject = <http://purl.org/net/ns/ndlsh/情報処理>) }- このクエリではNTを1レベルしかたどることができない(逆に、範囲を1レベルにコントロールできる)
まとめ
- 件名標目をクラス階層として扱う場合
- サブクラス関係によって主題の階層を表現できる
- RDF/OWLの組み込み伴意を利用した推論や検索ができる
- シソーラスの階層には、is-a関係だけでなくpart-ofやインスタンスが含まれる(改めて階層関係を吟味する必要がある)
- OWL DLではクラス同士の関係やクラスを目的語にした記述ができない(プロパティ制約など、やや直感的でない記述が必要)
- 具体的なものを表すクラスと件名標目クラスの区別が必要(混乱しやすい)
- 件名標目を「概念クラス」のインスタンスとして扱う場合
- シソーラスのNT、BT、RTなどを直接マッピングして利用できる(低コスト、資産を生かせる)
- 従来のシソーラスにはない関係でも、ほかの語彙を組み込んで記述できる
- RDF/OWLの組み込み伴意は使えないが、クエリの工夫や推論規則によって応用が可能
- 作品そのものの属するクラス(本質属性)とその主題を区別しやすい
参照先
- 参照したリソース
- Representing Classes As Property Values on the Semantic Web, by Michael Uschold and Chris Welty (ed.), , W3C Working Group Note
<http://www.w3.org/TR/swbp-classes-as-values/> - SKOS Core Guide, by Alistair Miles and Dan Brickley (ed.), , W3C Working Draft
<http://www.w3.org/TR/swbp-skos-core-guide> - SKOS Extensions Vocabulary Specification, by Alistair Miles and Dan Brickley (ed.)
<http://www.w3.org/2004/02/skos/extensions/spec/> - RDF/OWL Representation of WordNet, by Mark van Assem, Aldo Gangemi and Guus Schreiber (ed.), , W3C Working Draft
<http://www.w3.org/TR/wordnet-rdf/> - Wordnet for the Web, by Dan Brickley
<http://xmlns.com/2001/08/wordnet/>
- Representing Classes As Property Values on the Semantic Web, by Michael Uschold and Chris Welty (ed.), , W3C Working Group Note