Программирование на языке ПРОЛОГ для искуственного интеллекта




Получение структурированной информации из базы данных - часть 4


Этими процедурами можно воспользоваться, например, в следующих запросах к базе данных:

  • Найти имена всех людей из базы данных:

            ?-  существует( членсемьи( Имя,Фамилия, _, _ )).
  • Найти всех детей, родившихся в 1981 году:

            ?-  ребенок( X), датарождения( X, дата( _, _, 1981) ).
  • Найти всех работающих жен:

            ?-  жена( членсемьи( Имя, Фамилия, _, работает( _, _ ))).
  • Найти имена и фамилии людей, которые не работают и родились до 1963 года:

    ?-  существует членсемьи( Имя, Фамилия, дата( _, _, Год), неработает) ),
         Год < 1963.

  • Найти людей, родившихся до 1950 года, чей доход меньше, чем 8000:

            ?-  существует( Членсемьи),
                 датарождения( Членсемьи, дата( _, _, Год) ),
                 Год < 1950,
                 доход( Членсемьи, Доход),
                 Доход < 8000.

  • Найти фамилии людей, имеющих по крайней мере трех детей:

            ?-  семья( членсемьи( _, Фамилия, _, _ ), _, [ _, _, _ | _ ]).

Для подсчета общего дохода семья полезно определить сумму доходов людей из некоторого списка в виде двухаргументного отношения:

        общий( Список_Людей, Сумма_их_доходов)

Это отношение можно запрограммировать так:

        общий( [ ], 0).                     % Пустой список людей

        общий( [ Человек | Список], Сумма) :-
               доход( Человек, S),




Содержание  Назад  Вперед