DatatypeProperty、ObjectProperty和FunctionalProperty有什么区别,应该在什么情况下使用它们?

34
写本体论时,有几种常用类型,包括:
· DatatypeProperty
· ObjectProperty
· FunctionalProperty
· InverseFunctionalProperty
前三个看起来似乎可以在特定的一些情况下使用,但是我发现,在 FOAF 中使用它们的方式挑战了我的想法。
每个属性应该在何时使用或不使用?

你能给出一个在FOAF中使用它们具有挑战性的例子吗?(我想指出的是,据我所知,FOAF是一种RDF词汇,而不是OWL本体论,因此其使用不同属性类型的方式不一定正确,并且这可能不是OWL的最佳示例。) - Joshua Taylor
当然... gender 有 FP 和 DtP 类型,mbox 有 IFP 和 OP 类型,mbox_sha1sum 有 IFP 和 DtP 类型。我可以理解其中一些,但有些我无法理解。在阅读了您的第一条评论后,也许这就是为什么其中一些对我来说没有意义的原因。 - Kristian
好的,我认为这些情况有道理,但我会写成一个答案... - Joshua Taylor
1
实际上,在OWL 2 DL中,最后一种情况确实是一个问题。@Ignazio提出了一项编辑,不幸的是,它被拒绝了,但我已经更新了我的答案,并指出mbox_sha1sum是一个问题。 - Joshua Taylor
1个回答

61
这段内容讲述了四种属性类型,DatatypeProperty和ObjectProperty描述属性三元组中值的类型,Datatype属性将个体与文字数据相关联(如字符串、数字、日期时间等),而Object属性将个体与其他个体相关联。例如,hasAge通常是Datatype属性,因为年龄是一个数字,但hasMother是Object属性,因为母亲是另一个个体。FunctionalProperty和InverseFunctionalProperty用于对个体属性值进行一些约束。函数属性意味着给定个体最多只能有一个值。逻辑上,这意味着如果p是一个函数属性,则对于所有的x、y和z,如果[p(x,y) ∧ p(x,z)]成立,则y=z。由于OWL不做唯一名称假设,因此不同的IRI可以引用相同的个体,因此如果hasMother是一个函数属性,则可以从中推断出。
:John :hasMother :Margaret .
:John :hasMother :Peggy .

那个

:Margaret owl:sameAs :Peggy

当然,这也可以用于提供一些“否定推论”。如果我们知道Susan和Peggy是不同的人,那么我们可以推断出Susan不是John的母亲。即从中推出否定结论。
:John :hasMother :Peggy .
:Susan owl:differentFrom :Peggy .

那是错误的

:John :hasMother :Susan .

对于数据类型属性,它的工作方式是相同的,但有关不同文字的信息要多得多。例如,推理器应该知道"1"^^xsd:int"2"^^xsd:int是不同的。
逆功能属性类似,但方向相反。如果属性p是一个逆功能属性,那么对于给定的个体y,应该最多只有一个x,使得p(x,y)。
然而,这里有一个小细节。OWL 2 DL仅支持逆功能对象属性,而不支持逆功能数据类型属性。虽然我们可以描述逆功能数据类型属性将具有的语义为∀x,y,z([p(x,z)∧p(y,z)]→x = y),但我们不能在以下条件之间具有等价性:

p是逆功能属性

p-1是功能属性

由于数据类型属性不能有反义词。这是由于 RDF(至少在当前版本中;我听说有关于改变这一点的讨论,但我不知道这个改变是否会波及到 OWL)不允许文字值作为三元组的主语。如果数据类型属性有反义词,我们将会遇到这种情况:
:hasName owl:inverseOf :nameOf .
:john :hasName "John"@en .

我们可以推断出

"John"@en :nameOf :john . # Not legal.

这意味着一个逆功能属性必须是一个对象属性。
(在OWL Full中,推理器可以使用逻辑断言并根据逻辑表示进行适当的推理。或者,一些推理器(例如的基于规则的推理器)从其内部表示中删除“不允许使用文字作为主语”的限制,然后在输出结果时过滤结果以确保非法RDF不会逃逸。)
现在,让我们看看您提到的案例:
性别(functional和datatype)
这是functional的,因为我们期望每个个体最多只有一个性别属性值。它是一个数据类型属性,因为FOAF的设计者希望值类似于“男”或“女”。如果他们定义了一些象征性常量,例如<http://.../MALE><http://.../FEMALE>,那么这就可以成为一个对象属性。
mbox(inverse functional和object)

mbox是一个对象属性,可能是因为其值是形如<mailto:someone@example.com>的IRI。它是一个反功能属性,因为对于给定的邮箱,我们预期最多只有一个人拥有该邮箱。(当然,有些人可能共享一个邮箱,所以这并不总是正确的,但无妨。)但它不是一个功能属性,因为一个人可以很容易地拥有多个邮箱。

mbox_sha1sum(反功能和数据类型)

据我回忆,此属性将个体与其邮箱的sha1sum相关联。使用此属性意味着人们不必共享他们的真实电子邮件地址。它与mbox一样是一个反功能属性;我们预计每个mbox_sha1sum最多属于一个个体。同样,它也不是一个功能属性,因为一个人可以有多个邮箱,因而有多个sha1sum。

这是一个问题,因为它是一个数据类型属性和一个反功能属性,这不应该发生(如上所述)。然而,一个OWL Full 推理器仍然可以让你推断如果x和y都有相同的mbox1_shasum,那么x = y。

参考文献

您可以在OWL 2 Web Ontology Language Direct Semantics (Second Edition)中阅读正式定义。 您可能会对2.3.2 对象属性表达式公理2.3.3 数据属性表达式公理感兴趣。


1
逆功能和数据类型属性在实践中并不是真正的问题。只有那些想要在存在这些属性的情况下定义正确和完整算法的人才会遇到问题。具体的OWL推理器可以在OWL DL本体上正确且有效地竞争,并且仍然能够对不是OWL DL的本体进行一些推理。例如,Pellet和HermiT都能够基于逆功能数据类型属性推断个体的相等性。 - Antoine Zimmermann
1
@AntoineZimmermann 很好,一些推理器可以处理这些结构。然而,了解W3C规范实际允许的内容非常重要,因为很容易因为“它能工作”而做某些事情,然后在以后意外地出现问题,因为它实际上并不在规范的限制范围内。其中一个问题是关于简单和非简单属性的各种约束;Protégé不会阻止您以OWL 2 DL禁止的方式使用属性,然后当您尝试使用它们时,推理器就会崩溃。:( - Joshua Taylor
@harpo 我认为一些三元组/四元组存储实际上可能支持图的更一般概念,其中文字可以出现在主语位置,但我不知道是否有任何关于更改RDF规范的动向。 - Joshua Taylor
@JoshuaTaylor 快速提问,OWL如何处理同时也是数据属性的多个FunctionalProperties?例如:--> 假设“:hasAge”是一个FunctionalProperty,所以---->:John:hasAge“30”和:John:hasAge“40”,但“30”不同于“40”;这会导致推理错误吗? - snackbar
@snackbar 我不会使用“推理错误”这个术语。 推理引擎会推断30 = 40,但也知道30!= 40,并认识到本体不一致。 这种机制很重要,因为它允许通过矛盾证明。例如,如果我们知道john hasAge 30询问john hasAge 40,推理器可以暂时假设john hasAge 40,然后看到这样的假设导致矛盾,然后推断出John没有年龄40,即它可以推断出NegativeDataPropertyAssertion(hasAge john 40) - Joshua Taylor
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接