【问题标题】:Matching an abstract class in Jess Tab Protege匹配 Jess Tab Protege 中的抽象类
【发布时间】:2018-04-08 14:46:10
【问题描述】:

在我的 Protege 本体中,我有一个抽象类 Building 和具体的子类 ChaletApartment

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

我的尝试如下:

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

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

【问题讨论】:

    标签: protege jess


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 2016-09-04
      • 2020-01-29
      • 2018-05-15
      相关资源
      最近更新 更多