クラスがRDFSで導入されるとき,それら複数のクラスがそれら自身を含んでもよい.・・・ここで与えられる意味論的モデルでは,オブジェクトとしての・・・クラスはそれらの外延・・・とは区別される.今,何か世の中にあるオブジェクトを考えて(ベースオブジェクト),何かの考え方でもってそれを分類して,複数の集合を作ったとします.そしたらそのある集合ごとに名前をつけましょう.たとえば,この集合は「イヌ」,この集合は「ネコ」,これには「ネコヤナギ」,これには「イヌフグリ」.そうしたときに,そのつけた名前が表示するものをクラスと呼んで,ベースオブジェクトの集合をそのクラス外延と呼びます.
イヌのクラス外延とネコのクラス外延を合併させた集合を考えて,これに名前をつけます.「イヌネコ集合」でもいいのですが,「哺乳類」とか「ペット」のほうがいいかも知れません.ネコヤナギのクラス外延とイヌフグリのクラス外延の集合には「植物」とかでしょうか.ここで注意してもらいたいのは,哺乳類のクラス外延の元としてイヌのクラス外延の元は含まれますが,イヌ(という概念あるいはクラス,ベースオブジェクトではない)は含まれないということです.これが普通なのですが,RDF意味論で言っていることは,イヌのクラス外延の中にクラス「イヌ」を入れてもよい,ただしベースオブジェクトとクラス「イヌ」は区別するということなのです.でもさすがに「イヌ」でそういうことをすることはなく(必要ならしてもいいのですが,つまりイヌのメタが必要なら),RDFSで用意しているのはあとで出てきますが,rdfs:Classのクラス外延の中にrdfs:Classを含む,というところだけです.
明示的な外延写像の使用は・・・二つのクラスが同じインスタンスを含むことを可能にする.というのは,たとえば,うちのbuddyはクラス「イヌ」とクラス「ペット」の両方のクラス外延の元であるということですね.
で,話を戻しますと,このクラス外延の中にクラス自身を含んでもよいというのが,特に論理学者にはわからないらしく,記述論理(DL)を中心としてきた欧州のセマンティックウェブの研究者が困って,色々な論文をこの点だけで発表しているのですが,reflectionという考えに慣れた,特にLispを中心とする研究者には何の違和感もないのです.
メンバーシップループを許すと何がうれしいか?
それはメタモデリングが可能になるからです.OWL Fullではクラスをインスタンスのように扱えるようになるということなのですが,DLから出発するとOWL Fullを実現するのが難しい.rdfs:Classがrdfs:Classのインスタンスであるからこそ,クラスをインスタンスとして扱うことができるのですが,ここではこれ以上の説明はしませんので,興味あるかたは私の論文を読んでください.
外延に対抗する概念は内包ですね.RDF意味論では用語集でこのように書いています.
外延的:集合論に基づく理論あるいはクラス理論.クラスは集合と考えられ,プロパティは
これだけでは,やっぱり分かりにくいですね.今,何かオブジェクトのメンバー変数を考えましょう.ある二つのオブジェクトが同じクラス外延に所属しているとして,でもそのメンバー変数の値は違うものとします.メンバー変数の値が違うのだから,オブジェクトとしてその実現は異なりますね.RDF意味論としてはあるクラスの外延の元として複数の個物を認めているのですね.そして完全に外延的であれば,クラス外延が等しいクラスは等しいとするらしいのですが,RDF意味論ではたまたまクラス外延が一致する異なるクラスを認めるらしい.
二つのクラスが同じインスタンスを含むことを可能にする.これはRDFSのクラスは単なる集合以上のものと考えられることを意味している.それらは単なる外延的一致を超えた,ロバストな同一性概念である「分類」あるいは「概念」と考えられる.
しかしRDF意味論の範囲ではオブジェクトのプロパティ値が同じであっても,すなわち個物Aのあるプロパティの値と個物Bの同じプロパティの値が同じだとしてもあるいは違うとしても,それを分類や外延の構造に反映させる議論はいっさいありませんから,内包的だと言う事もできないような気がします.AIの分野では,「動物で(外延的)空を飛ぶ性質があるなら(内包的),それは鳥である」というルールがよく出てきますが,RDF意味論ではそのような議論は一切ありません.
さて,解釈ですが,あるトリプル集合(グラフ)があったときに,それが成り立つか成り立たないか,ある制約のもとで矛盾があるかないかを考えます.当然トリプル集合中のたった1個のトリプルが成り立たなくても,全体として成り立ちません.それを決定するためのものが解釈で,RDF意味論の議論では,まずテキスト上に現れる語彙(URIとかリテラルになりますね)からそれが指し示すもの(denotation)を定義して,そのdenotationにおいてトリプルが成り立つ条件を考えます.詳しくは本文の繰り返しになりますから,本文を読んでいただくとして,第1章の単純解釈の意味するところは,もうほとんど自明のことしか言っていませんね.
I(p)はIP中にあり<I(s), I(o)>がIEXT(I(p))中にあればI(E)=真,さもなければ偽
I(p)とはURIである p の指し示すもの(denotation)です.URIで示すところのものは,それによって世界で唯一のものですから,明らかに変数ではありませんね.ですからRDFグラフは命題論理に比較されます.ただし,トリプルですからプレディケイトを述語論理としたときのアリティの数はサブジェクトとオブジェクトで2です.そしてブランクノードを導入したとき,つまり名前がURIがないものを導入したとき,それはグラフ中で他のリソースとある関係にあるもの,というわけで論理的には存在変数に相当するというわけです.ですからものすごい基本においてRDFグラフはアリティ2の存在変数だけを許した述語論理と同等です.論理の本を読むと,あるいはプログラムするときには,一般に変数の取り扱いが重要になります.同様にRDFグラフにおいてもブランクノードの取り扱いが重要で,グラフのマージにおいては論理における変数の標準化分離と同等のことを行わなければなりません.たとえばブランクノードを含んだ二つのグラフの等価性を調べるときも,ブランクノードの識別子については注意が必要です.もし別々のファイルにたまたま同じ識別子を持つブランクノードがあったら,その識別子の名前を変更する必要がある.これは実装においてノードを何かのオブジェクトで実現したときでも全く同様ですね.そしてあるグラフとあるグラフが等しいということを言うときには,ブランクノードだけの違いは無視しなければならない.
蛇足ですが,RDF意味論でいうところのリテラルは,論理でいうところのリテラルとは違うものです.
0 コメント:
コメントを投稿