חורף-תשס"ג236363- DBMS, שפות שאילתא: Datalog1 Datalog תכנות לוגי: תכנות באמצעות נוסחאות לוגיות. Datalog: שפה לתכנות לוגי של מסדי נתונים. פרדיקטים: פונקציות.

Slides:



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

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
צורה נורמלית של גרייבך הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
1 Formal Specifications for Complex Systems (236368) Tutorial #2 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book); Z.
Presentation by Dudu Yanay and Elior Malul 1.  מה משותף לכל אלגוריתם המשתמש ב -Bucket Elimination: ◦ נתון מודל הסתברותי ורשת ביסיאנית מתאימה. ◦ נתונה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
1 מבוא למדעי המחשב משתנים. 2  סוגי משתנים בשפת C  ההבדלים בין סוגי המשתנים השונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
חורף - תשס " ג 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. מספר הטעיות קטן.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
צורות נורמליות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 10.
1 חלק XQuery :IV XML Query. 2 ביבליוגרפיה - DTD 3 ביבליוגרפיה – books.xml TCP/IP Illustrated Stevens W. Addison-Wesley Advanced Programming in.
תכנות תרגול 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.
מנפה שגיאות - DEBUGGER מבוא למדעי המחשב (234114) רועי מלמד
תחשיב הפסוקים חלק ג'. צורות נורמליות א. DF – Disjunctive Form – סכום של מכפלות. דוגמא: (P  ~Q  R)  (R  P)  (R  ~Q  ~P) הגדרה: נוסחה השקולה לנוסחה.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
DBMS , שפות שאילתה: SQL (ב')
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
חורף-תשס"ג DBMS, שפות שאילתא: Datalog1 Datalog תכנות לוגי: תכנות באמצעות נוסחאות לוגיות. Datalog: שפה לתכנות לוגי של מסדי נתונים. פרדיקטים: פונקציות.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
תחשיב הפסוקים חלק ד'. תורת ההיסק של תחשיב הפסוקים.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
אלכסנדר ברנגולץ דואר אלקטרוני: אלכסנדר ברנגולץ דואר אלקטרוני: פעולות מורפולוגיות.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
תחשיב היחסים (הפרדיקטים)
מערכות מסדי נתונים 10. תכנות לוגי ב-Datalog שקפים:אלדר פישר.
תרגול 5: ביטויים לוגיים ומשפטי תנאי (חזרה והרחבה)
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
מתמטיקה בדידה תרגול 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 תרגול
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
1 חלק XQuery :IV XML Query. 2 ביבליוגרפיה - DTD 3 ביבליוגרפיה – books.xml TCP/IP Illustrated Stevens W. Addison-Wesley Advanced Programming in.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
SQL בסיסי – הגדרה אינדוקטיבית
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
ניתוח מערכות מידע תכנות ב C#
NG Interpolation: Divided Differences
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

חורף-תשס"ג DBMS, שפות שאילתא: Datalog1 Datalog תכנות לוגי: תכנות באמצעות נוסחאות לוגיות. Datalog: שפה לתכנות לוגי של מסדי נתונים. פרדיקטים: פונקציות המקבלות ערך בוליאני (True/False). דוגמא לתוכנית: woman(‘Sue’). man(‘Bob’). man(‘Ed’). married_to(‘Sue’, ‘Bob’). married_man(Y) ← married_to(X, Y).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog2 דוגמא: פרדיקט cust נתונה הרלציה הבאה: הייצוג ב-Datalog: ע"י הפרדיקט cust: cust(‘Moshe Cohen’, 12345, ‘CS’). cust(‘Avi Barak’, 23456, ‘EE’). cust(‘Avi Barak’, 34567, ‘MED’). FacultyCust_IdCust_Name CS12345Moshe Cohen EE23456Avi Barak MED34567Avi Barak

חורף-תשס"ג DBMS, שפות שאילתא: Datalog3 סוגי פרדיקטים פרדיקט EDB (Extensional Database): אנו אומרים במפורש עבור אלו ערכים הפרדיקטcust מתקיים (ז"א מקבל ערך True (. הערכים נתונים מראש במסד נתונים ולא כחלק מתוכנית ה- Datalog עצמה

חורף-תשס"ג DBMS, שפות שאילתא: Datalog4 פרדיקטים המשך... פרדיקט IDB (Intentional Database): במקום רשימת ערכים מפורשת, מגדירים חוקים (rules) שקובעים מתי הפרדיקט מקבל ערך True. הערכים באים מתוך תחום (Domain) של ערכים מותרים. דוגמא: נגדיר חוק faculty(F) ← cust(N, I, F). אז יתקיימו העובדות: faculty(‘CS’). faculty(‘EE’). faculty(‘MED’).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog5 מזהים ב-Datalog Identifiers מזהים המתחילים באות קטנה מייצגים פרדיקטים. מזהים המתחילים באות גדולה מייצגים משתנים.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog6 חוקים ב-Datalog לכל השמה של ערכים מהתחום למשתנים המופיעים בחוק, אם מתקיים גוף החוק (התנאים שבזנב החץ) אז מתקיים ראש החוק (ראש החץ). דוגמא: בחוק faculty(F) ← cust(N, I, F) לכל השמה של ערכים מהתחום למשתניםN, I, F, אם מתקיים cust(N, I, F) אז מתקיים faculty(F). מכיוון ש- cust(N, I, F) מתקיים עבור ההשמה N = ‘Moshe Cohen’, I = 12345, F = ‘CS’ מתקיים גם faculty(F) עבור אותה השמה, כלומר faculty(‘CS’).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog7 חוקים ב-Datalog - המשך עובדה שנתונה במפורש, כמו cust(‘Moshe Cohen’, 12345, ‘CS’). שקולה לחוק : ←. cust(‘Moshe Cohen’, 12345, ‘CS’) החוק faculty(F) ← cust(N, I, F) שקול לנוסחה הלוגית : ∀ N,I,F (cust(N, I, F) → faculty(F)) וגם ל- ∀ F ( ( ∃ N,I cust(N, I, F))→ faculty(F))

חורף-תשס"ג DBMS, שפות שאילתא: Datalog8 משמעות החוק – המשך  N,I,F(cust(N, I, F) → faculty(F))  N,I,F (  cust(N, I, F)  faculty(F) )  F,I (  N(  cust(N, I, F))  faculty(F) )  F,I ( (  ∃ N cust(N, I, F))  faculty(F) ) N אינו משתנה חופשי ב -faculty(F)  x    x      x (  (x)  )  (  x  (x))  

חורף-תשס"ג DBMS, שפות שאילתא: Datalog9  F,I (  ∃ N cust(N, I, F)  faculty(F) )  F (  I (  ∃ N cust(N, I, F))  faculty(F) )  F ( (  ∃ I,N cust(N, I, F))  faculty(F) )  F ( ( ∃ I,N cust(N, I, F)) → faculty(F) ) I אינו משתנה חופשי ב -faculty(F)  x    x      x (  (x)  )  (  x  (x))   משמעות החוק – המשך

חורף-תשס"ג DBMS, שפות שאילתא: Datalog10 קשרים לוגיים אם בגוף החוק מופיעים כמה תנאים, יש קשר של "וגם" ביניהם. אם קיימים כמה חוקים עבור אותו פרדיקט IDB אז יש קשר של "או" בין גופי החוקים. דוגמא: פרוש החוקים p(X) ← q(X, Y), r(Y). p(X) ← r(X). הוא :  X, Y (((q(X, Y)  r(Y))  r(X)) →p(X))

חורף-תשס"ג DBMS, שפות שאילתא: Datalog11 משמעות של תוכנית Datalog משמעות של תוכנית Datalog היא אוסף העובדות המשתמע ממנה. הגדרה פורמלית למשמעות של שפה נקראת סמנטיקה (semantics).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog12 משמעות - המשך דוגמא: משמעות התוכנית cust(‘Moshe Cohen’, 12345, ‘CS’). cust(‘Avi Barak’, 23456, ‘EE’). cust(‘Avi Barak’, 34567, ‘MED’). faculty(F) ← cust(N, I, F). היא {cust(‘Moshe Cohen’, 12345, ‘CS’), cust(‘Avi Barak’, 23456, ‘EE’), cust(‘Avi Barak’, 34567, ‘MED’), faculty(‘CS’), faculty(‘EE’), faculty(‘MED’)}

חורף-תשס"ג DBMS, שפות שאילתא: Datalog13 בטיחות מטרה: קבלת תוצאות סופיות ולא תלויות בתחום (domain independent). דוגמא: תוצאת החוק q(X, Y) ← p(X). היא תלויה בתחום: אם p(X) מתקיים עבור ערך X כלשהו, אז q(X, Y) מתקיים עבור כל ערך Y בתחום. פתרון: הגדרת כללים סינטקטיים המבטיחים בטיחות.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog14 בטיחות - המשך חוק Datalog הוא בטוח אם כל המשתנים המופיעים בחוק הם מתוחמים. משתנה X מתוחם אם מתקיים אחד מהתנאים: הוא מופיע בגוף החוק בתוך תנאי מהצורה p(…, X, …) (כאשר p פרדיקט) הוא מופיע בהשוואה מהצורה X=y או y=X, כאשר y הוא קבוע או משתנה מתוחם אחר. בדוגמא הנ"ל (q(X, Y) ← p(X)), Y לא מתוחם, ולכן החוק לא בטוח.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog15 שאילתות שאילתות ב-Datalog מתחילות בתו "?". פלט: כל ההשמות שעבורן הערך של פרדיקט מסוים הוא true. דוגמא: אם הוגדר הפרדיקטfather(f, s), כאשר f שם של אב ו-s שם של בן של f, אז השאילתה ?father(‘John’, X). תחזיר את כל הבנים של John.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog16 תוצאת השאילתה: Father(‘John’, ‘Bob’). Father(‘John’, ‘Fred’). Father(‘John’, ‘Ann’). ….

חורף-תשס"ג DBMS, שפות שאילתא: Datalog17 שאילתות המשך... השאילתה ?father(Y, ‘John’). תיתן את האבא של ‘John’. השאילתה ?father(X, Y). תחזיר את כל הזוגות של אב ובן.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog18 שאילתות המשך... השאילתה ?father(‘John’, ‘Dave’). תחזיר father(‘John’, ‘Dave’) אם John הוא האבא של Dave, אחרת לא תחזיר דבר. תשובה ריקה שקולה ל-false, וכל תשובה אחרת היא true.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog19 אריתמטיקה ב-Datalog ניתן להשתמש בפעולות אריתמטיות פשוטות, כגון +, -, *, / בגוף החוק. דוגמא: הפרדיקט six(X) ← X = 3 * 2. מקבל true כאשר X שווה ל-6. למעשה ניתן להסתכל על פעולות אריתמטיות כעל פרדיקטים אינסופיים המוגדרים מראש במערכת. למשל, + יכול להיות מוגדר ע"י הפרדיקט add(X, Y, Z) בצורה הבאה: ← X + Y = Z. add(X, Y, Z)

חורף-תשס"ג DBMS, שפות שאילתא: Datalog20 דוגמאות דוגמא: השאילתא ?add(5, 7, Z). תחזיר ב-Z את תוצאת החישוב של 5+7, כלומר נקבל את התשובה add(5, 7, 12). ע"י אותו פרדיקט נוכל לבצע גם את הפעולה ההפוכה-חיסור. דוגמא: כדי לחשב את 12 – 5 נבצע את השאילתא: ?add(5, Y, 12). יחד עם זאת, Datalog אינו כלי לפתרון משוואות! במקרים פחות פשוטים הוא לא יצליח.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog21 רקורסיה בחוק המגדיר פרדיקט IDB ניתן להשתמש בפרדיקטי EDB ובפרדיקטי IDB אחרים (ואפילו רקורסיבית באותו פרדיקט IDB שאותו מגדיר החוק).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog22 סגור טרנזיטיבי ע"י רקורסיה ניתן להגדיר ב-Datalog סגור טרנזיטיבי. דוגמא: נתון: הפרדיקט father(F, S). נגדיר: פרדיקט חדש ancestor(A, D) ע"י: ancestor(A, D) ← father(A,D). ancestor(A, D) ← father(A,M), ancestor(M, D). הפרדיקט ancestor(A, D) יתקיים כאשר A שם של בן אדם ו-D שם של צאצא שלו.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog23 Datalog עם שלילה - Datalog  Datalog  היא הרחבה של Datalog, המאפשרת שימוש בסימן שלילה (  ) לפני תנאי המופיע בגוף החוק. דוגמא: ב-Datalog  אפשר להגדיר את החוק p(X) ← q(X),  r(X). לכל ערך X בתחום, אם מתקיים q(X) ולא מתקיים r(X) אז מתקיים p(X).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog24 Datalog  - המשך שימו לב: כאשר מגדירים חוקים עם שלילה שבהם לא כל המשתנים מופיעים בראש החוק, התוצאה עלולה להיות שונה מהצפוי. דוגמא: נתון הפרדיקט married_to(X, Y) המבטא כי האישה X נשואה לגבר Y. ברצוננו להגדיר פרדיקט bachelor עבור הגברים הרווקים.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog25 דוגמא - ניסיון 1 bachelor(Y) ← man(Y),  married_to(X, Y). טענה: bachelor מתקיים לכל הגברים במסד הנתונים. הסבר: החוק שקול ל- ∀ X,Y((man(Y) ⋀  married_to(X, Y)) → bachelor(Y)) וגם ל- ∀ Y((man(Y) ⋀∃ X(  married_to(X,Y))) → bachelor(Y)) ולכן מספיק שקיים בתחום ערך אחד X שעבורו לא מתקיים married_to(X, Y) כדי שנקבל bachelor(y).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog26 דוגמא - הפתרון הנכון נגדיר פרדיקט עזר married_man: married_man(Y) ← married_to(X, Y). bachelor(Y) ← man(Y),  married_man(Y).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog27 בטיחות של Datalog  כמו ב-Datalog ללא שלילות. שימו לב: הופעה בתנאי מהצורה  p(…, X, …) אינה לכשעצמה גורמת ל-X להיות מתוחם.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog28 בטיחות - דוגמא החוק q(X) ←  p(X). איננו בטוח: המשתנה X איננו מתוחם. הפרדיקט q(X) יתקיים עבור כל התחום, פרט לערכי x המקיימים p(X). החוק q(X) ←  p(X), s(X, Z). הוא בטוח, כי X מתוחם.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog29 משמעות: שלילה מרובדת לתוכנית Datalog  עלולות להיות מספר משמעויות שונות. נתונה התוכנית (X מעל התחום D = {0, 1}): p(0). q(X) ←  p(X). במקרה הזה יש לתוכנית שתי משמעויות שונות: {p(0), q(1)} {p(0), p(1)} מבחינה לוגית, החוק האחרון שקול לחוק p(X) ←  q(X).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog30 דוגמא נוספת woman(‘Sue’). man(‘Bob’). man(‘Ed’). married_to(‘Sue’, ‘Bob’). married_man(Y) ← married_to(X, Y). bachelor(Y) ← man(Y),  married_man(Y).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog31 דוגמא המשך... גם לתוכנית זו לפי הסמנטיקה של Datalog שתי משמעויות שונות: 1. {woman(‘Sue’), man(‘Bob’), man(‘Ed’), married_to(‘Sue’, ‘Bob’), married_man(‘Bob’), bachelor(‘Ed’)} 2. {woman(‘Sue’), man(‘Bob’), man(‘Ed’), married_to(‘Sue’, ‘Bob’), married_man(‘Bob’), married_man(‘Ed’)}

חורף-תשס"ג DBMS, שפות שאילתא: Datalog32 משמעות של תוכנית  Datalog מסקנה: דרושה סמנטיקה אחרת. השיטה: ריבוד התוכנית- חלוקת הפרדיקטים לרבדים (שכבות) כך ש: אם קיים חוק מהצורה p(X) ← … q(X)… אז הפרדיקט q נמצא ברובד נמוך יותר או שווה לרובד של p. אם קיים חוק מהצורה p(X) ← …  q(X)… אז הפרדיקט q נמצא ברובד שהוא (ממש) נמוך יותר מהרובד של p.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog33 שלילה מרובדת - המשך לא כל תוכנית ניתנת לריבוד. פרדיקטים שמוגדרים בצורה מעגלית עלולים להיות בלתי ניתנים לריבוד. המשמעות מושגת ע"י חישוב הפרדיקטים לפי סדר הרבדים, מהנמוך לגבוה.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog34 דוגמא ריבוד לתוכנית מהדוגמא הקודמת: רובד 0: הפרדיקטים woman, man, married_to. רובד 1: הפרדיקט married_man. רובד 2: הפרדיקט bachelor.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog35 חישוב המשמעות של התוכנית: רובד 0: {woman(‘Sue’), man(‘Bob’), man(‘Ed’), married_to(‘Sue’, ‘Bob’)} רובד 0+1: {woman(‘Sue’), man(‘Bob’), man(‘Ed’), married_to(‘Sue’, ‘Bob’), married_man(‘Bob’)} רובד 0+1+2: {woman(‘Sue’), man(‘Bob’), man(‘Ed’), married_to(‘Sue’, ‘Bob’), married_man(‘Bob’), bachelor(‘Ed’)}

חורף-תשס"ג DBMS, שפות שאילתא: Datalog36 שלילה מרובדת – הערות לתוכנית Datalog יכולים להיות כמה ריבודים שונים. למשל, בדוגמא לעיל יכולנו להוריד את הפרדיקט married_man לרובד 0 ואת bachelor לרובד 1. כל הריבודים יובילו לאותה משמעות. הריבוד הדחוס ביותר שבו כל הפרדיקטים נמצאים ברובד הנמוך ביותר האפשרי, הוא היעיל ביותר.

חורף-תשס"ג DBMS, שפות שאילתא: Datalog37 Datalog f – סימני פונקציה הרחבה של.Datalog מאפשר להגדיר מבנה (structure) של רשימת הערכים. דוגמא: נתבונן בפרדיקט person(name, house_no, street, city, id_no) נרצה לייצג את השלישייה (house_no, street, city) כישות לוגית אחת, שמשמעותה – כתובת: person(name, addr(house_no, street, city), id_no) לכן, במקום העובדה person(‘ראובן’, 17, ‘ויצמן’, ‘חיפה’, ). נוכל לרשום: person(‘ראובן’, addr(17, ‘ויצמן’, ‘חיפה’), ).

חורף-תשס"ג DBMS, שפות שאילתא: Datalog38 Datalog f – המשך מותר לקנן סימני פונקציה, למשל: person(‘ראובן’, addr(street_addr(17, ‘ויצמן’), ‘חיפה’), ) סימני פונקציה יכולים להופיע בראש החוק, למשל: haifa_res(N, street_addr(H,S))  person(N,addr(H,S,‘ חיפה’),I). סימני פונקציה אינם פונקציות (אלא רק איגוד של מספר ערכים לערך אחד) ואינם פרדיקטים (אלא ייצוג של "טיפוס" מורכב). באמצעות Datalog f נוכל להגדיר רשימות ולחשב פונקציות סטטיסטיות. נושאים אלו הינם מעבר למסגרת הקורס.