Логическая модель предполагает унифицированное описание объектов и действий в виде предикатов первого порядка. Под предикатом понимается логическая функция на N - аргументах (признаках), которая принимает истинное или ложное значение в зависимости от значений аргументов. Отличие заключается в том, что для объектов соответствующие реляционные отношения задаются явно в виде фактов, а действия описываются как правила, определяющие логическую формулу вывода фактов из других фактов. Пример фрагмента базы знаний подбора претендентов на вакансии в языке логического программирования ПРОЛОГ представлен на рис. 2.4. (Обозначения: ":-" - "если", "," - "и", "." - "конец утверждения").
vibor(Fio,Dolgnost):-
pretendent(Fio, Obrazov, Stag),
vacancy(Dolgnost, Obrazov, Opyt),
Stag>=Opyt.
pretendent("Иванов","среднее" 10).
pretendent("Петров","высшее", 12).
vacancy("менеджер", "высшее", 10).
vacancy("директор", "высшее", 15).
Механизм вывода осуществляет дедуктивный перебор фактов, относящихся к правилу по принципу "сверху - вниз", "слева - направо" или обратный вывод методом поиска в глубину. Так, в ответ на запрос vibor(X,Y) получим: X="Петров", Y="менеджер".
Правила могут связываться в цепочки в результате использования одинакового предиката в посылке одного и в заключении другого правила.
Для логической модели характерна строгость формального аппарата получения решения. Однако, полный последовательный перебор всех возможных решений может приводить к комбинаторным взрывам, в результате чего поставленные задачи могут решаться недопустимо большое время. Кроме того, работа с неопределенностями знаний должна быть запрограммирована в виде самостоятельных метаправил, что на практике затрудняет разработку баз знаний с помощью логического формализма.