Система DLV ( D ata L og с дизъюнкцией, где используется символ логической дизъюнкции V ) представляет собой систему дизъюнктивного логического программирования , реализующую семантику стабильной модели в рамках парадигмы программирования набора ответов . Он расширяет язык журнала данных, позволяя использовать OR в правилах.
Вкратце, дизъюнктивный Datalog - это вариант Datalog, где дизъюнкция может появляться в заголовках правил; расширенные версии также допускают отрицание в телах, которое может обрабатываться в соответствии с семантикой отрицания в дизъюнктивном логическом программировании.
Дизъюнктивное правило Datalog - это предложение в форме:
Дизъюнктивное ограничение Datalog - это предложение формы:
Одна из самых популярных немонотонных логик - логика по умолчанию Рейтера [1980]. Эта логика была разработана как формализм представления знаний и изначально не задумывался как язык запросов к базе данных. Однако была определена подходящая настройка, в которой логика по умолчанию может использоваться в качестве языка запросов для реляционных баз данных (Default Query Language, DQL).
С практической точки зрения, в контексте дедуктивных баз данных дизъюнктивный Datalog кажется более подходящим расширением DATALOG ~, чем DQL. Благодаря простому синтаксису, DATALOGv, ~ поддается автоматическому анализу и оптимизации программ.
Эти результаты представляют не только теоретический интерес; проблемы, актуальные на практике, такие как вычисление оптимального значения маршрута в Задаче коммивояжера и вычисления собственных векторов, могут быть обработаны в дизъюнктивном журнале данных, но не в журнале данных с отрицанием (если только не разрушается полиномиальная иерархия). [1]
Пример ввода: журнал данных с отрицанием как сбой
курильщик ( джон ). курильщик ( домкрат ).бегун ( Джилл ). бегун ( джон ).здоровый ( X ) : - бегун ( X ), \ + курильщик ( X ).
Перевод в DLV: заполните форму Кларка и претензию
курильщик (X) <- X = john.курильщик (X) <- X = домкрат.X = john v X = jack <- курильщик (X).бегунья (X) <- X = jill.бегун (X) <- X = john.X = jill v X = john <- jogger (X).здоровый (X) v курильщик (X) <- бегун (X).бегун (X) <- здоров (X)<- здоровый (X) и курильщик (X).
Пример выполнения: одиночная стабильная модель
? - здоровый (X).Х = Джилл;Нет