オントロジーを書くとき、次のようないくつかの非常に一般的に使用されるタイプがあります。
最初の3つは、特定の方法で使用されるように見えますが、FOAFで使用されているのをどのように見てきたかによって、それらが挑戦されているという私の考えを見つけました。
それぞれをいつ使用するか、使用しないか。
これらの最初の2つであるDatatypePropertyとObjectPropertyは、プロパティを持つトリプルが持つべき値の種類を記述します。データ型プロパティは個人をリテラルデータ(文字列、数値、日時など)に関連付けますが、オブジェクトプロパティは個人を他の個人に関連付けます。年齢は数値であるため、hasAgeのようなものは通常、データ型プロパティになりますが、母親は別の個人であるため、hasMotherはオブジェクトプロパティになります。
これらの最後の2つであるFunctionalPropertyとInverseFunctionalPropertyは、個人のプロパティの値にいくつかの制約を課すために使用されます。何かが機能的特性であるということは、与えられた個人がそれに対して多くても1つの値を持つことができることを意味します。論理的には、これはpが機能プロパティである場合、
∀x、y、z。([p(x、y)∧p(x、z)]→y = z)
OWLはnotで一意の名前を想定しているため、異なるIRIが同じ個人を参照できるため、hasMotherの場合は機能プロパティであり、
:John :hasMother :Margaret .
:John :hasMother :Peggy .
それ
:Margaret owl:sameAs :Peggy
もちろん、これを使用して「否定的な推論」を提供することもできます。スーザンがペギーとは別の人物であることがわかっている場合、スーザンはではなくジョンの母親であると推測できます。つまり、
:John :hasMother :Peggy .
:Susan owl:differentFrom :Peggy .
それはfalseだということ
:John :hasMother :Susan .
データ型プロパティの場合、これは同じように機能しますが、どのリテラルが異なるかについての情報がさらに組み込まれています。たとえば、推論担当者は、"1"^^xsd:int
が"2"^^xsd:int
とは異なることを知っている必要があります。
逆関数プロパティは似ていますが、逆方向です。プロパティpが逆関数プロパティである場合、特定の個々のyに対して、p(x、y)となるxが最大で1つ存在する必要があります。
ただし、ここには少し注意が必要です。 OWL 2 DLは、逆関数オブジェクトプロパティのみをサポートし、逆関数データ型プロパティはサポートしません。逆関数データ型プロパティが持つセマンティクスは、∀x、y、z([p( x、z)∧p(y、z)]→x = y)、私たちcannotは、次の条件の間で同等性を持ちます。
pは逆関数プロパティです
そしてそれ
p-1 機能特性です
データ型のプロパティは逆数を持つことができないためです。これは、RDF(少なくとも現在のバージョンでは、変更がOWLに波及するかどうかはわかりませんが、これを変更するという話があると聞きました)という事実から生じます。トリプルのsubjectsとしてリテラル値を許可しません。データ型プロパティに逆数がある場合、次のような状況になります。
:hasName owl:inverseOf :nameOf .
:john :hasName "John"@en .
そして私たちは推測します
"John"@en :nameOf :john . # Not legal.
これは、逆関数プロパティがオブジェクトプロパティでなければならないことを意味します。
(OWL Fullでは、推論器は論理アサーションを使用して、論理表現に基づいて適切な推論を行うことができます。あるいは、いくつかの推論器、たとえば jena のルールベースの推論器) 「サブジェクトとして許可されたリテラルはありません」という制限を内部表現から削除し、途中で結果をフィルター処理して、illegal-RDFがエスケープされないようにします。)
さて、あなたが言及したケースを見てみましょう:
これは機能的です。なぜなら、各個人が性別プロパティに対して最大で1つの値を持つことを期待しているからです。 FOAFの設計者は、値が"male"
または"female"
のようなものであると予想したため、これはデータ型プロパティです。 <http://.../MALE>
や<http://.../FEMALE>
などの記号定数を定義している場合、これはオブジェクトプロパティである可能性があります。
mboxはオブジェクトプロパティです。おそらく、その値が<mailto:[email protected]>
の形式のIRIであるためです。特定のメールボックスについて、多くても1人がそのメールボックスを持っていると予想されるため、これは逆の機能プロパティです。 (もちろん、メールボックスを共有する人もいるので、これは常に正しいとは限りませんが、まあまあです。)これは機能プロパティではありませんただし、人は簡単に複数のメールボックスを持つことができるためです。
私が思い出したように、このプロパティは、個人をメールボックスのsha1sumに関連付けます。このプロパティを使用すると、必ずしも実際の電子メールアドレスを共有する必要がなくなります。これは、mboxと同じ理由で逆関数プロパティです。各mbox_sha1sumは最大で1人の個人に属すると予想されます。同様に、1人が複数のメールボックス、つまり複数のsha1sumを持つことができるため、これは機能プロパティではありません。
これは問題のあるケースです。これはデータ型プロパティと逆関数プロパティであり、(上記のように)発生しないはずだからです。ただし、OWL Full推論機能を使用すると、xとyの両方が同じmbox1_shasumを持っている場合、x = yであると推測できる場合があります。
正式な定義は OWL 2 Webオントロジー言語直接セマンティクス(第2版) で読むことができます。 2.3.2オブジェクトプロパティ式の公理 および 2.3.3データプロパティ式の公理 に興味があります。