在ObjectProperty上保护OWL DataProperty

问题描述 投票:0回答:1

我想表达这个:

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

我创建了类城市,现在我正在考虑创建和objectProperty hasDistance与Domain City和Range City。

但是我在哪里可以宣布它的实际距离?

owl ontology protege
1个回答
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-ary关系更加明显。

更新20190320

如果你有另一个距离你必须添加另一个类型DistanceBetweenTwoCities

Individual: distanceLondonToAthens
    Types: 
    DistanceBetweenTwoCities

    Facts:  
      hasCity1  london,
      hasCity2  athens,
      hasDistance  3000


Individual: athens
     Types: City
© www.soinside.com 2019 - 2024. All rights reserved.