在OWL中是否有表达析取对象属性断言的方法?



我想知道是否有一种方法可以在OWL中表达逻辑复杂的对象属性断言。例如,我该如何表达"约翰喜欢橘子"或"玛丽喜欢橘子"?在一阶谓词逻辑这样的语言中,可以这样翻译:

Ljo v Lmo

在OWL中是否有同样简单的方法来表达这种对象属性语句?

注意:我知道包含逻辑析取的一般公理(例如,"所有法律实体不是法人就是人")可以用集合并的概念来表示。就目前的目的而言,我对涉及特定个体/实例的断言更感兴趣,就像上面的例子一样。

谢谢你的帮助!

严格地说,这在OWL中不能完全按照您的意愿完成,因为在OWL中,分离是在类之间定义的,而不是在个体之间定义的。事实上,名称描述逻辑选择强调,这个家庭的知识表示形式是用来描述一个感兴趣的领域的概念——这是描述类,不是个人。看到这篇文章为例。因此,老实说,我不认为在没有类的情况下指定个体之间的关系是OWL的预期用途。

然而,你所需要的可以通过一种复杂的方式来实现:

  1. maryjohn定义为个体
  2. mary_or_john定义为单个,并设置其类型为{john} or {mary}
  3. 现在你可以声明mary_or_john likes oranges.

这里的{mary}是指由单个mary组成的类。与{john}类似。

下面是定义这一点的OWL:

<owl:ObjectProperty rdf:about="likes"/>
<owl:NamedIndividual rdf:about="john"/>
<owl:NamedIndividual rdf:about="mary"/>
<owl:NamedIndividual rdf:about="oranges"/>
<owl:NamedIndividual rdf:about="john_or_mary">
<rdf:type>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<rdf:Description rdf:about="john"/>
</owl:oneOf>
</owl:Class>
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<rdf:Description rdf:about="mary"/>
</owl:oneOf>
</owl:Class>
</owl:unionOf>
</owl:Class>
</rdf:type>
<likes rdf:resource="oranges"/>
</owl:NamedIndividual>

更新2021/10/07正如@AntoineZimmermann指出的那样,你可以使用一个空白键来实现这一点,而不是引入单个john_or_mary。由于某种原因,我一直在关注如何在Protege中做到这一点,因为Protege不支持空白节点,你需要引入一个个体。

最新更新