※ 本記事はnote投稿記事の転載です。
※ https://note.com/super_crow2005/n/n83e29e68c301?magazine_key=m1df32e6ef6e1
OWLでは、OWLで記述されたファイル内にある要素をowl:Class、owl:NamedIndividual, owl:Property(ObjectProperty, DatatProperty)ときちんと違うことがいえるのだが、RDFではどうも普遍者(クラス)と個物(インディビデュアル、インスタンス)とが曖昧、というかどちらも兼ねるという定義ができるとされる。神崎『セマンティック・ウェブのためのRDF/OWL入門』(森北出版、2005)のp.76に次のような例が示される。
<rdfs:Class rdf:about="http://example.org/terms/SiglemaltWhisky"/>
<ex:SinglemaltWhisky rdf:about="http://example.org/terms/TheMacallan">
<rdf:type rd:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</ex:SingleMaltWhisky>
<rdf:Description rdf:about="http://example.org/terms/TheMacallan30Years">
<rdfs:subClassOf rdf:resource="http://example.org/terms/TheMacallan"/>
</rdf:Description>
<rdf:Description rdf:ID="Me">
<ex:buys>
<ex:TheMacallan rdf:ID="MyBottle">/
</ex:buys>
</rdf:Description>
これは、まず普遍者としてウィスキーの分類であるシングルモルトウィスキーex:SinglemaltWhiskyがあって、その例としてマッカランex:TheMacallanがあるとしている。ボウモアとか山崎、といった並びとなるだろう。スコッチか日本ウィスキーかといった分類を入れたくなるが、そのような分類に対する具体例である。
一方でマッカランはブランド・商品名として一つの普遍者ex:TheMacallanであるとして、そのサブクラスとしてマッカラン30年ex:TheMaccalan30Yearsという分類を作り、購入した実体のボトルをex:TheMacallanの個物#MyBottleとしているのである。
グラフで描けば次のようになるだろう。
<参考:神崎、セマンティック・ウェブのためのRDF/OWL入門、森北出版、p.76
関係表記では、
#myBottle is_instance_of ex:TheMacallan .
ex:TheMacallan is_instance_of ex:TheSinglemaltWhisky .
と、ex:TheMacallanは普遍者にも、個物にもなってしまっている。
ボルド体とイタリック体の区別がない話しことばでは、普遍者と個物は、同じことばになってしまう。だが、マッカランの例は、いっていることはよくわかる。
つまり、そもそも同じ言葉でも意味は違う、ということは意識できているのである。普遍者は概念、コンセプトであって例(外延)ではないし、例が具体的な物体だったら、それをもって抽象的な普遍者とはできないだろう。物の普遍者は概念としてのことばとなる。それは例えば、独立存続物という概念である。そのマッカランという概念の実物が自分のボトルなのだ。シングルモルトウィスキーという概念があって、その実際の例がイメージとしてのマッカランなのである。
おそらく、「ことば」は同じでもよいのかもしれない。人は使い分けているのだから、文脈、言い回しで区別できるということだ。問題は、普遍者であることと個物であることを同時に、同じ言葉で記述してしまっていることかもしれない。
<ex:SinglemaltWhisky rdf:about="http://example.org/terms/TheMacallan">
<rdf:type rd:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</ex:SingleMaltWhisky>
というのが、個物であってクラスでもあるということなのだろう。
<ex:SinglemaltWhisky rdf:about="http://example.org/terms/TheMacallan"/>
<rdf:Description rdf:about="http://example.org/terms/TheMacallan">
<rdf:type rd:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
と個物と普遍者を分けていれば、間違いないのではなかろうか。
筆者が思うところではあるが、普遍者と個物とは明らかに異なった物事なのであるから、名前もそれと分かる方がよい。誤解、勘違い、思い込みといったオントロジーにあるまじき状況の原因になるだろう。
普遍者と個物を一つのリソースとして定義、設定することに、他にはない優れた価値があるのなら、よいとおもう。それはそれで面白そうだ。
因みにprotégéで、名前空間ttt:を
"http://www.semanticweb.org/2025/5/ttt#"
として、次のようなrdfファイルを読み込ませた。
<owl:Class rdf:about="http://www.semanticweb.org/2025/5/ttt#BBB">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/2025/5/ttt#AAA"/>
<rdf:type rdf:resource="http://www.semanticweb.org/2025/5/ttt#AAA"/>
</owl:Class>
ttt:BBBはクラスともインディビデュアルとしても機能した。この記述を見ると、rdf:Descriptionとrdfs:Classとは似ていないだろうか! つまり、rdfs:Classはリソースの一種でありながら、リソースの個物でもあるというトリックの定義だったのだ。これはrdfをユーザが扱う世界に対して、rdfs:Classはrdf:resouceの性質を保ちながら(rdfs:Classはリソースであること)、メタの世界においてクラスを操作すること(rdfs:Classを実体として扱うこと)ができるということなのだろう。
オントロジー定義のバージョンが違ったり、異なったオントロジーの定義をともかくマージしようとする場合に利用しうるだろう。
RDFスキーマやOWLのスキーマについて名前を変えられなかったという都合があったのかもしれない。しかし、世界観が異なるので、違うことが分かるように名前を変えた(名前空間でもアンダーバーを付けるでもなんでもよいが)方が良いと思う。
因みに、先に読み込ませたファイルをと同じ内容をprotégéで設定、出力させると
<owl:Class rdf:about="http://www.semanticweb.org/2025/5/ttt#BBB">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/2025/5/ttt#AAA"/>
</owl:Class>
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/2025/5/ttt#BBB">
<rdf:type rdf:resource="http://www.semanticweb.org/2025/5/ttt#AAA"/>
</owl:NamedIndividual>
と、クラスとインディビデュアルのそれぞれのttt:BBBを出力してくれる。
クラス(普遍者)を同時に個物としても扱うことが人にとって自然なのだろうか。違うと思う。クラスとサブクラスは属性が増える(制限)される関係である。勿論、親クラスと子クラスの違いを端的に表現しようとすると個物っぽく扱うのであるが、それは代表とかいうものであって、あくまでそれぞれのクラスの「代表的な」個物を比較しているのだろう。親の属性の範囲の上で個物として値を入れても違いは出ないだろう。ただし、哲学のオントロジーでは普遍者などない、実際の物事に対する指示があるだけだ、といった見方もある。これはOWLで扱えるものではない。