在实例数据中声明子属性和超级属性,还是只声明子属性?

时间:2014-07-17 09:02:40

标签: rdf semantic-web owl ontology description-logic

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

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 .

1 个答案:

答案 0 :(得分:4)

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

  

hasChair⊑hasParticipant

等同于一阶公式:

  

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

这意味着它逻辑上来自hasChair(exampleConference,paulPill)hasParticipant(exampleConference,paulPill)。但是,如果只断言hasChair句子,则需要一个OWL(或RDFS)推理器来证明它。如果断言hasChair和hasParticipant句子,那么你不需要推理器来找出hasParticipant(exampleConference,paulPill)。

耶拿用户问过similar question'邮件列表最近关于逆属性。

  

如果a具有功能/反函数对,我应该   createStatement两个方向,或者我应该使用某种方式   推理装置填写?我在这里创造了很多三元组,所以   由于害怕横向非常缓慢,我倾向于自己制作它们   一个大型模型。

也就是说,如果你有一个属性参与,并且它是hasParticipant的反转,那么问题是它是否足以断言

  

hasParticipant(exampleConference,paulPill)

或者你是否应该同时做两件事

  

hasParticipant(exampleConference,paulPill)
  participatesIn(paulPill,exampleConference)

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