您如何建模两个类之间存在但并不总是存在的潜在关系?

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

我想模拟某些事情可能是真实的,但不能保证是真实的。例如,房子可能有车库,但不一定。车库可能是房屋的一部分,但不一定。

如果我将“has_part some 'garage'”作为公理添加到我的“house”类中,我就声称所有房屋都有车库,但这并不总是正确的。同样,出于同样的原因,我无法将“partOf”添加到我的车库类中。

模拟这种关系的理想方式是什么?

我已经修改过声明“house”类“has_part some 'garage' min 0”,以便使用基数将最小界限设置为零,但我不确定这是正确的。

ontology semantic-web protege
1个回答
0
投票

在这种情况下,您可以认为房屋类由两个不同的类别组成:(1)没有车库的房屋类别和(2)有车库的房屋类别。

您可以使用曼彻斯特语法执行此操作,如下所示:

 Class: ClassWithoutGarage
    SubClassOf: hasGarage max 0 Thing //has no garage

 Class: ClassWithGarage
    SubClassOf: hasGarage min 1 Thing
    DisjointWith: ClassWithoutGarage //has at least 1 garage

 ObjectProperty: hasGarage
    Domain: ClassWithGarage
    Range: Garage

 Class: House 
   EquivalentTo: ClassWithGarage or ClasWithoutGarage

在这种情况下,我们为这两个可能的类给出了明确的名称。通常在本体中,可以暗示这些类的存在而无需显式命名它们:

Class: House
   EquivalentTo: hasGarage max 0 Thing 
                 or  
                 hasGarage min 1 Thing

可以更简洁地表述为

Class: House
    EquivalentTo: hasGarage only Garage

hasGarage only Garage
定义了由这些个体
x
组成的个体类,这样当个体
y
通过
hasGarage
链接到个体
x
时,那么
y
属于类型
Garage
,或者那些个体
 x
没有通过
hasGarage
的链接。

© www.soinside.com 2019 - 2024. All rights reserved.