不相交对象属性与不相交 类

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)。