我在 protege 有一个小玩具本体,我想表示“只有白色的鸭子是 AlbinoDuck”
这是我的本体
我也创建了属性
hasColor
我有
NormalDuck
的一般类公理作为Duck and (hasColor some Color) SubClassOf NormalDuck
因为如果它是一只鸭子并且它有任何颜色那么它就是一只NormalDuck(我不在乎Albino Ducks是否也被认为是Normal)
然后对于
AlbinoDuck
我有hasColor only White SubClassOf AlbinoDuck
现在,我创建了两个个体:
ThisIsNormalDuck
与类型 Duck
,hasColor some Black
,hasColor some White
。这代表一只黑白相间的鸭子。ThisIsAlbinoDuck
与类型 Duck
和 hasColor some White
.但是,当我运行 Reasoner 时,会为两个人推断类
NormalDuck
。我所期望的是ThisIsAlbinoDuck
既是正常的又是白化的。
我有两个问题:
我要定义的是
AlbinoDucks
只能有一种颜色,而且必须是白色。我怎样才能用门徒/猫头鹰语言做到这一点?
如果我想定义“白色并且可以有其他颜色但不是棕色的东西”怎么办? (可以是
White
或White and Black
)
你的本体有两个问题:
hasColor only White SubClassOf AlbinoDuck
表示 hasColor only White
集是 AlbinoDuck
集的子集。因此,可能有属于 AlbinoDuck 集合但属于 hasColor only White
集合的个体。您需要使用 EquivalentTo
而不是 SubsetOf
.
Class: AlbinoDuck
EquivalentTo:
hasColor only White
SubClassOf:
Duck
声明
ThisIsAlbinoDuck
具有类型 hasColor some White
表示它具有白色,但不排除它也可能具有其他颜色的可能性。要强制它没有其他颜色,你应该
(a) 确保您唯一可以拥有的颜色是
White
、Black
和Brown
和
Class: Color
DisjointUnionOf:
Black, Brown, White
(b) 声明
ThisIsAlbinoDuck
没有颜色 Black
和 Brown
.
Types:
Duck,
not (hasColor some (Black or Brown)),
hasColor some Color
完整的本体如下:
ObjectProperty: hasColor
Class: AlbinoDuck
EquivalentTo:
hasColor only White
SubClassOf:
Duck
Class: Black
SubClassOf:
Color
Class: Brown
SubClassOf:
Color
Class: Color
DisjointUnionOf:
Black, Brown, White
Class: Duck
DisjointUnionOf:
AlbinoDuck, NormalDuck
Class: NormalDuck
EquivalentTo:
hasColor some (Black or Brown)
SubClassOf:
Duck
Class: White
SubClassOf:
Color
Individual: albinoDuck
Types:
Duck,
not (hasColor some (Black or Brown)),
hasColor some Color
Individual: normalDuck
Types:
Duck,
(hasColor some Black)
and (hasColor some White)