DatatypeProperty,ObjectProperty和FunctionalProperty有什么区别,我应该何时使用它们?

Kri*_*ian 19 rdf owl ontology foaf sparql

在编写本体时,有几种非常常用的类型,包括:

  • DatatypeProperty属性
  • OBJECTPROPERTY
  • 函数型
  • InverseFunctionalProperty

前三种看起来像是以某种特定的方式使用,但我发现我对它们的看法受到我在FOAF中看到它们使用方式的挑战.

应该何时使用或不使用它们?

Jos*_*lor 42

前两个,DatatypeProperty和ObjectProperty,描述属性的三元组应该具有哪种.数据类型属性将个体与文字数据(例如,字符串,数字,日期类型等)相关联,而对象属性将个体与其他个体相关联.像hasAge这样的东西通常是数据类型属性,因为age是一个数字,但hasMother将是一个对象属性,因为母亲是另一个人.

其中最后两个,FunctionalProperty和InverseFunctionalProperty,用于对个人的属性值进行一些约束.某个东西是一个功能属性意味着一个给定的个人最多可以拥有一个值.从逻辑上讲,这意味着如果p是一个功能属性,那么

∀x,y,z.([p(x,y)∧p(x,z)]→y = z)

由于OWL 没有做出唯一名称假设,因此不同的IRI可以引用同一个人,因此如果hasMother是一个功能属性,我们可以从

:John :hasMother :Margaret .
:John :hasMother :Peggy .
Run Code Online (Sandbox Code Playgroud)

:Margaret owl:sameAs :Peggy
Run Code Online (Sandbox Code Playgroud)

当然,这也可以用来提供一些"负面推断".如果我们知道苏珊与佩吉不同,那么我们可以推断出苏珊不是约翰的母亲.即,来自

:John :hasMother :Peggy .
:Susan owl:differentFrom :Peggy .
Run Code Online (Sandbox Code Playgroud)

它的错误在于

:John :hasMother :Susan .
Run Code Online (Sandbox Code Playgroud)

对于数据类型属性,它的工作方式相同,但是有更多关于哪些文字不同的内置信息.例如,推理者应该知道"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 .
Run Code Online (Sandbox Code Playgroud)

我们推断

"John"@en :nameOf :john . # Not legal.
Run Code Online (Sandbox Code Playgroud)

这意味着反函数属性必须是对象属性.

(在OWL Full中,推理者可以使用逻辑断言并在那里进行适当的推断,我猜,基于逻辑表示.或者,一些推理者,例如,的基于规则的reasoners)删除"没有允许的文字受试者"限制其内部表示,然后在出路时过滤结果,以确保非法RDF不会逃脱."

现在,让我们来看看你提到的案例:

性别(功能和数据类型)

这是有用的,因为我们希望每个人最多只有一个性别属性值.它是一个数据类型属性,因为FOAF的设计者期望值类似于"male""female".如果他们定义了一些符号常量,例如,<http://.../MALE><http://.../FEMALE>,那么这可能是一个对象属性.

mbox(反函数和对象)

mbox是一个对象属性,可能是因为它的值是表单的IRI <mailto:someone@example.com>.这是一个反向功能属性,因为对于给定的邮箱,我们最多只能有一个人拥有该邮箱.(当然,有些人可能会共享一个邮箱,所以这不是一直都是正确的,但是很好.)但这不是一个功能属性,因为一个人可以轻松拥有多个邮箱.

mbox_sha1sum(反函数和数据类型)

我记得,这个属性将一个人与他们邮箱的sha1sum联系起来.使用此属性意味着人们不一定必须共享其真实的电子邮件地址.它是一个反函数属性,出于与mbox相同的原因; 我们希望每个mbox_sha1sum最多属于一个人.同样,它不是一个功能属性,因为一个人可以有多个邮箱,因此不止一个sha1sum.

这是有问题的情况,因为这是一个数据类型属性和反函数属性,并且不应该发生(如上所述).但是,OWL Full推理器仍然可以让您推断,如果x和y都具有相同的mbox1_shasum,则x = y.

参考

您可以阅读OWL 2 Web Ontology Language Direct Semantics(第二版)中的正式定义.您将对2.3.2对象属性表达式公理2.3.3数据属性表达式公理感兴趣.