在Jess Tab Protege中匹配抽象类

时间:2018-04-08 14:46:10

标签: protege jess

在我的Protege ontology中,我有一个抽象类Building,其中包含具体的子类ChaletApartment

我想将它们与Jess规则的LHS相匹配,但我无法让它发挥作用。

我的尝试如下:

(mapclass Building)
(defrule dummy
    ?vivienda <- (object (is-a Building))
    =>
    (assert (it-worked))
)

规则不会给出任何解析错误,但它与我的Building个实例都不匹配。我做错了什么?

1 个答案:

答案 0 :(得分:2)

您只能将实例与最具体的类匹配。如果要匹配超类的所有实例,则需要明确检查它。

JessTab documentation中所指定的,有一个名为superclassp的布尔函数,它检查一个类是否是第二个类的超类。 在您的示例中:

(mapclass Building)
(defrule dummy
    ?vivienda <- (object (is-a ?subclass))
    (test (superclassp Building ?subclass))
    =>
    (assert (it-worked))
)