让我们考虑只考虑TBox(没有个人)的OWL-DL本体,让我们考虑一下
Chinesefamily hasChilren max 1
SterileChinesefamily subClassOf Chinesefamily
SterileChinesefamily hasChilren exactly 0
表达式
hasChilren max 1
将返回Chinesefamily
和SterileChinesefamily
作为子类
那么,如何指定可能有0个或1个孩子(Chinesefamily
)但不能只有0个孩子的班级(SterileChinesefamily
)
我试过
hasChilren max 1 and not hasChilren exactly 0
它返回Nothing!
=============更新=============
请注意
hasChilren exactly 1
不是我想要的。相反,我的意思是作为子类的类:
Chinesefamily
)。AND
NOT
他们的个人必须完全没有孩子的班级(SterileChinesefamily
)。(实际上,我只考虑TBox(没有个人),但此更新只是为了澄清)。
答案 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 0 的补充是至少有一个孩子的个人类。也就是说,它是 hasChildren min 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
易。