йНМЯОЕЙР ОН МЮВЕПРЮРЕКЭМНИ ЦЕНЛЕРПХХ хМФЕМЕПМЮЪ ЦПЮТХЙЮ юПУХРЕЙРСПЮ щбл хМТНПЛЮРХЙЮ Х ХМТНПЛЮЖХНММШЕ РЕУМНКНЦХХ

Предыдущий разделУровень вышеСледующий раздел

Запросы к базе данных

Запрос - это последовательность предикатов, разделенных запятыми и завершающаяся точкой. На естественном языке запятая соответствует союзу "и", а на языке математической логики обозначает конъюнкцию. С помощью запросов можно "спрашивать" базу данных о том, какие утверждения являются истинными. Предикат запроса называется целью.

Простые вопросы, не содержащие никаких переменных, называют да-нет-вопросами. Они допускают лишь два возможных ответа: "Yes" означает наличие соответствующего факта в базе данных (первый запрос примера, приведенного ниже), "No" - его отсутствие (второй запрос). В случае ответа "Yes" говорят, что запрос завершился успехом, цель достигнута.


Пример

 ?- больше(слон, лошадь), больше(лошадь,осел). 
Yes ?- больше(слон, собака). No 

Использование переменных в запросах позволяет задавать более сложные вопросы. Предположим, например, что мы хотим определить, какие животные больше осла? В следующем запросе переменная X обозначает искомый ответ:

 ?- больше(X, осел). X = лошадь Yes 
При обработке запроса переменная X приняла значение "лошадь". Просматривая базу данных, интерпретатор обнаружил факт, утверждающий, что лошадь больше осла, и запрос был успешно выполнен.

Запросы с переменными могут иметь более одного решения. Первым всегда выводится то из решений, которое находится ближе к началу базы данных. Если нам достаточно только одного ответа, то можно нажать Enter и закончить поиск. В случае, если мы захотим получить очередной ответ, нужно нажать клавишу ; (точка с запятой), и Пролог начнет поиск других вариантов ответа на запрос. Сообщение "No" говорит об отсутствии очередного решения.


Пример

 ?- больше(осел, Х). X = собака; X = обезьяна; No ?- больше(X,Y). X = слон 
Y = лошадь; X = лошадь Y = осел; X = осел Y = собака; X = осел Y = обезьяна; No 


Задания

  1. Загрузите в Пролог базу данных "Цвет" (файл task1.pl) и сформулируйте к ней следующие запросы.
    а) Машина красного цвета?
    б) Светофор желтого цвета?
    в) Море синего цвета и солнце желтого цвета?
  2. Добавьте в базу данных факт
     цвет(трава, зеленый). 
    Сформулируйте запросы к измененной базе данных.
    а) Какого цвета машина?
    б) Что в этой базе данных зеленого цвета?
    б) Какие элементы составляют эту базу данных и каковы соответствующие им цвета?

Предыдущий разделУровень вышеСледующий раздел

мЮВЕПРЮРЕКЭМЮЪ ЦЕНЛЕРПХЪ Х ХМФЕМЕПМЮЪ ЦПЮТХЙЮ, ОЕПЯОЕЙРХБЮ