在 Jess Tab Protege 中匹配摘要 class
Matching an abstract class in Jess Tab Protege
在我的 Protege ontology 中,我有一个抽象的 class Building
和具体的 children classes Chalet
和 Apartment
.
我想将它们与 Jess 规则的 LHS 相匹配,但我无法让它工作。
我的尝试如下:
(mapclass Building)
(defrule dummy
?vivienda <- (object (is-a Building))
=>
(assert (it-worked))
)
该规则没有给出任何解析错误,但它与我的任何 Building
个实例都不匹配。我做错了什么?
您只能匹配具有最具体 class 的实例。如果你想匹配一个 superclass 的所有实例,你需要明确地检查它。
正如 JessTab documentation 中指定的那样,有一个名为 superclassp
的布尔函数,用于检查 class 是否是第二个 class 的超 class .
在你的例子中:
(mapclass Building)
(defrule dummy
?vivienda <- (object (is-a ?subclass))
(test (superclassp Building ?subclass))
=>
(assert (it-worked))
)
在我的 Protege ontology 中,我有一个抽象的 class Building
和具体的 children classes Chalet
和 Apartment
.
我想将它们与 Jess 规则的 LHS 相匹配,但我无法让它工作。
我的尝试如下:
(mapclass Building)
(defrule dummy
?vivienda <- (object (is-a Building))
=>
(assert (it-worked))
)
该规则没有给出任何解析错误,但它与我的任何 Building
个实例都不匹配。我做错了什么?
您只能匹配具有最具体 class 的实例。如果你想匹配一个 superclass 的所有实例,你需要明确地检查它。
正如 JessTab documentation 中指定的那样,有一个名为 superclassp
的布尔函数,用于检查 class 是否是第二个 class 的超 class .
在你的例子中:
(mapclass Building)
(defrule dummy
?vivienda <- (object (is-a ?subclass))
(test (superclassp Building ?subclass))
=>
(assert (it-worked))
)