Protege OWL ObjectProperty 上的 DataProperty

Protege OWL DataProperty on ObjectProperty

我想表达的是:

Manchester distance from London is 335 km.

我已经创建了 class 城市,现在我正在考虑创建和 objectProperty hasDistance with Domain City 和 Range City。

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

这实际上是n-ary relation的一个例子。在这种情况下,关系被建模为 class 而不是 属性。为此,让我们假设我们引入了一个 class 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