我们可以使用OWL API在子类之间创建ObjectProperty吗?

时间:2016-12-13 08:01:47

标签: owl-api

这是在保护中创建的。是否可以在子类之间创建相同的objectproperty,如图所示?还可以添加他们的范围和域名吗?

我是否可以拥有示例代码。 谢谢^ _ ^ 下面是图片的链接。

https://i.stack.imgur.com/Wlzl8.png

1 个答案:

答案 0 :(得分:0)

图片与您的问题/问题无关。

是否可以在子类之间创建相同的object属性?

简而言之:是的,你可以,但你不想要它。

define four classes  A B C D
B is a sub class of A
D is a sub class of C

define one object property OP_1 between A and C  (range & domain)
define one object property OP_2 between B and D  (range & domain)

如果OP_1和OP_2有不同的名称,那么绝对没有问题。

但你说你想要OP_1和OP_2是同一个objectProperty;这不是一个好消息:

  1. 让定义OP_1等同于OP_2
  2. 然后在本体上使用推理引擎/推理器。
  3. 你是否已经在超类上定义了一个属性,推理者应该如何理解子类之间的属性?它将理解它们与超类(或它所绑定的任何类)相同。在大多数情况下,子类上的断言(类限制,范围,域)将被忽略。

    Protege和/或owl-api允许您编写它,但不能确保您的一致性或特定行为/含义。

    你应该做什么:

    创建属性分类:

    define OP_1 a sub property of the super property OP
    define OP_2 a sub property of the super property OP
    
    had domain/range of super class on OP
    
    had domain/range of whatever you want on OP_1 and OP_2 using sub-classes.