logo
TurboProlog / Документация / TOM_1

Запросы

Предоставив Прологу множество фактов, мы можем, в соответствии с

этими фактами, задавать вопросы: это известно как запрос системы Пролога.

Вопросы, которые мы можем задавать Прологу, могут быть того же типа, что

и вопросы, задаваемые людям. И, основываясь на уже известных фактах и

правилах, представленных ранее, и Пролог и люди будут отвечать на вопросы

аналогичным образом.

На естественном языке мы спрашиваем вас:

Does Bill like Cindy? (Бил любит Санди?)

В синтаксисе Пролога мы запрашиваем Пролог:

likes (bill, cindy).

Получив данный вопрос, Пролог ответит:

Да,

т.к. у него есть факт, говорящий именно это.

Немного усложнив и обобщив вопрос, мы можем спросить (на естествен-

ном языке):

What does Bill like? (Что любит Бил?)

В синтаксисе Пролога мы запрашиваем его:

likes (bill, What).

Отметим, что синтаксис Пролога при задании вами вопроса не изменяет-

ся: этот запрос выглядит очень похожим на факт. Кроме того, очень важно

отметить, что второй объект (What) начинается с заглавной буквы, тогда

как первый объект (bill) - нет. Это объясняется тем, что bill - это конс-

танта (известное значение), тогда как What - переменная. Обычно, констан-

ты начинаются со строчных букв, тогда как переменные с заглавных.

Пролог всегда ищет ответ на вопрос, начиная с первого факта. Он

просматривает каждый факт до тех пор, пока не достигнет последнего из

них. Получив вопрос о том, что любит Bill, Пролог ответит:

What = dogs

What = cindy

2 Solutions (2 решения)

Это объясняется тем, что Пролог знает:

likes (bill, cindy).

и

likes (bill, dogs).

Мы надеемся, что у вас получилось то же самое.

Если же мы спросим вас (и Пролог):

What does Cindy like?

likes (cindy, What).

Пролог ответит:

What = dogs

What = cindy

What = bill

3 Solutions

Это объясняется тем, что Пролог знает, что Санди любит Била и все

то, что любит Бил, а также то, что Бил любит Санди и собак.

Мы можем задавать Прологу и другие вопросы, которые мы могли бы за-

давать людям. Однако, на вопросы типа "Какие девушки нравятся Билу?" не

может быть пока получено ответа, т.к. Пролог, в этом случае, не знает

фактов о девушках и не может, следовательно, вывести заключение на основе

неизвестного материала. В данном примере мы не предоставили Прологу ка-

ких-либо связей или свойств, позволяющих определить, являеются ли ка-

кие-либо объекты девушками.