Правила записи вопросов
Вопросы в Прологе служат для записи простых или сложносоставных запросов к базам знаний или обращений к процедурам и программам. Ответами на запросы к базам данных и знаний могут быть логические значения ДА (истина) или НЕТ (ложь) либо список конкретных данных, отвечающих запросу.
Общая форма записи сложносоставных вопросов:
сложный вопрос:
? <вопрос>[,<вопрос> ...]
В сложносоставных вопросах составляющие его подвопросы разделяются запятыми. Любой вопрос в Прологе начинается со знака вопроса «?» и заканчивается знаком «точка с запятой». Пример сложносоставного вопроса:
? папа (х,у), папа (у,вова);
Простые вопросы имеют следующую форму записи:
простой вопрос:
? <имя>(<арг>[,<арг> ...])
Здесь <имя> - это имя некоторого факта или правила в программе или базе знаний. Количество аргументов в таком простейшем вопросе должно строго совпадать с количеством аргументов (параметров) в описаниях соответствующих фактов и правил.
В роли аргументов в вопросах могут указываться как конкретные значения, так и переменные. Если в вопросе указаны только конкретные значения, то ответом будет логическое значение ДА или НЕТ. Если же в вопросе указываются переменные, то при положительном ответе дополнительным результатом будет вывод конкретных значений переменных, указанных в исходном вопросе.
В роли переменных в Прологе могут указываться латинские и русские буквы, как строчные, так и прописные: а, b, с, ...,
х, у, z; A, В, С, ..., X, Y, Z;
а, б, в, ... , э, ю, я; А, Б, В, ..., Э, Ю, Я.
Кроме того, в качестве имен переменных могут употребляться любые слова и словосочетания, заканчивающиеся знаком апострофа ['].
Примеры имен: дед ', х1 ', оценка4 ' и т. п.
Кроме того, в вопросах и правилах на Пролог аргументы могут иметь неопределенные значения. Для этого вместо конкретных значений или имен переменных в вопросе указывается знак подчеркивания [ _ ].
Пример вопроса с использованием неопределенных значений:
? мама (мать', _ );
Ответом на указанный вопрос будет перечень имен всех матерей, сведения о которых имеются в базе знаний.