我正在构建一个Ontology。
我有一个名为Vehicle
我有一个名为hasType
我有一个名为VehicleTypes
如何强制Vehicle
课程中的所有实例拥有一个,只有一个 VehicleTypes
实例
我正在研究Protege。
我将hasType
作为功能属性。
我添加了一个Equivalent To
,如下所示:hasType恰好是1个车型
那就够了吗?
答案 0 :(得分:0)
使hasType
功能正常是正确的,因为每个Vehicle
只能有一个VehicleType
。但是,您需要将Vehicle hasType exactly 1 VehicleType
描述为subClassOf
关系而不是equivalentTo
关系。
子类关系的定义:
如果类描述C1被定义为类描述C2的子类,那么C1的类扩展中的个体集应该是C2类扩展中的个体集的子集。
等价关系的定义:
将类描述链接到另一个类描述。这种类公理的含义是所涉及的两个类描述具有相同的类扩展(即,两个类扩展包含完全相同的一组个体)。
答案 1 :(得分:0)
以下公理足以保证Vehicle
类中的所有实例都只有VehicleTypes
的一个实例(在曼彻斯特语法中):
Class: Vehicle
SubClassOf: hasType exactly 1 VehicleType
事实上,这是保证它的最小本体论。如果您不需要最小化,您还可以使用以下方法强制执行:
ObjectProperty: hasType
Characteristics: Functional
Class: Vehicle
SubClassOf: hasType some VehicleType
例如,如果您使用不支持基数限制的推理器,这将非常有用。
答案 2 :(得分:0)
不要创建自己的vehicleType属性和VehicleType类,只需使用rdf:Type
和rdfs:subClassOf
:
:Car rdfs:subClassOf :Vehicle.
:Boat rdfs:subClassOf :Vehicle.
然后,如果你想说某些类是析取的,请使用:
:Car owl:disjointWith :Boat.