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

时间:2018-07-12 05:53:55

标签: ontology protege

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

如何为该映射建模?

1 个答案:

答案 0 :(得分:1)

OWL(本体Web语言,定义本体的本体)不允许对您要尝试的操作进行建模。

我可以想到的解决方法是使用子属性。想象一下以下课程:

  • Pizza
  • TomatoSauce
  • ChocolateCake
  • Chocolate

如果要定义诸如以下的关系

  • Pizza has_composition TomatoSauce
  • 一个ChocolateCake has_composition Chocolate

然后定义以下关系:

  • has_composition:没有域也没有范围(或例如DishIngredient这样的通用超类)
    • has_tomato_sauce:域Pizza,范围TomatoSauce
    • has_chocolate:域ChocolateCake,范围Chocolate

这将允许推理机(计算推断的软件)推断出,如果something has_chocolate a_chocolate,那么

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

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

下载它,打开它,然后启动推理机。您将看到黄色的推断的语句。

Screenshot of inferred statements