Изменения

Перейти к: навигация, поиск

Datalog и рекурсия

1115 байт добавлено, 12:49, 20 декабря 2021
Примеры запросов
Parents(Name, MotherName) :- Person(_, Name, _, MotherId),
Person(MotherId, MotherName, _, _).
====Идентификаторы студентов не сдавших курс с CId=10====
На языке исчисления доменов этот запрос можно записать так:
SId <font color=blue>where</font> ¬∃Points (Points ≥ 60 ∧ Points<font color=red>{</font>SId = SId, Points = Points, CId = 10<font color=red>}</font>)
 
Перепишем его на язык Datalog. Так как в Datalog нет явных кванторов, то мы вынуждены пользоваться неявным квантором существования, который в Datalog связывает все свободные переменные цели. Над ним невозможно поставить отрицание, поэтому запишем вспомогательное отношение, в котором есть те и только те студенты, которые '''сдали курс''', затем построим отрицание.
Graded(SId) :- Points(SId, Points, 10), Points >= 60.
Failed(SId) :- Points(SId, _, _), ¬Graded(SId).
==Ограничение отношений==
Анонимный участник

Навигация