1 236363 מערכות מסדי נתונים 10. תכנות לוגי ב-Datalog שקפים:אלדר פישר.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות.
Presentation by Dudu Yanay and Elior Malul 1.  מה משותף לכל אלגוריתם המשתמש ב -Bucket Elimination: ◦ נתון מודל הסתברותי ורשת ביסיאנית מתאימה. ◦ נתונה.
מתמטיקה בדידה תרגול 3.
מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר.
חורף-תשס"ג DBMS, שפות שאילתא: Datalog1 Datalog תכנות לוגי: תכנות באמצעות נוסחאות לוגיות. Datalog: שפה לתכנות לוגי של מסדי נתונים. פרדיקטים: פונקציות.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
Inverse kinematics (Craig ch.4) ב"ה. Pieper’s solution נתבונן ברובוט עם 6 מפרקי סיבוב כאשר שלושת הצירים של המפרקים האחרונים נחתכים. נקודת החיתוך נתונה.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
אינטרפולציה רועי יצחק.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
סמינר במדעי המחשב 3 עודד פרץ משפט הנורמליזציה החזקה.
מרצה: פרופסור דורון פלד
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר.
תחשיב הפסוקים חלק ג'. צורות נורמליות א. DF – Disjunctive Form – סכום של מכפלות. דוגמא: (P  ~Q  R)  (R  P)  (R  ~Q  ~P) הגדרה: נוסחה השקולה לנוסחה.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
5. תלויות פונקציונליות שקפים: אלדר פישר
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
1 מפרטים פורמאליים תרגול מספר 1 מהות הקורס:כח ביטוי. בעיות מעשיות (ולא הוכחות) מתרגל אחראי:שחר דג מתרגלת:אמיליה כץ אתר:
חורף-תשס"ג DBMS, שפות שאילתא: Datalog1 Datalog תכנות לוגי: תכנות באמצעות נוסחאות לוגיות. Datalog: שפה לתכנות לוגי של מסדי נתונים. פרדיקטים: פונקציות.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
The Cyclic Multi-peg Tower of Hanoi מעגלי חד-כווני סבוכיות הפתרון בגרסאות עם יותר מ-3 עמודים.
תחשיב הפסוקים חלק ד'. תורת ההיסק של תחשיב הפסוקים.
מערכות מסדי נתונים 8. שפת החיפוש XPath שקפים:אלדר פישר.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תחשיב היחסים (הפרדיקטים)
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
 Client, Supplier ומה שביניהם ( ADT!).  שאלה 1: יצירת ADT עבור מעגל במישור נניח שלקוח מעוניין בפעולות הבאות : הזזת מעגל וחישוב שטח מעגל. הספק יספק ללקוח.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Tirgul 12 Trees 1.
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
4 July 2007 נרמול מסד הנתונים.
SQL בסיסי – הגדרה אינדוקטיבית
ממשקים - interfaces איך לאפשר "הורשה מרובה".
בעיות נוספות ב-NPC.
Marina Kogan Sadetsky –
NG Interpolation: Divided Differences
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

מערכות מסדי נתונים 10. תכנות לוגי ב-Datalog שקפים:אלדר פישר

2 הרעיון הכללי במודל הלוגי בשפת השאילתה DRC (עבור מסדים רלציונים) התייחסנו ישירות לסדרות הערכים, כשקבענו עבורן תנאים המתארים אלו מהן יכללו בתוצאת הביטוי. כאן אנו נכתוב תוכנית לוגית – סדרה של תנאים האמורים להתקיים עבור מספר רלציות שרק חלקן מאוחסנות מראש במאגר, בעוד האחרות מוגדרות למעשה באמצעות התנאים. אנו נדרוש עתה מהמסד חישוב של פיתרון עבור התוכנית, ז"א תכנים עבור הרלציות שאינן מאוחסנות במאגר, אשר ביחד עם תכני הרלציות המאוחסנות יקיימו את כל תנאי התוכנית. לבסוף, השאילתה תהיה שאילתה פשוטה על הרלציות – בד"כ מהו תוכן אחת הרלציות המוגדרות ע"י התוכנית הלוגית (בד"כ נאפשר גם הטלה ו/או תנאי בחירה נוסף בשלב זה).

3 מושגי יסוד ב-Datalog הרלציות המשתתפות ייוצגו ב-Datalog ע"י מילים המתחילות באות קטנה, שיקראו פרדיקטים. בדומה ל-DRC, לפרדיקטים יהיו משתנים שמספרם כמספר העמודות ברלציה המתאימה, וגם כאן סדר המשתנים יקבע לפי סדר כל שהוא שקבענו על העמודות. דוגמאות: human(X), parent(X, Y). משתנים ב-Datalog ייוצגו ע"י מילים המתחילות באות גדולה. פרדיקטים המתאימים לרלציות שתוכנן שמור במסד הנתונים יקראו פרדיקטים מפורשים, או EDB (Extensional DataBase). פרדיקטים המתאימים לרלציות שאינן במאגר, ושתוכנם מוגדר ע"י הפיתרון של התוכנית הלוגית הנתונה, יקראו פרדיקטים סתומים, או IDB (Intensional DataBase). שורה בתוכן של רלציה תיקרא גם עובדה עבור הפרדיקט המתאים.

4 Datalog – תחביר בסיסי בתחביר הבסיסי (בהמשך גם נראה אפשרות להכללה) סוג התנאי המותר היחידי הוא מהצורה pred(X 1,…,X k )  φ 1,…,φ n כאשר: pred הוא פרדיקט סתום. X 1,…,X k הם סמלי משתנים כל שהם. כל φ i הוא נוסחא אטומית אשר יכולה להשתמש במשתנים X 1,…,X k ובמשתנים נוספים, שנסמנם Z 1,…,Z m. הנוסחאות האטומיות המותרות הן אלו של פרדיקטים מפורשים או סתומים (עם הצבה של משתנים בפרדיקט, בדומה לנוסחאות האטומיות המתאימות לרלציות ב-DRC), השוואות בין משתנים (עם אחד מסימני ההשוואה הרגילים), והשוואות בין משתנים לקבועים. ביטוי לדוגמא : human(Nm)  ancestor(F,Nm), F=“Adam”

5 תחביר בסיסי – המשך משמעות הנוסחא היא זו: לכל הצבה אפשרית של ערכים במשתנים X 1,…,X k,Z 1,..,Z m, אם מתקיימים כל התנאים φ 1,…, φ n אז התוכן המתאים ל-pred חייב להכיל גם את ההצבה הנ"ל ל-X 1,…,X k. בתרגום ללוגיקה מסדר ראשון משמעות התנאי היא זו:  X 1,..,X k,Z 1,…,Z m ( (φ 1  φ 2  …  φ n )  pred(X 1,…,X k ) ) שימו לב שבמובן מסוים זוהי למעשה נוסחת Horn.

6 סימונים מקוצרים ניתן "להציב" ישירות קבוע במקומו של משתנה, במקום הוספה של תנאי הקובע שהמשתנה חייב להיות זהה לאותו קבוע. למשל: –הביטוי human(X)  ancestor(“Adam”,X) שקול לביטוי human(X)  ancestor(Y,X), Y=“Adam” –הביטוי human(“Adam”)  true שקול לביטוי human(X)  X=“Adam” בנוסף, ניתן להשתמש ב-" _ " עבור משתנה המופיע פעם אחת בלבד באחד התנאים. למשל : busy(X)  parent(X,_)

7 פתרונות מינימלים לא כל פיתרון עבור תוכנית לוגית הכתובה ב-Datalog הוא טוב עבורינו. למשל – היינו יכולים להציב בכל פרדיקט סתום את "רלצית כל השורות האפשריות" ולספק בכך את התוכנית, אולם הדבר לא היה נותן כלל מידע על הנתונים האגורים במסד. ברצוננו אם כך לנסח מושג של פיתרון אשר מתקבל ממנו מידע אמיתי על המסד, ושבמידת האפשר יהיה יחידי עבור הנתונים האגורים בפרדיקטים המפורשים. כיוון אחד לצמצום מושג הפיתרון הוא הדרישה שהפיתרון יהיה מינימלי – אנו נדרוש תוכן עבור הרלציות הסתומות שלא זו בלבד שיקיים את תנאי התוכנית, אלא שבנוסף לכך לא תהיה אף תת קבוצה (ממש) שלו אשר גם היא תקיים את התנאים.

8 נקודות שבת פיתרון מינימלי כזה יהיה בפרט נקודת שבת עבור התוכנית. הווה אומר: זה יהיה פיתרון עבור הרלציות הסתומות, כך שבנוסף לכך לכל שורה ברלציה סתומה קיים תנאי אשר "מצדיק" אותה: לכל α 1,…,α k כך ש-pred(α 1,…,α k ) מתקיים, יהיה לפחות תנאי אחד pred(x 1,…,x k )  φ 1,…,φ n בתוכנית הלוגית, והצבה β 1,…,β m עבור המשתנים הנוספים בתנאי זה, כך ש-φ 1,…,φ n כולם מתקיימים עבור הצבת הערכים α 1,…,α k,β 1,…,β m בהתאמה.

9 עובדות יכיחות גישה אחרת, שעבורה יש פיתרון יחיד למערכת, היא להתמקד רק בעובדות יכיחות – עובדה pred(α 1,…,α k ) (כאשר α 1,…,α k סידרה של קבועים) תיקרא יכיחה אם ניתן להסיק את קיום השורה α 1,…,α k ב-pred מתוך תוכן הרלציות המתאימות לפרדיקטים המפורשים, ע"י סדרה סופית של הפעלות של תנאים מתוך התוכנית הלוגית בהצבות מתאימות במשתנים. דוגמא: נניח ש-parent(X,Y) הוא פרדיקט מפורש ושהמאגר שלנו כולל עבורו את העובדות: parent(“Avraham”, “Itzchak”) parent(“Itzchak”, “Yaakov”) נניח גם ש-grandparent(X,Y) הוא פרדיקט סתום, ושכתבנו עבורו את התנאי grandparent(X,Y)  parent(X,Z),parent(Z,Y). את העובדה grandparent(“Avraham”,”Yaakov”) ניתן להסיק מהתנאי ע"י ההצבה Z=“Itzchak”, Y=“Yaakov”, X=“Avraham”.

10 המשפט המרכזי עבור כל תוכנית Datalog קיימת נקודת שבת מינימלית יחידה, וזוהי נתונה בדיוק ע"י קבוצת כל העובדות היכיחות ע"י סדרה סופית של היסקים. הוכחת משפט זה אינה במסגרת הקורס, אולם הנכם מוזמנים למצוא אותה בספרות.

11 ביטויים בטוחים ב-Datalog ביטויים כגון “equal(X,Y)  X=Y”, או אף “anything(X)  true”, יגרמו לפרדיקטים לקבל מספר אין-סופי של עובדות. על מנת להבטיח שמצב כזה לא יקרה, ושבנוסף לכך ערכי הפרדיקטים הסתומים יהיו תלויים אך ורק בפרדיקטים המפורשים (ולא בתחומי ההגדרה), אנו נצטרך להגביל עצמנו לביטויים בטוחים. ביטוי pred(X 1,…,X k )  φ 1,…,φ n עם משתנים נוספים Z 1, …,Z m, יקרא בטוח אם כל המשתנים X 1,…,X k,Z 1, …,Z m הם מתוחמים. משתנה X יקרא מתוחם אם הוא מופיע ב-φ i שהוא פרדיקט (סתום או מפורש), או בהשוואה מהטיפוס “X=α” כאשר α קבוע, או בהשוואה מהטיפוס “X=Y” כאשר Y הוא משתנה מתוחם.

12 אפשרות חישוב האלגוריתם הבא יחשב, אם כי באיטיות, את נקודת השבת המינימלית עבור תוכנית Datalog בטוחה. עבור כל p  IDB אפס את R p (לקבוצה ריקה). חזור על התהליך הבא כל עוד ניתן להוסיף באמצעותו שורות: – עבור תנאי p(X 1,…,X k )  φ 1,…,φ n עם משתנים נוספים Z 1,…,Z m, ועבור הצבה α 1,…,α k,β 1,…,β m במשתנים X 1,…,X k,Z 1,…,Z m אשר מקיימת את φ 1,…,φ n (ביחס ל-R q הנוכחיות), הוסף את השורה α 1,…,α k ל-R p. כאשר אין יותר אפשרות להוסיף אף שורה לאף רלציה R p, פלוט את הרלציות.

13 מימוש של מספר פעולות של RA ניתן לממש הטלות ב-Datalog (ביחס לפירוש נקודת השבת המינימלית) באופן הבא: proj (X 1,…,X k )  pred (X 1,…,X k,X k+1,…,X m ) איחודים וחיתוכים ניתן לממש כך: intersect(X 1,…,X k )  pred 1 (X 1,…,X k ),pred 2 (X 1,…,X k ) union(X 1,…,X k )  pred 1 (X 1,…,X k ) union(X 1,…,X k )  pred 2 (X 1,…,X k ) איך נממש צירופים טבעיים ? join(X 1,…,X k,Y 1,…,Y m,Z 1,…,Z n )  pred 1 (X 1,…,X k,Y 1,…,Y m ),pred 2 (Y 1,…,Y m,Z 1,…,Z n ) תרגיל למחשבה: איך נממש בחירה (selection) לפי ביטוי  ? רמז – ראשית כדאי להעביר את  ל-Disjunctive Normal Form.

14 גרף תלויות לתוכנית Datalog ניתן להתאים גרף מכוון, שיקרא גרף התלויות. בגרף זה יהיה צומת לכל פרדיקט המשתתף בתוכנית. קשת תהיה מ-pred 1 ל-pred 2 אם ורק אם pred 1 מופיע בלפחות אחד התנאים של לפחות אחת הפסוקיות המגדירות את pred 2. האם יתכנו קשתות נכנסות לצמתים המתאימים לפרדיקטים המפורשים ?

15 גרף תלויות – דוגמא עבור התוכנית sibling(X,Y)  X  Y, parent(Z,X), parent(Z,Y) cousin(X,Y)  parent(Xp,X), parent(Yp,Y), sibling(Xp,Yp) cousin(X,Y)  parent(Xp,X), parent(Yp,Y), cousin(Xp,Yp) יתקבל הגרף sibling parent cousin

16 מימוש ב-RA של קטע תוכנית לוגית אם פרדיקט סתום pred תלוי אך ורק בפרדיקטים שאת תוכנם אנו יודעים מראש (למשל, פרדיקטים מפורשים), אז ניתן לחשב את ערכו של pred כביטוי רלציוני (ב-RA, או ב-Safe-DRC השקול בכוחו ל-RA) המשתמש ברלציות המתאימות. דוגמא: נניח ש-parent(X,Y) הוא פרדיקט מפורש המתאים לרלציה Parent[Father,Son] השמורה במאגר הנתונים, ונניח ש-grandparent(X,Y) מוגדר ע"י grandparent(X,Y)  parent(X,Z),parent(Z,Y). אז ניתן לחשב את הרלציה המתאימה ל-grandparent באמצעות הביטוי:  Father 1,Son 2 (  Son 1 =Father 2 (Parent  Parent) )

17 תוכניות לא-רקורסיביות וחישוב ב-RA תוכנית Datalog בעלת מעגלים (מכוונים) בגרף התלויות תיקרא רקורסיבית. תוכנית ללא מעגלים כאלה תיקרא לא-רקורסיבית. עבור תוכנית לא רקורסיבית, ניתן יהיה לחשב את נקודת השבת המינימלית (מבחינת התוכן של הפרדיקטים הסתומים) באמצעות מספר קבוע של פעולות RA באופן הבא: ראשית, נכתוב מיון טופולוגי של צמתי גרף התלויות. זאת אומרת: נקבע סדר טוב על הפרדיקטים כך שכל פרדיקט יהיה תלוי אך ורק בפרדיקטים הנמצאים לפניו בסדר זה. עתה נעבור על הפרדיקטים הסתומים לפי סדרם, כשכל אחד יחושב כביטוי RA בפרדיקטים אשר חישובם יסתיים לפניו.

18 תוכניות רקורסיביות וחישוב ב-RA קיימות תוכניות Datalog רקורסיביות שפתרונן מניב רלציות שאין אפשרות לחשבן ע"י נוסחת RA קבועה מראש. לדוגמא: עבור הפרדיקט המפורש parent(X,Y), נגדיר את הפרדיקט הסתום ancestor(X,Y) באופן הבא: ancestor(X,Y)  parent(X,Y) ancestor(X,Y)  ancestor(X,Z),parent(Z,Y) נקודת השבת המינימלית תיתן ל-ancestor את הסגור הטרנזיטיבי של parent: העובדה ancestor(α,β) תתקיים אם ורק אם עבור k כל שהוא קיימים α =  1,  2,  3,…,  k = β, כך שלכל 1  i < k מתקיימת העובדה parent(  i,  i+1 ). כזכור מדוגמת קווי הרכבות ותחנות החילוף, אין אפשרות לחשב את הסגור הטרנזיטיבי ע"י נוסחת RA, אם כי ניתן לחשבו כ"גבול" של סדרה של נוסחאות כאלו.

19 תוספת של ביטויים אריתמטיים להגדלת החוזק התיאורי של Datalog, יש המוסיפים אפשרות לביטויים אריתמטים פשוטים בתנאי ההשוואות של הפסוקיות. הדבר שקול לתוספת של הפרדיקטים (האין-סופיים) המוגדרים מראש mult(X,Y,Z), add(X,Y,Z), כך שלכל זוג מספרים טבעיים i,j אלו יכילו את העובדות mult(i,j,i  j), add(i,j,i+j). כמובן שהשתתפות בפרדיקט כזה אינה תוחמת את המשתנה לצרכי בדיקה של בטיחות. ראו לדוגמא את התוכנית: positive(1)  true positive( I )  positive(J),add(J,1, I ) פרטים ודוגמאות נוספות יינתנו בתרגיל.

20 Datalog וחישוב הפרשים נניח ש-pred 1 ו-pred 2 הם פרדיקטים מפורשים המתאימים לרלציות T 1 ו-T 2 בהתאמה, הנמצאות במסד הנתונים. טענה: לא קיימת תוכנית Datalog אשר מחשבת את T 1 \T 2. תקציר ההוכחה: נשים לב שבתחביר הבסיסי, שיטת החישוב של הפרדיקטים הסתומים היא מונוטונית – הוספת עובדות לפרדיקטים המפורשים אינה יכולה לגרוע עובדות מהפרדיקטים הסתומים. מצד שני, תוספת של שורות ל-T 2 אכן גורעת שורות מ-T 1 \T 2, כך שלא נוכל לייצר באמצעות תוכנית Datalog פרדיקט שערכו יובטח להיות זהה ל-T 1 \T 2.

21 תוספת של שלילות ל-Datalog על מנת לאפשר את כתיבתן של שאילתות שאינן מונוטוניות, אנו נאפשר גם כתיבתם של תנאים המורכבים משלילות של פרדיקטים. באופן פורמלי: פסוקית ב-Datalog עם שלילות היא פסוקית מהצורה pred(X 1,…,X k )  φ 1,…,φ n, כאשר כל φ i הוא או השוואה, או פרדיקט (שמוצבים בו משתנים כל שהם), או שלילה של פרדיקט. גם כאן משמעות הפסוקית היא שעבור פיתרון קביל של התוכנית הלוגית, הגרירה חייבת להתקיים לכל הצבה במשתנים. כאשר נבדוק את הבטיחות של פסוקית, הופעה של משתנה בשלילה של פרדיקט לא תחשב כמתחמת אותו, אלא רק הופעה בפרדיקט ללא שלילה תחשב כמתחמת את המשתנה.

22 בעיות עם שלילות כאשר אנו מאפשרים שלילות, אפשר בקלות להגיע למצב שבו אין לנו נקודות שבת כלל. לדוגמא: lier(X)  human(X),¬lier(X) גם במקרים שבהם קיימים פתרונות, יתכנו נקודות שבת מינימליות רבות שאין עבורן דרך טובה לבחור אחת. לדוגמא: naysayer(X)  human(X),¬yeahsayer(X) yeahsayer(X)  human(X),¬naysayer(X)

23 תוכניות Datalog מרובדות (Stratified) ריבוד (stratification) עבור תוכנית Datalog עם שלילות הוא פונקציה מקבוצת הפרדיקטים אל המספרים הטבעיים המקיימת את התנאים הבאים: –אם pred 1 תלוי ב-pred 2, אז ערך הריבוד הניתן ל-pred 2 אינו עולה על זה של pred 1. –אם pred 1 תלוי ב-pred 2 באמצעות שלילה, ז"א שהשלילה של pred 2 מופיעה באחת הפסוקיות המגדירות את pred 1, אז הריבוד הניתן ל-pred 2 קטן ממש מזה של pred 1. ניתן להוכיח (ראו בספרות) את הטענה הבאה: תוכנית Datalog היא ניתנת לריבוד אם ורק אם גרף התלויות שלה אינו כולל מעגל עם קשתות הנובעות משלילות.

24 ריבוד ונקודות שבת גם עבור תוכניות Datalog מרובדות קיימות דוגמאות עם מספר נקודות שבת מינימליות. עם זאת, תמיד מובטח שפלט האלגוריתם הבא יהיה נקודת שבת מינימלית שאינה תלויה בריבוד הספציפי: עבור על כל רמות הריבוד של התוכנית, מהראשונה עד האחרונה. – בשלב ה-i, חשב פיתרון מינימלי עבור כל פסוקיות ה-IDB מהרמה ה-i, תוך שימוש בערכים שחושבו עבור הרמות הקודמות. אם תוכנית ה-Datalog המרובדת בטוחה, אז ניתן לממש את האלגוריתם ללא התיחסות לקבוצות אין-סופיות, והתוצאה תהיה תלויה אך ורק בערכי הפרדיקטים המפורשים ובתוכנית. נקודת השבת הנמצאת ע"י אלגוריתם זה נקראת: נקודת השבת המושלמת – Perfect Fixed Point.

25 החוזק התיאורי של Datalog – סיכום קצר כל הטענות הבאות נכונות ל-Datalog ללא ההרחבות האריתמטיות. ניתן לבטא בביטויי Datalog בטוחים וחסרי שלילה פעולות שלא ניתן לבטאן ב-RA. עם זאת, לא כל ביטוי RA ניתן לבטא בביטוי Datalog. החוזק התיאורי של ביטויי Datalog בטוחים, חסרי שלילה, ולא רקורסיביים, זהה לזה של ביטויי RA המשתמשים בפעולות , , , ,  בלבד. החוזק התיאורי של ביטויי Datalog בטוחים ולא רקורסיביים עם שלילות זהה לזה של ביטויי RA כלליים. וויתור על הבטיחות מגדיל את החוזק התיאורי (ועם שלילות ניתן יהיה לבטא בפרט כל ביטוי ב-DRC), אבל עלול לגרום לתוצאות אין-סופיות ולתוצאות שאינן תלויות בתחום הגדרת המשתנים.

26 מספר מילים על המודל הלוגי הסיבה לחוזק התיאורי של Datalog נעוצה בכך ששפה זו מתייחסת לתחביר לוגי המהווה הרחבה של הלוגיקה מסדר ראשון אשר שמשה אותנו עבור DRC. הרחבה זו קרויה Fixed Point Logic, ונחקרה ע"י הלוגיקאים כאחת מהאפשרויות לפתור את חוסר היכולת לבטא סגור טרנזיטיבי בלוגיקה מסדר ראשון.