Разница между CLIPS и Prolog / Datalog заключается в том, что CLIPS - это "система правил производства", которая работает прямая цепочка : учитывая набор фактов и правил, она будет пытаться сделать все возможное выводновые факты и хранить их в памяти.Затем на запрос приходит ответ, проверяя, соответствует ли оно чему-либо в хранилище фактов.Итак, в CLIPS, если у вас есть (псевдосинтаксис):
parent(X,Y) => child(Y,X)
parent(john,mary)
, он немедленно получит child(mary,john)
и запомнит этот факт.Это может быть очень быстро, но накладывает ограничения на возможный набор правил и занимает память.
Пролог и Datalog работают с обратной цепочкой , что означает, что на запрос (вызов предиката) отвечает попыткачтобы подтвердить запрос, т.е. запустить программу Prolog / Datalog.Prolog - полный язык программирования Тьюринга, поэтому в нем может быть реализован любой алгоритм.
Datalog - это полное подмножество Тьюринга, не допускающее, например, отрицание.Его главное преимущество заключается в том, что каждая программа Datalog завершает свою работу (без бесконечных циклов).Это делает его полезным для так называемых «дедуктивных баз данных», то есть баз данных с правилами в дополнение к фактам.