ВУЗ:
Составители:
Рубрика:
16
В некоторых ситуациях на запрос может быть выдано несколько
ответов, что обеспечивается главной программой путем вложения eval в
предложение findall, которое собирает все ответы в список:
findall(A,eval(Q,A),L), где L – список ответов.
Эта функция должна быть определена с помощью ряда правил. Для
наглядности поясним их на тех же примерах, которые использовались при
демонстрации высокоуровневого функционирования подпрограммы анализа
(pars).
Пример 1. Запрос: Какие имеются города? (What cities do you have?)
Программа анализа преобразует этот вопрос в стандартную форму,
представленную заполненным шаблоном:
q_e("city")
Правило eval, запускаемое этим вводом, таково:
eval(q_e(E),ANS):-
ent(E,ANS).
Иными словами, мы можем вычислить выражение, если найдем в базе
данных что-нибудь наподобие
ent("city",ANS)
Эту задачу выполняет правило сущности (объекта), рассмотренное
выше. При каждом его запуске из базы данных извлекается название одного
города.
Пример 2. Запрос: Какова длина Гудзона? (How long is the Hudson?)
Ниже приводится правило eval, которое будет выполнено:
eval(q_eaec(E1,A,E2,C),ANS):-
db(E1,A,E2,ANS,C).
db является функцией доступа для получения связей, поэтому в базе
данных должно иметься что-нибудь наподобие
db(length,of,river,ANS,C)
Большинство запросов требует обработки в правилах eval.
Пример вложенного запроса:
В некоторых ситуациях на запрос может быть выдано несколько ответов, что обеспечивается главной программой путем вложения eval в предложение findall, которое собирает все ответы в список: findall(A,eval(Q,A),L), где L – список ответов. Эта функция должна быть определена с помощью ряда правил. Для наглядности поясним их на тех же примерах, которые использовались при демонстрации высокоуровневого функционирования подпрограммы анализа (pars). Пример 1. Запрос: Какие имеются города? (What cities do you have?) Программа анализа преобразует этот вопрос в стандартную форму, представленную заполненным шаблоном: q_e("city") Правило eval, запускаемое этим вводом, таково: eval(q_e(E),ANS):- ent(E,ANS). Иными словами, мы можем вычислить выражение, если найдем в базе данных что-нибудь наподобие ent("city",ANS) Эту задачу выполняет правило сущности (объекта), рассмотренное выше. При каждом его запуске из базы данных извлекается название одного города. Пример 2. Запрос: Какова длина Гудзона? (How long is the Hudson?) Ниже приводится правило eval, которое будет выполнено: eval(q_eaec(E1,A,E2,C),ANS):- db(E1,A,E2,ANS,C). db является функцией доступа для получения связей, поэтому в базе данных должно иметься что-нибудь наподобие db(length,of,river,ANS,C) Большинство запросов требует обработки в правилах eval. Пример вложенного запроса: 16
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »