在我的Protege ontology中,我有一个抽象类Building
,其中包含具体的子类Chalet
和Apartment
。
我想将它们与Jess规则的LHS相匹配,但我无法让它发挥作用。
我的尝试如下:
(mapclass Building)
(defrule dummy
?vivienda <- (object (is-a Building))
=>
(assert (it-worked))
)
规则不会给出任何解析错误,但它与我的Building
个实例都不匹配。我做错了什么?
答案 0 :(得分:2)
您只能将实例与最具体的类匹配。如果要匹配超类的所有实例,则需要明确检查它。
如JessTab documentation中所指定的,有一个名为superclassp
的布尔函数,它检查一个类是否是第二个类的超类。
在您的示例中:
(mapclass Building)
(defrule dummy
?vivienda <- (object (is-a ?subclass))
(test (superclassp Building ?subclass))
=>
(assert (it-worked))
)