如何用同一个对象创建多个关系 属性?

How to create multiple relations with same object property?

我正在使用 protege 5 开发 ontology。我创建了 has_composition 作为对象 属性。在我的 ontology 中,相同的 object_property 用于不同的域及其各自的范围,例如 A 的 has_composition 是 B,C 和 D 的 has_composition 是 E 和 F。

如何为这个映射建模?

OWL(Ontology Web 语言,定义本体的 ontology)不允许对您尝试做的事情进行建模。

我能想到的解决方法是使用子属性。想象以下 类:

  • Pizza
  • TomatoSauce
  • ChocolateCake
  • Chocolate

如果要定义关系如

  • A Pizza has_composition TomatoSauce,
  • 一个ChocolateCakehas_compositionChocolate

然后定义如下关系:

  • has_composition:没有域也没有范围(或者常见的超类,例如 DishIngredient
    • has_tomato_sauce:域Pizza,范围TomatoSauce
    • has_chocolate:域ChocolateCake,范围Chocolate

这将允许推理器(计算推理的软件)推断如果 something has_chocolate a_chocolate,则

  • somethingrdf:typeChocolate(由has_chocolate的域推断);
  • something has_composition a_chocolate(因为 has_chocolatehas_composition 的子 属性)。

您可以在 this Gist I made 中查看此示例。

下载、打开并启动推理器。您将看到黄色的推断语句。