双关语(在 OWL 2 DL 中引入)允许为类和对象属性赋予相同的名称 (IRI)(参见关联示例)。
我可以使用这种元建模方式在关系上附加属性吗?
据我所知,您可以对类和属性使用相同的 IRI,但我认为它不会真正帮助您进行您正在寻找的元建模。
例如,关系驱动连接人和车辆。我想指定车辆行驶的速度,并且此属性属于驱动器。Punning 允许我通过指定名为驱动器的类和对象属性将驱动器建模为关联类。我猜这将允许我拥有以某种方式与它们关联的数据属性的对象属性。
具有相同的 IRI 表示一个类和一个属性在这里并没有真正的帮助。听起来你想要的是一种物化的关系。您想以如下方式表示这一点:
person42 drives driving74
driving74 hasVehicle vehicle89
driving74 hasVelocity 88.8
这确实是最典型的方法。如果你真的想的话,你可以使用drive来命名一个类,你可以让driving74成为那个类的一个实例,这可能会向用户暗示它们之间存在某种联系。也就是说,您可以使您的架构为:
drives a owl:Class
hasVehicle rdfs:domain drives
hasVehicle rdfs:range Vehicle
hasVelocity rdfs:domain drives
hasVelocity rdfs:range Velocity
drives a owl:ObjectProperty
drives rdfs:domain Person
drives rdfs:range drives
你可以这样做,也许它会让一些用户更清楚地看到这种联系,但在我看来,这并不是真的很有帮助,而且可能只会让事情变得更加混乱。