在实例数据中声明子属性和超属性,或仅声明子属性



如果我有一个包含子属性公理的简单本体:

ex:hasChair rdfs:subPropertyOf ex:hasParticipant .

我想断言"Paul Pill是示例会议的主席,Jack Jill是示例会议的参与者。"这样写对吗?

: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 .

这在很大程度上取决于当你试图从本体检索数据时,你是否会有一个推理器。说

hasChair ⊑hasParticipant

等价于一阶公式:

原则;x, y。(hasChair (x, y) →hasParticipant (x, y)

这意味着它在逻辑上遵循hasChair(exampleconconference,paulPill), hasParticipant(exampleconconference,paulPill)。但是,如果只断言hasChair语句,则需要一个OWL(或RDFS)推理器来为您证明这一点。如果断言了hasChair和hasParticipant句子,那么就不需要推理器来找出hasParticipant(exampleConference,paulPill)。

最近在Jena用户的邮件列表中有一个关于逆属性的类似问题。

如果a有一个泛函/逆泛函对,我应该createstatstatement两个方向,或者我应该使用某种推理装置要填吗?我在这里创建了很多三元组,所以我倾向于自己做,因为我怕做得太慢一个大模型

也就是说,如果你有一个属性participesin,并且它是hasParticipant的逆,问题是断言

是否足够

hasParticipant (exampleConference paulPill)

还是两者都做

hasParticipant (exampleConference paulPill)
participatesIn (paulPill exampleConference)

答案大致相同:如果你有一个推理者,那么一个就足够了。如果你不喜欢,那么你可能两者都想要。

最新更新