Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

2 חורף-תשס"ג236363- 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

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

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

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

6 חורף-תשס"ג236363- 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’).

7 חורף-תשס"ג236363- 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))

8 חורף-תשס"ג236363- 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))  

9 חורף-תשס"ג236363- 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))   משמעות החוק – המשך

10 חורף-תשס"ג236363- 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))

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

12 חורף-תשס"ג236363- 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’)}

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

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

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

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

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

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

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

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

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

22 חורף-תשס"ג236363- 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 שם של צאצא שלו.

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

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

25 חורף-תשס"ג236363- 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).

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

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

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

29 חורף-תשס"ג236363- 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).

30 חורף-תשס"ג236363- 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).

31 חורף-תשס"ג236363- 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’)}

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

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

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

35 חורף-תשס"ג236363- 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’)}

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

37 חורף-תשס"ג236363- 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, ‘ויצמן’, ‘חיפה’, 2389763). נוכל לרשום: person(‘ראובן’, addr(17, ‘ויצמן’, ‘חיפה’), 2389763).

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


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

Similar presentations


Ads by Google