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

克里斯蒂安

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

  • 数据类型属性
  • 对象属性
  • 功能属性
  • 逆函数属性

前三种有点像它们将以特定的方式使用,但是我发现我对它们在FOAF中的使用方式的挑战给我带来了挑战。

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

约书亚·泰勒(Joshua Taylor)

其中的前两个,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中,推理机可以使用逻辑断言并在此基础上根据逻辑表示进行适当的推断。或者,某些推理机,例如基于规则的推理机)删除了“主体”从其内部表示中进行限制,然后过滤出路的结果,以确保非法RDF不会逃脱。)

现在,让我们看看您提到的情况:

性别(功能和数据类型)

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

mbox(反函数和对象)

mbox是一个对象属性,大概是因为其值是形式为IRI的IRI <mailto:[email protected]>这是相反的功能属性,因为对于给定的邮箱,我们希望最多只有一个人拥有该邮箱。(当然,有些人可能会共享一个邮箱,所以这并不总是很正确,但是很好。)但是,这不是功能属性,因为一个人可以轻松拥有多个邮箱。

mbox_sha1sum(反函数和数据类型)

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

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

参考文献

您可以阅读OWL 2 Web本体语言直接语义(第二版)中的正式定义将对2.3.2对象属性表达公理2.3.3数据属性表达公理感兴趣

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

set,export和env之间有什么区别?什么时候应该使用它们?

来自分类Dev

set,export和env之间有什么区别?什么时候应该使用它们?

来自分类Dev

电子版中的BrowserWindow和<Webview>标签之间有什么区别?什么时候建议使用它们?

来自分类Dev

Koa:koa-route和koa-mount之间有什么区别?我什么时候应该使用每个?

来自分类Dev

Kotlin中的.kt和.kts文件有什么区别。什么时候应该使用.kts文件而不是.kt文件?

来自分类Dev

MVC 6视图组件与部分视图:有什么区别?什么时候应该使用?

来自分类Dev

HOC 和标准组件的主要区别是什么?我什么时候应该以正确的方式使用它们?

来自分类Dev

“参数”和“数组参数”之间有什么区别,什么时候应使用?

来自分类Dev

什么时候使用,计时器和线程有什么区别?

来自分类Dev

“参数”和“数组参数”之间有什么区别,什么时候应使用?

来自分类Dev

Android的Html.escapeHtml和TextUtils.htmlEncode有什么区别?什么时候应该使用其中一个?

来自分类Dev

GHC Haskell中的无盒装价值是多少,什么时候应该使用它们?

来自分类Dev

Yii2中的$ with和$ joinWith有什么区别以及何时使用它们?

来自分类Dev

FormGroup 和 FormArray 有什么区别?什么时候用什么?

来自分类Dev

Rails中的脚手架有哪些用例?什么时候应该使用和不使用它?

来自分类Dev

FIRApp.deleteApp 有什么作用,我应该什么时候使用它?

来自分类Dev

虚拟函数,什么时候使用它们?

来自分类Dev

BeforeAll 与 BeforeEach。什么时候使用它们?

来自分类Dev

什么时候应该使用<或<()或<<和>或>()?

来自分类Dev

Powershell阵列:何时使用它们;什么时候避免他们 和使用它们的问题

来自分类Dev

Java类FileSystem和FileSystems之间有什么区别?什么时候使用另一个?

来自分类Dev

Grunt,Gulp.js和Bower之间有什么区别?为什么和何时使用它们?

来自分类Dev

IOS开发中的协议,扩展名和类别之间有什么区别?以及如何正确使用它们?

来自分类Dev

<f:facet>有什么作用,什么时候应该使用?

来自分类Dev

什么时候应该使用原子性?什么时候真正有用?

来自分类Dev

这些ASP.NET身份,成员资格是什么?什么时候使用它们?

来自分类Dev

以下两个声明之间有什么区别以及何时应使用它们

来自分类Dev

什么时候应该使用`drain`和`into_iter`?

Related 相关文章

  1. 1

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

  2. 2

    set,export和env之间有什么区别?什么时候应该使用它们?

  3. 3

    set,export和env之间有什么区别?什么时候应该使用它们?

  4. 4

    电子版中的BrowserWindow和<Webview>标签之间有什么区别?什么时候建议使用它们?

  5. 5

    Koa:koa-route和koa-mount之间有什么区别?我什么时候应该使用每个?

  6. 6

    Kotlin中的.kt和.kts文件有什么区别。什么时候应该使用.kts文件而不是.kt文件?

  7. 7

    MVC 6视图组件与部分视图:有什么区别?什么时候应该使用?

  8. 8

    HOC 和标准组件的主要区别是什么?我什么时候应该以正确的方式使用它们?

  9. 9

    “参数”和“数组参数”之间有什么区别,什么时候应使用?

  10. 10

    什么时候使用,计时器和线程有什么区别?

  11. 11

    “参数”和“数组参数”之间有什么区别,什么时候应使用?

  12. 12

    Android的Html.escapeHtml和TextUtils.htmlEncode有什么区别?什么时候应该使用其中一个?

  13. 13

    GHC Haskell中的无盒装价值是多少,什么时候应该使用它们?

  14. 14

    Yii2中的$ with和$ joinWith有什么区别以及何时使用它们?

  15. 15

    FormGroup 和 FormArray 有什么区别?什么时候用什么?

  16. 16

    Rails中的脚手架有哪些用例?什么时候应该使用和不使用它?

  17. 17

    FIRApp.deleteApp 有什么作用,我应该什么时候使用它?

  18. 18

    虚拟函数,什么时候使用它们?

  19. 19

    BeforeAll 与 BeforeEach。什么时候使用它们?

  20. 20

    什么时候应该使用<或<()或<<和>或>()?

  21. 21

    Powershell阵列:何时使用它们;什么时候避免他们 和使用它们的问题

  22. 22

    Java类FileSystem和FileSystems之间有什么区别?什么时候使用另一个?

  23. 23

    Grunt,Gulp.js和Bower之间有什么区别?为什么和何时使用它们?

  24. 24

    IOS开发中的协议,扩展名和类别之间有什么区别?以及如何正确使用它们?

  25. 25

    <f:facet>有什么作用,什么时候应该使用?

  26. 26

    什么时候应该使用原子性?什么时候真正有用?

  27. 27

    这些ASP.NET身份,成员资格是什么?什么时候使用它们?

  28. 28

    以下两个声明之间有什么区别以及何时应使用它们

  29. 29

    什么时候应该使用`drain`和`into_iter`?

热门标签

归档