鉴于:
三个猫头鹰类:emptyTask
,task
和userTask
。
类之间的关系如下:userTask
是equivalentTo
task
- 这意味着userTask
中的所有人都在task
。 emptyTask
是subclassOf
task
。
但我想通过这种关系实现的目标是:userTask
中的所有个体也都在task
中(完成,推理逻辑)。来自emptyTask
的所有人都在task
,但emptyTask
和userTask
彼此没有关系。它们与我的本体论没有任何关联。
使用3次等效并不是我想做的事情。希望你们能理解我想要达到的目标。
例如,Protege中的这种关系会如何? DL中的答案可能会有所帮助,但我更倾向于一个实际的答案。这张照片可能有助于理解我想和所有个人说的想。隐士推理者保护的屏幕截图:
此图片显示equivalentTo
和task
之间的userTask
关系。来自userTask
的所有人都在task
(推理逻辑)
当我想要使用推理者打开task
时,我希望看到来自userTask
和emptyTask
的所有个人
如果我想使用推理者打开userTask
,我只想查看来自task
的个人。
当我想使用推理者打开emptyTask
时,我希望userTask
或Task
找不到任何人。
问题是我应该如何设置彼此之间的关系以实现这一目标?
正如你所看到的那样,即使有3个班级也无法正常工作。按钮始终为灰色。我尝试了2种不同版本的Protege!
答案 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中创建这些公理。
答案 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 ExternalTaskFactstype
当我从记事本中将其复制到我的Ontology时不起作用。我试着休息你的方法。我复制了DisjointUnionOf部分。