2

鉴于:

三种猫头鹰类:emptyTasktaskuserTask

类之间的关系如下:userTaskis equivalentTo task- 这意味着所有在 中的个体也都在userTasktaskemptyTask是一个subclassOf task

但我想通过这种关系实现的是:所有来自userTask的个人也都在task(完成,推理逻辑)。来自 的所有个体emptyTask都在 中task,但彼此之间没有任何关系emptyTaskuserTask它们在我的本体中没有任何关系。

使用 3 次等价物不是我想做的。希望你们能理解我想要实现的目标。

例如,这种关系在 Protege 中会是什么样子。DL 中的答案可能会有所帮助,但我更喜欢实用的答案。这张照片可能有助于理解我想对所有个人说的话。protege with hermit reasoner 截图:

类Task中的runningReasoner

这张图显示了和之间的equivalentTo关系。来自的所有个体也都在(推理逻辑)taskuserTaskuserTasktask

当我想用推理器打开时,task想看到来自和userTaskemptyTask

当我想userTask用推理器打开时,我只想看到个人task

当我想emptyTask用推理器打开时,我不想看到来自userTask或的个人Task

问题是我应该如何设置彼此的关系以实现这一目标?

编辑: 屏幕 1 屏幕 2

正如您所看到的,即使有 3 个课程也无法正常工作。该按钮始终为灰色。我尝试了 2 个不同版本的 Protege!

4

2 回答 2

2

如果 userTask 等价于 task,emptyTask 不可能是 task 的子类并且与 userTask 没有关系。

考虑一个任务实例 t。

t 是您的子类公理的任务实例。任务的所有实例都是 userTask 的实例,由您等价。如果 t 不是 userTask 的一个实例,那么根据你的等价,你有它也不是一个 task 的实例。

这会导致冲突:t 是且不是任务的实例。这会使本体不一致。

您的意思是将 userTask 作为单独的任务子类吗?

在曼彻斯特语法中,不相交的联合如下所示:

Class: <http://iri/#b>
Class: <http://iri/#c>
Class: <http://iri/#d>

Class: <http://iri/#a>
    DisjointUnionOf: 
        <http://iri/#b>, <http://iri/#c>, <http://iri/#d>

不相交的联合相当于将主类声明为等价于所有提到的类的联合,并声明这些类不相交。因此,您可以在不显式使用不相交联合公理的情况下获得相同的结果。

Protege 也应该允许您在其 GUI 中创建这些公理。

用于创建不相交联合公理的 Protege 接口

于 2016-08-01T07:50:32.010 回答
0
Class: <http://www.yawlfoundation.org/yawlschema#emptyTask>,
Class: <http://dkm.fbk.eu/index.php/BPMN2_Ontology#userTask>
Class: <http://www.yawlfoundation.org/yawlschema#ExternalTaskFactsType>

DisjointUnionOf:
    <http://www.yawlfoundation.org/yawlschema#emptyTask>,
    <http://dkm.fbk.eu/index.php/BPMN2_Ontology#userTask>

关系: userTask是 owl:equivalentTo ExternalTask ​​Factstype

当我将其从记事本复制到我的本体时不起作用。我试图放松你的​​方法。我复制了 DisjointUnionOf 部分。

于 2016-08-02T14:45:01.043 回答