在编写本体时,有几种非常常用的类型,包括:
- 数据类型属性
- 对象属性
- 功能特性
- 逆函数属性
前三个看起来好像会以特定的方式使用,但我发现我对它们的看法受到了我在 FOAF 中的使用方式的挑战。
什么时候应该使用或不使用它们?
其中的前两个,DatatypeProperty 和 ObjectProperty,描述了具有该属性的三元组应该具有什么样的值。数据类型属性将个人与文字数据(例如,字符串、数字、日期时间等)相关联,而对象属性将个人与其他个人相关联。像 hasAge 这样的东西通常是一个数据类型属性,因为年龄是一个数字,但 hasMother 是一个对象属性,因为母亲是另一个人。
其中最后两个,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
当然,这也可以用来提供一些“负面推断”。如果我们知道苏珊和佩吉是不同的人,那么我们可以推断苏珊不是约翰的母亲。即,从
: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 中,推理器可以使用逻辑断言并根据逻辑表示在那里做出适当的推论。或者,一些推理器,例如jena的基于规则的推理器)删除“不允许文字为主题”从他们的内部表示中限制,然后在出路时过滤结果以确保非法 RDF 不会逃脱。)
现在,让我们看一下您提到的案例:
这是功能性的,因为我们希望每个人的性别属性最多有一个值。这是一个数据类型属性,因为 FOAF 的设计者希望这些值类似于"male"
or "female"
。如果他们定义了一些符号常量,例如<http://.../MALE>
和<http://.../FEMALE>
,那么这可能是一个对象属性。
mbox 是一个对象属性,大概是因为它的值是 IRI 的形式<mailto:someone@example.com>
。这是一个反函数属性,因为对于给定的邮箱,我们希望最多有一个人拥有该邮箱。(当然,有些人可能会共享一个邮箱,所以这并不总是正确的,但是哦。)不过,它不是一个函数属性,因为一个人可以很容易地拥有多个邮箱。
我记得,这个属性将个人与他们邮箱的 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 Object Property Expression Axioms和2.3.3 Data Property Expression Axioms感兴趣。