Rdf DatatypeProperty、ObjectProperty和&;功能属性,我应该在什么时候使用它们?

Rdf DatatypeProperty、ObjectProperty和&;功能属性,我应该在什么时候使用它们?,rdf,sparql,owl,ontology,foaf,jena,Rdf,Sparql,Owl,Ontology,Foaf,Jena,编写本体时,有几种非常常用的类型,包括: DatatypeProperty 对象属性 功能属性 逆函数性质 前三个看起来像是以一种特定的方式使用的,但我发现我的想法受到了挑战,因为我在FOAF中看到了它们的使用方式 什么时候应该使用或不使用它们?其中的前两个,DatatypeProperty和ObjectProperty,描述带有属性的三元组应该具有什么类型的值。数据类型属性将个体与文字数据(例如字符串、数字、日期时间等)关联,而对象属性将个体与其他个体关联。像hasAge这样的东西通常是一

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

  • DatatypeProperty
  • 对象属性
  • 功能属性
  • 逆函数性质
前三个看起来像是以一种特定的方式使用的,但我发现我的想法受到了挑战,因为我在FOAF中看到了它们的使用方式


什么时候应该使用或不使用它们?

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

最后两个,函数属性和逆函数属性,用于对个体的属性值施加一些约束。某事物是功能属性,这意味着给定的个体最多只能有一个值。从逻辑上讲,这意味着如果p是一个函数属性,那么

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

由于OWL不进行唯一名称假设,不同的IRI可以引用同一个人,因此如果hasMother是一个函数属性,我们可以从

:John :hasMother :Margaret .
:John :hasMother :Peggy .

当然,这也可以用来提供一些“负面推论”。如果我们知道苏珊和佩吉是不同的人,那么我们可以推断苏珊不是约翰的母亲。即从

:John :hasMother :Peggy .
:Susan owl:differentFrom :Peggy .
那是假的

对于数据类型属性,其工作方式相同,但有更多关于哪些文本不同的内置信息。例如,推理者应该知道
“1”^^xsd:int
不同于
“2”^^xsd:int

逆函数性质类似,但方向相反。如果一个性质p是一个逆函数性质,那么对于给定的单个y,应该最多有一个x,这样p(x,y)

然而,这里有一个小小的警告。OWL2DL只支持反向函数对象属性,不支持反向函数数据类型属性。虽然我们可以将反向函数数据类型属性的语义描述为∀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不会逃逸。)

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

性别(功能和数据类型) 这是功能性的,因为我们希望每个人对性别属性最多有一个值。这是一个数据类型属性,因为FOAF的设计者希望值类似于
“男性”
“女性”
。如果他们定义了一些符号常量,例如
,那么这可能是一个对象属性

mbox(反函数和对象) mbox是一个对象属性,大概是因为它的值是
形式的IRI。这是一个反向函数属性,因为对于给定的邮箱,我们最多期望一个人拥有该邮箱。(当然,有些人可能会共享一个邮箱,所以这并不总是正确的,但这不是一个功能属性,因为一个人可以轻松拥有多个邮箱

mbox_sha1sum(反函数和数据类型) 我记得,此属性将Individual与其邮箱的sha1sum关联。使用此属性意味着人们不必共享他们的真实电子邮件地址。这是一个逆函数性质,其原因与mbox相同;我们希望每个mbox_sha1sum最多只属于一个人。类似地,它不是一个函数属性,因为一个人可以有多个邮箱,因此可以有多个sha1sum

这是有问题的情况,因为这是一个数据类型属性和一个反向函数属性,不应该发生(如上所述)。然而,OWL完全推理程序仍然可以让您推断,如果x和y都有相同的mbox1_shasum,那么x=y

工具书类
您可以阅读中的正式定义。您可能会对和感兴趣。

您能举一个在FOAF中挑战性地使用它们的例子吗?(我要指出,我最后知道的是,FOAF是一个RDF词汇表,而不是OWL本体,因此它对不同属性类型的使用不一定正确,而且可能不是OWL的最佳示例。)当然
gender
有FP和DtP类型,
mbox
有IFP和OP类型,
mbox\u sha1sum
有IFP和DtP类型。我可以使其中一些合理化,但有些我不能。在阅读了你的第一条评论之后,也许这就是为什么有些案例对我来说没有意义。好吧,我认为这些案例是有意义的,但我会在
:hasName owl:inverseOf :nameOf .
:john :hasName "John"@en .
"John"@en :nameOf :john . # Not legal.