类上的对象属性实例?

时间:2015-03-26 10:49:45

标签: rdf owl protege rdfs protege4

让我们举个例子:

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

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

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

1 个答案:

答案 0 :(得分:3)

如果我理解正确,你有一个实例 面包,并希望确保它可以被类的每个实例 <食用强>马即可。 OWL具有值限制,可让您描述与某些特定值有某种关系的个人集合。例如,表达式

喜欢披萨

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

反向(赞) Joe

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

SubClassOf canEat 面包

要说类型的每个人都可以吃个人面包。但是,你有一个eatableBy属性,而不是一个canEat属性。这只是canEat的反面,所以你可以说 Horse 类型的每个人都可以用公理吃面包

SubClassOf 反向(eatableBy)面包

在Protégé,看起来像:

protege screenshot