Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rdf OWL中的类关系_Rdf_Owl_Protege_Description Logic - Fatal编程技术网

Rdf OWL中的类关系

Rdf OWL中的类关系,rdf,owl,protege,description-logic,Rdf,Owl,Protege,Description Logic,鉴于: 三个owl类:emptyTask,task,和userTask 类之间的关系如下:userTask是等价于task——这意味着userTask中的所有个体也在task中清空任务是任务的子类 但我想通过这种关系实现的是:userTask中的所有个体也在task(完成,推理逻辑)。来自emptyTask的所有个人都在task中,但是emptyTask和userTask之间没有任何关系。它们在我的本体论中没有任何关联 使用3倍当量不是我想做的。希望你们能理解我想要实现的目标 例如,在Prote

鉴于:

三个owl类:
emptyTask
task
,和
userTask

类之间的关系如下:
userTask
等价于
task
——这意味着
userTask
中的所有个体也在
task
中<代码>清空任务是
任务的子类

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

使用3倍当量不是我想做的。希望你们能理解我想要实现的目标

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

此图显示了
任务
用户任务
之间的
等价关系。来自
userTask
的所有个人也在
task
中(推理机逻辑)

当我想用推理器打开
task
时,我想看到
userTask
emptyTask

当我想用reasoner打开
userTask
时,我只想看到
task
中的个人

当我想用reasoner打开
emptyTask
时,我不想看到
userTask
Task
中的任何人

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

编辑:


正如您所看到的,即使有3个类,它也不起作用。按钮总是灰色的。我试了两个不同版本的Protege

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

考虑task的一个实例,t

通过子类axiom,t是task的一个实例。根据您的等效性,task的所有实例都是userTask的实例。如果t不是userTask的一个实例,那么根据等价关系,您可以确定它也不是task的一个实例

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

您的意思是将userTask作为task的一个单独的子类吗

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

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中创建这些公理

类别:,
类别:
类别:
脱节:
,
关系: userTask是owl:相当于ExternalTaskFactstype


从记事本将其复制到本体中时不起作用。我试图放弃你的方法。我复制了部分的断开部分。

好的,如果我理解您的更正,那么您当前有
:UserTask owl:equivalento:Task
:EmptyTask rdfs:subassof:Task
。我不清楚的是问题到底出在哪里。哪个部件工作不正常?请让你的问题更具可读性。试着把你的例子缩小到核心。顺便说一句,说这句话不是为了挑你的毛病:这是一项非常重要的技能,可以帮助你自己分析问题。澄清一下:据我所知,目前的设置(你已经拥有的两种关系)足以满足你的一切需要。那个么,在你们看来哪里出了问题呢?当使用子类时,owl:class emptyTask中的所有实例都不在任务中。我希望userTask和emptyTask中的所有实例都在Task中。但是emptyTask和userTask不应该彼此共享实例。这个问题是Protege方面的。我今天安装了最新版本,一切正常。之前,我有一个测试版的protege桌面,这导致了故障。我使用Jeen Broekstra的关系,它工作得很好。一个类可以是另一个类的实例吗?认为这只适用于个人?这是双关语-这是可能的,但它遵循不同的规则。你知道如何将不相交的并集应用到我的示例中吗?我会在到达我的计算机后更新答案-难以在phoneProtege上键入Manchester语法不允许我使用提供的选项卡进行不相交的并集,它总是灰色的,无论我使用哪一类(似乎有窃听)。你能用owl曼彻斯特语法提供这个参考吗?Task相当于userTask(union)。Task也从emptyTask获得了实例。EmptyTask和Task是不相交的,我将在选项卡general class axioms中写下这一点
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>