OWL如何强制特定类的所有实例具有特定关系

时间:2015-04-05 21:19:35

标签: semantic-web owl ontology protege

我正在构建一个Ontology。

我有一个名为Vehicle

Class

我有一个名为hasType

对象属性

我有一个名为VehicleTypes

Class

如何强制Vehicle课程中的所有实例拥有一个,只有一个 VehicleTypes实例

我尝试了什么

我正在研究Protege。

  1. 我将hasType作为功能属性。

  2. 我添加了一个Equivalent To,如下所示:hasType恰好是1个车型

  3. 那就够了吗?

3 个答案:

答案 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:Typerdfs:subClassOf

:Car rdfs:subClassOf  :Vehicle.
:Boat rdfs:subClassOf :Vehicle.

然后,如果你想说某些类是析取的,请使用:

:Car owl:disjointWith :Boat.