summaryrefslogtreecommitdiff
path: root/task7.pro
diff options
context:
space:
mode:
authorAndrew Guschin <guschin@altlinux.org>2024-06-08 15:00:45 +0400
committerAndrew Guschin <guschin@altlinux.org>2024-06-08 15:00:45 +0400
commit1181b4b4e76189a41bc89a4d9d240795f996b349 (patch)
tree8ee8700fb3cb99aae90e039a957ebb58dba9ba42 /task7.pro
parent75c3456bd00aab0659816acd4636ecd4257f15b5 (diff)
Добавлена экспертная система
Diffstat (limited to 'task7.pro')
-rw-r--r--task7.pro72
1 files changed, 72 insertions, 0 deletions
diff --git a/task7.pro b/task7.pro
new file mode 100644
index 0000000..9a50a07
--- /dev/null
+++ b/task7.pro
@@ -0,0 +1,72 @@
+% 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.