【发布时间】:2016-11-08 12:42:45
【问题描述】:
我有两个类 Person 和 Vehicle 有 owns 作为它们之间的关系。
它们之间存在1 to many 关系,就像一个人可以拥有许多车辆一样。人具有属性“名称”(人名),车辆也具有属性“名称”(品牌名称)。
问题是如何使用 protege 编辑器在 OWL 中对此进行建模?
如果 'owns' 关系上有一个属性说 'DateOfPurchase' 如何在 OWL 中表示?
【问题讨论】:
我有两个类 Person 和 Vehicle 有 owns 作为它们之间的关系。
它们之间存在1 to many 关系,就像一个人可以拥有许多车辆一样。人具有属性“名称”(人名),车辆也具有属性“名称”(品牌名称)。
问题是如何使用 protege 编辑器在 OWL 中对此进行建模?
如果 'owns' 关系上有一个属性说 'DateOfPurchase' 如何在 OWL 中表示?
【问题讨论】:
如果 'owns' 关系上有一个属性说 'DateOfPurchase' 如何在 OWL 中表示?
如果那是域模型,那么 UML 不会捕获它。您所描述的是有一个带有一些附加属性的购买或所有权实体,更像
+--------+ +-----------+ +---------+
| Person | → * | Ownership | → | Vehicle |
+--------+ +-----------+ +---------+
| date |
+-----------+
这与我在您之前的问题Can OWL punning help in defining data properties on object property? 中描述的方法基本相同。没有办法“潜入”有关关系的元数据;您必须明确说明。
【讨论】:
OWL 中的对象属性描述的是个体之间的关系,而不是类之间的关系。这是一个“借来的”URI,仅此而已。因此,您需要具体化每个语句,例如:PersonA :owns :VehicleB。 RDF 允许这样做,但 Protégé 不允许。所以,这里有一个解决方法:
您创建两个对象属性:hasSubjectOfOwns 和:hasObjectOfOwns,并且对于您需要描述dateOfPurchase 的每种情况,您定义一个代表该语句的个体,然后断言:
:AownsB :hasSubjectOfOwns :PersonA; :hasObjectOfOwns :VehicleB; :dateOfPurchase "2014-10-01"^^xsd:date
最初您需要创建一个属性链,在 Protégé 中它看起来像这样:
inverse (hasSubjectOfOwns) o hasObjectOfOwns SubPropertyOf owns
【讨论】: