% vim:set syntax=prolog: запомнить(Арг, Арг2, да):- assert(верно(Арг, Арг2)). запомнить(Арг, Арг2, нет):- assert(ложно(Арг, Арг2)). узнать(Арг, Арг2, Ответ):- write(Арг), write(" "), write(Арг2), read(Ответ), запомнить(Арг, Арг2, Ответ). свойство(Арг, Арг2):- верно(Арг, Арг2), !. свойство(Арг, Арг2):- not(ложно(Арг, Арг2)), узнать(Арг, Арг2, Ответ), Ответ=да. нет_свойства(Арг, Арг2):- ложно(Арг, Арг2), !. нет_свойства(Арг, Арг2):- not(верно(Арг, Арг2)), узнать(Арг, Арг2, Ответ), Ответ=нет. это("подходит для обработки транзакций") :- свойство("Поддерживает", "точность и согласованность данных"), свойство("Поддерживает", "атомарные транзакции"). это("подходит для кэширования") :- свойство("Хранение данных", "в оперативной памяти"). это("не требует проектирования БД") :- свойство("Хранение данных", "в текстовом формате обмена данными"), свойство("Хранение данных", "в неструктурированном виде"). это("реляционная БД") :- свойство("Храние данных", "в строках и колонках"), свойство("Использует", "язык SQL"), это("подходит для обработки транзакций"). это("документо-ориентированная БД") :- это("не требует проектирования БД"), not(свойство("Использует", "язык SQL")), свойство("Подходит для", "систем управления контентом"). это("key-value БД") :- это("документо-ориентированная БД"), это("подходит для кэширования"). это("графовая БД") :- свойство("Хранение данных", "в виде узлов и соединений"), свойство("Подходит для", "социальных сетей"), свойство("Подходит для", "рекомендательных систем"). это("объектно-ориентированная БД") :- свойство("Хранение данных", "в виде объектов с методами"), свойство("Подходит для", "объекто-ориентированных приложений"), свойство("Подходит для", "мультимедийных приложений"). это("OLAP БД") :- это("реляционная БД"), свойство("Данные хранятся", "по колонкам"). цель:- бд(Арг), !, writeln(Арг), очистить. цель:- write("Не удалось подобрать СУБД"), очистить. бд("Postgres") :- это("реляционная БД"), свойство("Данные хранятся", "построчно"). бд("Clickhouse") :- это("OLAP БД"). бд("Redis") :- это("key-value БД"), not(свойство("Является", "свободной для использования")). бд("memcached") :- это("key-value БД"). бд("OrientDB") :- это("графовая БД"). бд("ObjectDB") :- это("объектно-ориентированная БД"). % лицензия("GNU GPL v3") :- свойство("Требует", "открыть исходный код"), % свойство("Требует", "указать изменения относительно оригинала"), % свойство("Требует", "включить лицензию в изменённый проект"), % свойство("Не позволяет", "привлекать к ответственности"), % свойство("Разрешает", "коммерческое использование"). % лицензия("GNU GPL v2") :- . % лицензия("BSD 3-clause") :- . % лицензия("MIT License") :- . % лицензия("Apache License 2.0") :- . % лицензия("Mozilla Public License") :- . % лицензия("EULA") :- . :- dynamic верно/2, ложно/2. очистить:- retract(верно(_,_)), fail. очистить:- retract(ложно(_,_)), fail. % ?- halt.