编写本体时,有几种非常常用的类型,包括:
前三种有点像它们将以特定的方式使用,但是我发现我对它们在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
当然,这也可以用于提供一些“负推论”。如果我们知道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中,推理机可以使用逻辑断言并在此基础上根据逻辑表示进行适当的推断。或者,某些推理机,例如jena基于规则的推理机)删除了“主体”从其内部表示中进行限制,然后过滤出路的结果,以确保非法RDF不会逃脱。)
现在,让我们看看您提到的情况:
这是有效的,因为我们希望每个人的性别属性最多具有一个价值。这是一个数据类型属性,因为FOAF的设计人员希望这些值类似于"male"
或"female"
。如果他们定义了一些符号常量,例如<http://.../MALE>
和<http://.../FEMALE>
,那么这可能是一个对象属性。
mbox是一个对象属性,大概是因为其值是形式为IRI的IRI <mailto:[email protected]>
。这是相反的功能属性,因为对于给定的邮箱,我们希望最多只有一个人拥有该邮箱。(当然,有些人可能会共享一个邮箱,所以这并不总是很正确,但是很好。)但是,这不是功能属性,因为一个人可以轻松拥有多个邮箱。
我记得,此属性将其个人与其邮箱的sha1sum相关联。使用此属性意味着人们不必共享真实的电子邮件地址。出于mbox相同的原因,它是一种反函数属性。我们希望每个mbox_sha1sum最多属于一个人。同样,它也不是功能属性,因为一个人可以拥有多个邮箱,因此可以拥有多个sha1sum。
这是有问题的情况,因为这是数据类型属性和逆函数属性,并且不应发生(如上所述)。但是,OWL Full推理程序仍然可以让您推断,如果x和y都具有相同的mbox1_shasum,则x = y。
您可以阅读OWL 2 Web本体语言直接语义(第二版)中的正式定义。您将对2.3.2对象属性表达公理和2.3.3数据属性表达公理感兴趣。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句