class 上的对象 属性 实例?

Object property instance on class?

让我们举个例子:

-Food(class
 -Bread(instance of Food!
-Species(class
  -Animal(class
    - Horse(class
      -Unicorn(instance

现在我需要能够设置 Bread -> eatableBy -> Horse。但是我无法对 class 进行对象 属性 断言。所以我可以将它设置为 eatable by 并添加 Horse 的所有实例,但我有很多实例,所以这有点多余。有人知道达到同样效果的有效方法吗?

例如如果我需要知道马可以吃什么,还需要 return 面包。如果我想知道独角兽可以吃的所有食物,它需要 return 面包(因为它是一匹马,所有的马都吃面包)。如果我需要知道 Animal 的子 class 吃什么,它还必须 return Bread.

如果我没理解错的话,你有一个 instance Bread 并且想确保它可以被 class。 OWL 具有 值限制 ,它让您描述与某个特定值有某种关系的一组个体。例如,表达式

喜欢 价值 披萨

是所有喜欢披萨的人中的 class。 OWL 还允许您使用属性的倒数,因此表达式

反向(喜欢)价值

是乔喜欢的所有事物中的 class。这些 class 表达式可以用在公理中,包括 subclass 公理。特别是,你可以这样说

SubClassOf canEat value Bread

也就是说 Horse 类型的每个个体都可以吃 Bread 个体。但是,您得到的不是 canEat 属性,而是 eatableBy 属性。不过,这只是 canEat 的逆运算,所以你可以说 Horse 类型的每个个体都可以吃 Bread 个体,其公理为:

SubClassOf inverse(eatableBy) value Bread

在 Protégé 中,它看起来像: