OWL中的阶级关系

时间:2016-07-31 16:38:03

标签: rdf owl protege description-logic

鉴于:

三个猫头鹰类:emptyTasktaskuserTask

类之间的关系如下:userTaskequivalentTo task - 这意味着userTask中的所有人都在taskemptyTasksubclassOf task

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

使用3次等效并不是我想做的事情。希望你们能理解我想要达到的目标。

例如,Protege中的这种关系会如何? DL中的答案可能会有所帮助,但我更倾向于一个实际的答案。这张照片可能有助于理解我想和所有个人说的想。隐士推理者保护的屏幕截图:

runningReasoner from class Task

此图片显示equivalentTotask之间的userTask关系。来自userTask的所有人都在task(推理逻辑)

当我想要使用推理者打开task时,我希望看到来自userTaskemptyTask所有个人

如果我想使用推理者打开userTask,我只想查看来自task的个人。

当我想使用推理者打开emptyTask时,我希望userTaskTask找不到任何人。

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

修改 screen 1 Screen 2

正如你所看到的那样,即使有3个班级也无法正常工作。按钮始终为灰色。我尝试了2种不同版本的Protege!

2 个答案:

答案 0 :(得分:1)

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

考虑一个任务实例,t。

t是通过子类公理的任务实例。所有任务实例都是userTask的实例,等同于你的等价。如果t不是userTask的一个实例,那么根据您的等价性,它不是任务的实例。

这会导致冲突: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 interface for creating disjoint union axioms

答案 1 :(得分: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

当我从记事本中将其复制到我的Ontology时不起作用。我试着休息你的方法。我复制了DisjointUnionOf部分。