RDFS・オントロジーの関係性を記述する言語
RDFS・オントロジーの関係性を記述する言語
RDFSは、セマンティックWebのレイヤーケーキ上では、RDFの上位に位置付けられます。RDF単体では表現する事が難しかった、リンクトデータのより詳細の表現がRDFSにより可能になります。特に、RDFSは様々なプロパティの語彙を定義しているため、概念間のより複雑な関係性を定義できます。
RDFS
RDFS(RDF Scheme)は、RDFのスキーマ言語という位置づけになりますが、XML Schemeと同様に、XMLの構成に関して定義を行うものでは無く、RDFのリソース(概念)の宣言や、リソース間の関連の定義等を行います。このことにより、リンクトデータの詳細を、RDFよりも的確に表現する事が可能です。
RDFSは、クラス、及びプロパティについて多くの語彙を持ち、これによりリソースのより複雑な表現が可能になります。
クラス
ここで、RDFにおいて大事な概念となる「クラス」について説明を行います。クラスという言葉は、Java等のオブジェクト思考のプログラミング言語を使用された方であれば、馴染みの深い言葉かと思います。RDFにおけるクラスは、オブジェクト思考のプログラミング言語におけるクラスと非常に良くにております。
クラスはリソース(概念)の共通の性質をまとめる役割を持ちます。例えば、「吉野家」「松屋」は共に「牛丼屋」という共通の性質を持っているので、「牛丼屋」は、「吉野家」「松屋」のクラスと言うことができます。
クラスの構成要素をインスタンスと呼び、「牛丼屋」というクラスから見たときに、「吉野家」「松屋」は構成要素にあたり、それぞれインスタンスになります。これらのクラスとインスタンスの関係を図示すると以下のようになります。
rdf:typeはそのリソースがあるクラスのインスタンスであることを示し、この例の場合は、「data:松屋」と「data:吉野家」は「ex:牛丼屋」のインスタンスであるという関係が表現されています。
クラスの継承
オブジェクト思考のプログラミング言語と同様に、クラスはそのクラスの性質を継承したサブクラス(子クラス)を派生させる事ができます。サブクラスは、親のクラスと同じ性質を引き継ぐ事ができます。因みに、RDFでは全てのクラスはリソース(rdfs:Resource)として表現され、これが頂点に位置するクラスです。基底クラス(クラスの概念の元)はrdfs:Classと表現されます。
それでは、クラスの継承の様子を説明します。「Music」のサブクラスが「Symphony」と「Concerto」とした時に、その関係性について図示したものが以下です。
「Music」「Symphony」「Concerto」は、それぞれ基底クラス(rdfs:Class)のインスタンス(rdf:type)だという事を表しています。また、「Symphony」「Concerto」は「Music」のサブクラス(rdfs:subClassOf)という事が表されています。これらをRDFで記述すると以下のように記述できます。
RDF・RDFSの主要語彙
RDF、及びRDFSはクラス、及びプロパティの性質を規定するために様々な語彙を備えています。この語彙により、クラスの性質の詳細、及びプロパティの性質の詳細の定義が説明可能で、これによってRDF単体で発生しうるリソースの解釈の曖昧性の問題が大幅に解消される部分があります。以下、クラス、及びプロパティの記述に用いられる主要語彙を示します。
クラスを記述する主要語彙
- rdfs:Resource: RDFで表現するものはすべてリソースなので、これが最も基本的なクラス
- rdfs:Class: リソースのタイプもしくはカテゴリ
- rdf:Property: プロパティを表すリソース(RDFモデルの基本になるのでrdf:の名前空間に属す)
- rdfs:Literal: 文字列などのリテラルを表すクラス
- rdfs:Datatype: 独自のデータ型を定義するためのクラスです。
- rdf:XMLLiteral: XMLとしてマーク付けされたリテラルを表すクラス
プロパティを記述する主要語彙
- rdf:type: リソースがあるクラスのメンバ(インスタンス)であることを示す
- rdfs:subClassOf: あるクラスから派生クラスを生成する
- rdfs:subPropertyOf: あるプロパティをより精密に定義するときに用いる
- rdfs:range: あるプロパティの目的語が、どんなクラスのインスタンスであるかを定義する
- rdfs:domain: あるプロパティの主語が、どんなクラスのインスタンスであるかを定義する
- rdfs:label: リソースに人間が読むための名前を付ける
- rdfs:comment: リソース定義に人間が読むための説明を加える
RDFSの弱点
クラス、及びプロパティについて、様々な語彙を備えるRDFSですが、それでもまだ、オントロジーの概念を正しく記述するにはハードルがあります。RDFSでは、リソース間のプロパティの一方方向の関係性は定義出来ますが、その関係性の詳細までは定義出来ないことと、逆の関係性までを厳密に記述できません
上記の例として、「子供」クラスと「父親」クラスがある際に、「子供」クラスから見た際に、「父親」クラスに対して「親」というプロパティで関係性が定義されていても、「親」というプロパティだでは、「父親」の性別までは言及出来ません。また、「父親」クラスから「子供」クラスへは関係性のプロパティが定義されていないため、「父親」クラスと「子供」クラスのプロパティが「息子(または「娘」)」という事が類推できません。
つまり、RDFSではリソース間の概念の明確な説明を記述する事が出来ないため、概念間の関係性を「推測」する事が難しくなります。概念間の関係性の「推測」はオントロジーでは非常に大事な要素で、これが実現できない限り、セマンティックWebの実現は難しくなります。
まとめ
セマンティックWebのレイヤーケーキ上で、RDFの上位の構成要素であるRDFSに関して解説をさせて頂きました。RDFSはクラス、及びプロパティに関して豊富な語彙を備え、この語彙を使用することにより、オントロジーの関係性の詳細を記述する事が出来ますが、概念間の関係性の「推論」までは難しい点に関して解説をしました。
次回以降、オントロジーにおける「推論」はどのように行われるのか、また、それをセマンティックWeb上でどのように実現させるかについて解説をしていきます。