如何让推理机从城市A“开始”,并获得由传递属性链接的其余城市

时间:2019-01-16 13:02:58

标签: owl protege

我正在Protege中建立一个本体。在这个示例中,我有7个人属于“城市”类(从“城市A”到“城市G”(从北到南))。我想创建仅显示“ StartCity”(是City的子类)的个人以及所有位于“ StartCity”以北(上方)的个人的类(“ CitysNorthOf_D”)(City_E,City_F和City_G)。在实际的本体中,我拥有更多的城市和属性。这只是显示问题的一个示例:

Class view

Property view

Individuals view

对象属性示例:

  1. “道路”:传递式+对称式(但无此目的)
  2. “南”:可传递的(将一个“个人“城市”链接到当前“个人”下方的个人“城市”。例如City_A具有:south = City_B。
  3. “北部”:传递式(与“南部”相同,但链接上方的城市。

我想要做的是正在不同条件下(城市)寻找城市的不同班级。所有在属性中都使用Transitive的城市将城市链接在一起,而所有具有“ StartCity”子类(来自“ City”)的个人的“类”均从“个人”开始。 借助将不同城市联系在一起的属性(例如,对于链接属性:南,北,道路类型,距离等,对于城市:大小,类型(城市,村庄,郊区)等)。

类及其条件的示例:

  1. 位于起始城市以北的所有城市。*
  2. 与上述相同,但仅需两步(所有城市都位于起始城市以北两个或两个以下城市中。*
  3. 高速公路可到达的所有城市(在此示例中未添加道路类型)。*
  4. 无需经过较大城市(大小)即可到达的所有城市。*

* =所有类均从标有子类的 start city 开始,到名为“ Start_City”的城市

希望这些类彼此独立地工作。但是,当我在“等效于”中使用以下课程进行两节课时:“位于起始城市以南的StartCity或City”,只有一课有效(最后一课)。

我已经尝试了“等效于”中的以下内容:

StartCity or City that south some StartCity

在类的“描述”视图的“实例”列表中显示正确的个人。

但是... 如果我添加具有完全相同公理的新类。这两个类都不起作用。只有最后一个。该类单独工作,但在存在其他类似类时则不能工作。

我只想使用类中的公理来做到这一点。

我怎么了?可能吗?还是我误解了如何在类中使用公理,还是应该以其他方式测试类?

0 个答案:

没有答案