5. 定义属性 - 更多细节
Last updated
Was this helpful?
Last updated
Was this helpful?
在本节中,我们将讨论在本体中定义槽位更多的(第3节中的步骤5和步骤6)细节,主要讨论反向槽位和槽位的默认值.
槽位的一个值可能取决于另一个槽位的值。例如,如果葡萄酒是由酒庄生产的,那么酒庄就会生产这种葡萄酒。这两个关系,制造者和生产者,被称为反向关系。将信息“双向”存储是多余的。当我们知道葡萄酒是由酒庄生产的时候,使用知识库的应用程序总是可以推断酒庄产生葡萄酒的反向关系的取值。然而,从知识获取的角度来看,将两条信息显式提供会更为直观。这种方法允许用户在前一种情况下填写酒厂生产的葡萄酒,另一种情况下填写葡萄酒的酒庄,而知识获取系统可以自动填写对应反向关系的值,从而确保知识库的一致性。
我们的例子有一对反向的槽位:酒(Wine)类的“制造商”槽位和酒庄(Winery)类的“生产”槽位。当用户创建Wine类的实例并填写制造商槽的值时,系统会自动将这个新创建的“葡萄酒”实例添加到相应的Winery实例的“生产”槽中。例如,当我们说斯特林梅洛(Sterling Merlot)由斯特林葡萄园酒庄(Sterling Vineyard winery)酒庄生产时,系统会自动将斯特林梅洛(Sterling Merlot)添加到斯特林葡萄园酒庄(Sterling Vineyard winery)酒庄生产的葡萄酒列表中(如图9)。
酒庄(winery)类“生产”槽位是酒(Wine)类的“制造商”槽位的反向槽位。填充其中一个槽位会触发另一个槽位的自动更新.
许多基于框架的系统允许为槽位指定缺省值。如果某个类的大多数实例的特定槽位有相同的取值,我们可以将该值定义为槽位的缺省值。然后,当创建包含此槽位的类的每个新实例时,系统将自动填充缺省值。然后,我们可以将值更改为槽位刻面允许的其他值。也就是说,缺省值是为了方便起见:它们不会对模型增加任何新的限制或以任何方式更改模型。例如,如果我们要讨论的大多数葡萄酒都是酒体丰富葡萄酒,我们可以“丰富”作为酒体的缺省值。然后,除非我们另有说明,否则我们定义的所有葡萄酒都将是酒体丰富的。请注意,这与槽位的取值(参考槽位的值域定义)不同。槽位的取值是不能更改的。例如,如果甜品葡萄酒类的“糖分”槽位的取值为“甜(SWEET)”,那甜点酒类的所有子类和实例将的“糖分”槽位的取值都是“甜(SWEET)”值,这个值不能在类的任何子类或实例中进行更改。