【发布时间】:2015-03-16 10:54:52
【问题描述】:
我有一个 OWL 2 本体,其中包含多个属于一个类的命名个体,这些个体需要具有相同的对象属性和相同的值。
我想在“类”上做出这个属性断言,这样推理器可以推断出它的所有成员都拥有的属性,因此不需要为每个成员进行显式断言。 (获得类似于基于类的面向对象的属性继承)
一个简单的例子可以是一个本体,其中包含属于 Milk 类的个体 milkBottle1、milkBottle2、milkBottle3。它们都应该具有属性containsNutrient 和值protein,但显然这是Milk 类的所有成员共享的东西,并且应该只显式声明一次。
我只发现了相同的问题here,但唯一的答案提出了一个不合适的解决方案:使该类成为属性限制类的子类。这导致推理器推断该类等同于 Nothing 类(因为没有具有此类属性的命名个体),因此由于将个体分配给它而造成不一致。
我知道这是一项使用 SWRL 规则的简单任务,例如
牛奶(?a) →含有营养素(?a, 蛋白质)
但如果可能的话,我想避免使用它们。
如果没有 OWL 2 中的解决方法,这可能吗?如果可以,怎么做?
【问题讨论】:
标签: inheritance semantic-web owl description-logic