不相交对象属性与不相交 类
Disjoint Object Properties vs Disjoint Classes
如果您查看 OWL 2 specification,则定义了以下公理:
不相交的属性
DisjointObjectProperties( a:hasFather a:hasMother ) Fatherhood is disjoint with motherhood.
ObjectPropertyAssertion( a:hasFather a:Stewie a:Peter ) Peter is Stewie's father.
ObjectPropertyAssertion( a:hasMother a:Stewie a:Lois ) Lois is the mother of Stewie.
不相交类
DisjointClasses( a:Boy a:Girl ) Nothing can be both a boy and a girl.
ClassAssertion( a:Boy a:Stewie ) Stewie is a boy.
所以我的问题是,如果我想定义以下内容:
Declaration( NamedIndividual( a:Peter ) )
Declaration( NamedIndividual( a:Lois ) )
ClassAssertion( a:Father a:Peter )
ClassAssertion( a:Mother a:Lois )
然后要定义不相交,我是否需要 (1) 或 (2) 或同时需要两者:
(1) DisjointObjectProperties( a:hasFather a:hasMother )
(2) DisjointClasses( a:Mother a:Father )
能够让推理者意识到没有母亲可以成为父亲?定义两者不是多余的吗?
您没有提到 类 Mother 和 Father 与属性 hasMother 和 hasFather 之间的任何联系,因此很难判断您是否在做一些额外的假设(例如 hasMother 的范围是妈妈)。
当您断言 类 C 和 D 不相交时,您是说对于每个单独的 x,C(x) 和 D(x)
不可能是这种情况
当您断言属性 P 和 Q 不相交时,您是说对于每一对个体 x 和 y,不可能同时存在 P(x,y) 和 Q(x,y) .
现在,假设您有一个 ontology 和 类 母亲和父亲,并且属性 hasMother 和 hasFather,具有范围 母亲和父亲。这意味着只要你有 hasMother(a,m),你就可以推断出 Mother(m),而只要你有 hasFather(a,f),你就可以推断出 Father(f)。
在这种特殊情况下,如果您声明 Mother 和 Father 不相交,这会产生使 hasMother 和 hasFather 不相交的副作用,因为如果您有 hasMother(x,y) 和 hasFather(x,y),那么您会有 Mother(y) 和 Father(y),这是不一致的。
在这种特殊情况下,如果您声明 hasMother 和 hasFather 是不相交的,那么您不会产生使 Mother 和 Father 不相交的副作用 类。例如,你可以有 hasMother(x1,y) 和 hasFather(x2,y),并从中推断出 Mother(y) 和 Father(y)。
如果您查看 OWL 2 specification,则定义了以下公理:
不相交的属性
DisjointObjectProperties( a:hasFather a:hasMother ) Fatherhood is disjoint with motherhood. ObjectPropertyAssertion( a:hasFather a:Stewie a:Peter ) Peter is Stewie's father. ObjectPropertyAssertion( a:hasMother a:Stewie a:Lois ) Lois is the mother of Stewie.
不相交类
DisjointClasses( a:Boy a:Girl ) Nothing can be both a boy and a girl.
ClassAssertion( a:Boy a:Stewie ) Stewie is a boy.
所以我的问题是,如果我想定义以下内容:
Declaration( NamedIndividual( a:Peter ) )
Declaration( NamedIndividual( a:Lois ) )
ClassAssertion( a:Father a:Peter )
ClassAssertion( a:Mother a:Lois )
然后要定义不相交,我是否需要 (1) 或 (2) 或同时需要两者:
(1) DisjointObjectProperties( a:hasFather a:hasMother )
(2) DisjointClasses( a:Mother a:Father )
能够让推理者意识到没有母亲可以成为父亲?定义两者不是多余的吗?
您没有提到 类 Mother 和 Father 与属性 hasMother 和 hasFather 之间的任何联系,因此很难判断您是否在做一些额外的假设(例如 hasMother 的范围是妈妈)。
当您断言 类 C 和 D 不相交时,您是说对于每个单独的 x,C(x) 和 D(x)
不可能是这种情况当您断言属性 P 和 Q 不相交时,您是说对于每一对个体 x 和 y,不可能同时存在 P(x,y) 和 Q(x,y) .
现在,假设您有一个 ontology 和 类 母亲和父亲,并且属性 hasMother 和 hasFather,具有范围 母亲和父亲。这意味着只要你有 hasMother(a,m),你就可以推断出 Mother(m),而只要你有 hasFather(a,f),你就可以推断出 Father(f)。
在这种特殊情况下,如果您声明 Mother 和 Father 不相交,这会产生使 hasMother 和 hasFather 不相交的副作用,因为如果您有 hasMother(x,y) 和 hasFather(x,y),那么您会有 Mother(y) 和 Father(y),这是不一致的。
在这种特殊情况下,如果您声明 hasMother 和 hasFather 是不相交的,那么您不会产生使 Mother 和 Father 不相交的副作用 类。例如,你可以有 hasMother(x1,y) 和 hasFather(x2,y),并从中推断出 Mother(y) 和 Father(y)。