我有一个来自OWL本体的类结构,我希望将其转换为CLIPS知识以执行封闭世界推理。我现有的类层次结构的实例是多个类的类型。例如,我想在CLIPS中执行以下操作:
CLIPS> (defclass A (is-a USER))
CLIPS> (defclass B (is-a USER))
CLIPS> (bind ?x (make-instance fact1 of A B))
[fact1]
CLIPS> (type ?x)
A B
我知道这是不可能的(请参见下一个示例)。
CLIPS> (make-instance fact1 of A B)
[PRNTUTIL2] Syntax Error: Check appropriate syntax for slot-override.
是否可以使一个实例具有多种类型,其中一种类型与另一种类型无关(即不是其他类型的父或子类型)。如果没有,任何建议将不胜感激。我猜这是否行得通,可以使用具有A型和B型父级的新defclass来完成。被认为是好的风格?还是应该从根本上改变类的结构?
希望很清楚。任何帮助/建议,表示赞赏。
如果我理解正确,您正在谈论多重继承。
您可以查看9.3.1 Multiple Inheritance
的Basic Programming Guide章节以了解如何在CLIPS中实现它。