2

比如说:

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

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

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

4

1 回答 1

3

如果我理解正确,您有一个实例 Bread并希望确保它可以被Horse 的每个实例吃掉。OWL 具有价值限制,可让您描述与某些特定价值有某种关系的个人集合。例如,表达式

        喜欢价值比萨

是所有喜欢披萨的人的类别。OWL 还允许您使用属性的反转,以便表达式

        (喜欢)

是乔喜欢的所有事物的类别。这些类表达式可用于公理,包括​​子类公理。特别是,你可以说

        Horse SubClassOf canEat value Bread

说每个型个体都可以吃个体面包。但是,您拥有的不是 canEat 属性,而是 eatableBy 属性。不过,这只是 canEat 的反面,因此您可以说每个Horse类型的个体都可以使用以下公理吃掉单个Bread :

        Horse SubClassOf (eatableBy)Bread

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

门生截图

于 2015-03-26T11:53:00.243 回答