У меня есть структура класса из онтологии 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.
Можно ли заставить экземпляр иметь несколько типов, когда один тип не связан с другим типом (т.е. не является родительским или дочерним типом других типов). Если нет, то любой совет будет оценен. Я предполагаю, что если это невозможно, это может быть сделано с новым defclass, у которого есть родители типа A и типа B. Если выбрать этот маршрут, создаст ли правило, которое автоматически создает анонимный тип, у которого оба они являются родителямисчитаться хорошим стилем? Или я просто должен фундаментально изменить структуру классов?
Надеюсь, это было ясно. Любая помощь / совет приветствуется.