在我的Protege本体中,我有一个抽象类 Building 有具体的儿童课程 Chalet 和 Apartment 。
Building
Chalet
Apartment
我想将它们与Jess规则的LHS相匹配,但我无法使其发挥作用。
我的尝试如下:
(mapclass Building) (defrule dummy ?vivienda <- (object (is-a Building)) => (assert (it-worked)) )
该规则没有给出任何分析错误,但它与我的 建筑物 实例。我做错了什么?
建筑物
您只能将实例与最特定的类相匹配。如果要匹配超类的所有实例,需要显式检查它。
如 JessTab documentation 有一个布尔函数称为 superclassp 检查一个类是否是第二个类的超类。 在您的示例中:
superclassp
(mapclass Building) (defrule dummy ?vivienda <- (object (is-a ?subclass)) (test (superclassp Building ?subclass)) => (assert (it-worked)) )