在ObjectProperty上保护OWL DataProperty

时间:2019-03-19 23:11:52

标签: owl ontology protege

我要表达这一点:

  

曼彻斯特到伦敦的距离是335公里。

我已经创建了班级城市,现在我正在考虑使用Domain City和Range City创建和对象属性具有距离。

但是我在哪里可以声明它的真实距离?

1 个答案:

答案 0 :(得分:2)

这实际上是n-ary relation的一个示例。在这种情况下,关系被建模为类而不是属性。为此,让我们假设我们引入了一个类DistanceBetweenTwoCities。因此,对此建模的一种方法如下:

Class: City
Class: DistanceBetweenTwoCities

ObjectProperty: hasCity1
    Domain: DistanceBetweenTwoCities    
    Range: City

ObjectProperty: hasCity2
    Domain: DistanceBetweenTwoCities
    Range: City

DataProperty: hasDistance
    Domain: DistanceBetweenTwoCities
    Range: xsd:integer

现在要说明伦敦和曼彻斯特之间的距离:

Individual: distanceLondonToManchester
    Types: 
    DistanceBetweenTwoCities

    Facts:  
     hasCity1  london,
     hasCity2  manchester,
     hasDistance  335


Individual: london
    Types: City

Individual: manchester
    Types: City

注意:严格来说,没有必要引入两个不同的属性hasCity1hasCity2。我们本可以只使用hasCity。我仅介绍了2个属性,以使n元关系更加明显。

更新20190320

如果您还有其他距离必须出示,则可以添加DistanceBetweenTwoCities类型的另一个人:

Individual: distanceLondonToAthens
    Types: 
    DistanceBetweenTwoCities

    Facts:  
      hasCity1  london,
      hasCity2  athens,
      hasDistance  3000


Individual: athens
     Types: City