DL;返回最大1且不完全为0的类

时间:2015-04-07 17:37:00

标签: owl description-logic dlquery

让我们考虑只考虑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

它返回Nothing!

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

请注意

hasChilren exactly 1

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

  1. 允许其个人拥有1个或0个孩子的班级(Chinesefamily)。
  2. AND
  3. NOT他们的个人必须完全没有孩子的班级(SterileChinesefamily)。
  4. (实际上,我只考虑TBox(没有个人),但此更新只是为了澄清)。

2 个答案:

答案 0 :(得分:1)

  

那么,如何指定可能有0个或1个子节点的类   (中国家庭),但一定不能有0个孩子   (SterileChinesefamily)

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

类型的人

hasChildren正好1

  

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

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

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

  • hasChildren max 1
  • hasChildren max 0的补充

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

  • hasChildren max 1
  • hasChildren min 1

这意味着你要求

的子类
  • (hasChildren max 1)和(hasChildren min 1)

现在,那个交叉点相当于

  • hasChildren正好1

这是有道理的。可以有0个或1个孩子,但没有0个孩子的东西是有1个孩子的东西。

答案 1 :(得分:1)

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

Chinesefamily hasChilren max 1

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

Class: Chinesefamily
    EquivalentClass: hasChildren max 1

(作为旁注,很奇怪,所有中国家庭只有零或一个孩子。众所周知,有中国家庭有更多孩子......只是说)

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

Class: FamilyWithOneChildren
   SubClassOf: hasChildren exactly 1

易。