代码之家  ›  专栏  ›  技术社区  ›  Jsevillamol

在Jess Tab Protege中匹配抽象类

  •  0
  • Jsevillamol  · 技术社区  · 7 年前

    在我的Protege本体中,我有一个抽象类 Building 有具体的儿童课程 Chalet Apartment

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

    我的尝试如下:

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

    该规则没有给出任何分析错误,但它与我的 建筑物 实例。我做错了什么?

    1 回复  |  直到 7 年前
        1
  •  2
  •   David Rubio    7 年前

    您只能将实例与最特定的类相匹配。如果要匹配超类的所有实例,需要显式检查它。

    JessTab documentation 有一个布尔函数称为 superclassp 检查一个类是否是第二个类的超类。 在您的示例中:

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