1

サブプロパティ公理を含む単純なオントロジーがある場合:

ex:hasChair rdfs:subPropertyOf ex:hasParticipant .

「ポール・ピルは模範会議の議長であり、ジャック・ジルは模範会議の参加者だった」と断言したい。書くのは正しいですか:

:exampleConference a ex:AcademicConference ;
                   ex:hasChair :paul_pill ;
                   ex:hasParticipant :jack_jill .

それとも、Paul Pill が参加者であることを明示的に指定する必要がありますか (hasChair は hasParticipant のサブプロパティですが)。つまり、次のように書く必要がありますか?

:exampleConference a ex:AcademicConference ;
                   ex:hasChair :paul_pill ;
                   ex:hasParticipant :paul_pill, :jack_jill .
4

1 に答える 1

4

オントロジーからデータを取得しようとしているときに、推論を行うかどうかに大きく依存します。そう言って

hasChair ⊑ hasParticipant

は次の 1 次式と同等です。

∀x,y.(hasChair(x,y) → hasParticipant(x,y))

これは、論理的には hasChair(exampleConference,paulPill) から hasParticipant(exampleConference,paulPill) に従うことを意味します。ただし、hasChair 文のみをアサートする場合は、それを証明するために OWL (または RDFS) 推論が必要になります。hasChair 文と hasParticipant 文の両方をアサートする場合、hasParticipant(exampleConference,paulPill) を見つけるための推論は必要ありません。

最近、Jena ユーザーのメーリング リストで逆プロパティについて同様の質問がありました。

機能/逆機能のペアがある場合、両方の方向に createStatement を作成する必要がありますか、それとも何らかの推論デバイスを使用して埋める必要がありますか? 私はここで多くのトリプルを作成しているので、大きなモデルの移動が非常に遅くなるのを恐れて、自分で作成する傾向があります。

つまり、participantIn というプロパティがあり、それが hasParticipant の逆である場合、問題はそれがアサートするのに十分かどうかです。

hasParticipant(exampleConference,paulPill)

または両方を行うべきかどうか

hasParticipant(exampleConference,paulPill)
参加しています(paulPill,exampleConference)

答えはほぼ同じです。推論できる人がいる場合は、1 つで十分です。そうでない場合は、おそらく両方が必要です。

于 2014-07-17T11:22:02.217 に答える