0

让我们有一个只考虑 TBox(没有个体)的 OWL-DL 本体,让我们考虑

Chinesefamily hasChilren max 1
SterileChinesefamily subClassOf Chinesefamily
SterileChinesefamily hasChilren exactly 0

表达方式

hasChilren max 1

将返回ChinesefamilySterileChinesefamily作为子类

那么,如何指定可能有 0 或 1 个孩子(Chinesefamily)但不能正好有 0 个孩子(SterileChinesefamily)的类

我试过了

hasChilren max 1 and not hasChilren exactly 0

它什么都不返回!

============= 更新 ==============

请注意

hasChilren exactly 1

不是我想要的。相反,我的意思是作为以下子类的类:

  1. 允许其个人拥有 1 个或 0 个孩子的类 ( Chinesefamily)。
  2. AND
  3. NOT他们的个人必须恰好有零个孩子的类 ( SterileChinesefamily)。

(实际上,我只考虑 TBox(没有个人),但这次更新只是为了澄清)。

4

2 回答 2

1

那么,如何指定可能有 0 或 1 个孩子(Chinesefamily)但不能正好有 0 个孩子(SterileChinesefamily)的类

你说得对, hasChildren 正好 0hasChildren max 1的子类,因为有 0 个孩子的家庭肯定最多有一个孩子。如果您要询问只有一个孩子的家庭,只需询问类型的个人

        hasChildren 正好 1

我的意思是作为以下子类的类:

  • 允许其个人拥有 1 个或 0 个孩子的班级(中国家庭)
  • 不是他们的个人必须恰好有零个孩子的班级(SterileChinesefamily)。

像hasChildren max 1这样的类表达式与权限或“允许”具有值没有任何关系。它只是hasChildren属性具有 0 或 1 值的个人类别。您要的是作为两者子类的类:

  • 有孩子最多 1
  • hasChildren max 0补码

hasChildren max 0的补集是具有至少一个孩子的个体类别。也就是说,它的类hasChildren min 1。所以你要求的类是两者的子类:

  • 有孩子最多 1
  • 有儿童最少 1

这意味着你要求的子类

  • (hasChildren max 1) 和 (hasChildren min 1)

现在,那个交叉点相当于

  • hasChildren 正好 1

这是有道理的。可以有 0 个或 1 个孩子但没有 0 个孩子的事物是有 1 个孩子的事物。

于 2015-04-07T17:55:26.877 回答
1

您在问题开头使用的语法是非标准的:

Chinesefamily hasChilren max 1

它看起来像曼彻斯特语法,因为hasChildren max 1它是该语法中的一个类表达式,但如果你之前加上一个名字,它就不再是曼彻斯特了。从以下内容来看,您的意图似乎是:

Class: Chinesefamily
    EquivalentClass: hasChildren max 1

(顺便说一句,说所有中国家庭只有零个或一个孩子,这很奇怪。众所周知,有些中国家庭有更多的孩子……只是说)

一个只有 1 个孩子的家庭可以定义如下:

Class: FamilyWithOneChildren
   SubClassOf: hasChildren exactly 1

简单的。

于 2015-04-07T17:56:37.773 回答