让我们举个例子:
-Food(class
-Bread(instance of Food!
-Species(class
-Animal(class
- Horse(class
-Unicorn(instance
现在我需要能够设置面包 - > eatableBy - >马。但我无法对一个类进行对象属性断言。所以我可以将它设置为可食用并添加Horse的所有实例,但是我有很多实例,所以这会有点多余。有没有人知道一种有效的方法来达到同样的效果?
E.g。如果我需要知道马可以吃什么,它也需要返回面包。如果我想知道独角兽可以吃的所有食物,它需要返回面包(因为它是一匹马,所有的马都吃面包)。如果我需要知道Animal的子类吃什么,它还必须返回Bread。
答案 0 :(得分:3)
如果我理解正确,你有一个实例 面包,并希望确保它可以被类的每个实例 <食用强>马即可。 OWL具有值限制,可让您描述与某些特定值有某种关系的个人集合。例如,表达式
喜欢值披萨
是所有喜欢披萨的人。 OWL还允许您使用属性的反转,以便表达式
反向(赞)值 Joe
是乔喜欢的所有事物的类。这些类表达式可用于公理,包括子类公理。特别是,你可以说
马 SubClassOf canEat 值面包
要说马类型的每个人都可以吃个人面包。但是,你有一个eatableBy属性,而不是一个canEat属性。这只是canEat的反面,所以你可以说 Horse 类型的每个人都可以用公理吃面包:
马 SubClassOf 反向(eatableBy)值面包
在Protégé,看起来像: