חורף-תשס"ג236363- dbms, שפות שאילתא: datalog1 datalog תכנות לוגי:...

38
גגג"ג- גגגג236363- DBMS, גגגגגג גגגג: Datalog 1 Datalog ייייי יייי : גגגגג גגגגגגג גגגגגגג גגגגגג. Datalog : גגג גגגגגג גגגג גג גגגג גגגגגג. יייייייי : גגגגגגגג גגגגגגג גגג גגגגגגג( True/False .) גגגגג גגגגגגג:woman)‘Sue’(. man)‘Bob’(. man)‘Ed’(. married_to)‘Sue’, ‘Bob’(. married_man)Y( ← married_to)X, Y(.

Post on 19-Dec-2015

231 views

Category:

Documents


6 download

TRANSCRIPT

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 1

Datalog

תכנות באמצעות נוסחאות לוגיות.תכנות לוגי :Datalog.שפה לתכנות לוגי של מסדי נתונים :

פרדיקטים( פונקציות המקבלות ערך בוליאני :True/False.)

:דוגמא לתוכנית

woman(‘Sue’).

man(‘Bob’).

man(‘Ed’).

married_to(‘Sue’, ‘Bob’).

married_man(Y) ← married_to(X, Y).

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 2

custדוגמא: פרדיקט

:נתונה הרלציה הבאה

-הייצוג בDatalog ע"י הפרדיקט :cust:cust)‘Moshe Cohen’, 12345, ‘CS’(.cust)‘Avi Barak’, 23456, ‘EE’(.cust)‘Avi Barak’, 34567, ‘MED’(.

Cust_NameCust_IdFaculty

Moshe Cohen12345CS

Avi Barak23456EE

Avi Barak34567MED

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 3

סוגי פרדיקטים

פרדיקטEDB )Extensional Database(:אנו אומרים במפורש עבור אלו ערכים הפרדיקטcust

).Trueמתקיים )ז"א מקבל ערך הערכים נתונים מראש במסד נתונים ולא כחלק

עצמהDatalogמתוכנית ה-

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 4

פרדיקטים המשך...

פרדיקטIDB )Intentional Database(: במקום רשימת ערכים מפורשת, מגדירים חוקים

(rules שקובעים מתי הפרדיקט מקבל ערך )True.( הערכים באים מתוך תחוםDomain של ערכים )

מותרים.נגדיר חוקדוגמא :

faculty)F( ← cust)N, I, F(.

:אז יתקיימו העובדות

faculty)‘CS’(.

faculty)‘EE’(.

faculty)‘MED’(.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 5

Datalogמזהים ב-Identifiers

מזהים המתחילים באות קטנה מייצגים.פרדיקטים

משתניםמזהים המתחילים באות גדולה מייצגים.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 6

Datalogחוקים ב-

לכל השמה של ערכים מהתחום למשתנים המופיעיםבחוק, אם מתקיים גוף החוק )התנאים שבזנב החץ( אז

מתקיים ראש החוק )ראש החץ(.בחוק דוגמא :faculty)F( ← cust)N, I, F( לכל השמה של

,cust)N, I , אם מתקיים N, I, Fערכים מהתחום למשתניםF( אז מתקיים faculty)F(.

-מכיוון שcust)N, I, F(מתקיים עבור ההשמה

N = ‘Moshe Cohen’, I = 12345, F = ‘CS מתקיים גם ’faculty)F( עבור אותה השמה, כלומר faculty)‘CS’(.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 7

- המשך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((

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 8

משמעות החוק – המשך

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))

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 9

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))

משמעות החוק – המשך

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 10

קשרים לוגיים

אם בגוף החוק מופיעים כמה תנאים, יש קשר של"וגם" ביניהם.

אם קיימים כמה חוקים עבור אותו פרדיקטIDB אז יש קשר של "או" בין גופי החוקים.

דוגמא: פרוש החוקים p)X( ← q)X, Y(, r)Y(. p)X( ← r)X(.

)) X, Y )))q)X, Y( r)Y(( r)X(( →p)Xהוא:

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 11

Datalogמשמעות של תוכנית

משמעות של תוכניתDatalog היא אוסף העובדות המשתמע ממנה.

הגדרה פורמלית למשמעות של שפה נקראת(.semanticsסמנטיקה )

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 12

משמעות - המשך

דוגמא: משמעות התוכנית 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’(}

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 13

בטיחות

מטרה: קבלת תוצאות סופיות ולא תלויות בתחום(domain independent.)

דוגמא: תוצאת החוק q)X, Y( ← p)X(.

היא תלויה בתחום: אםp)X( מתקיים עבור ערך X Y מתקיים עבור כל ערך )q)X, Yכלשהו, אז

בתחום. פתרון: הגדרת כללים סינטקטיים המבטיחים

בטיחות.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 14

בטיחות - המשך

חוקDatalog אם כל המשתנים בטוח הוא .מתוחמים הם המופיעים בחוק

משתנהX אם מתקיים אחד מהתנאים:מתוחם הוא מופיע בגוף החוק בתוך תנאי מהצורהp)…, X, …(

פרדיקט(p)כאשר הוא מופיע בהשוואה מהצורהX=y או y=X כאשר ,y

הוא קבוע או משתנה מתוחם אחר.( בדוגמא הנ"לq)X, Y( ← p)X( ,)Y ,לא מתוחם

ולכן החוק לא בטוח.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 15

שאילתות

-שאילתות בDatalog. "?" מתחילות בתו פלט: כל ההשמות שעבורן הערך של פרדיקט

.trueמסוים הוא דוגמא: אם הוגדר הפרדיקטfather)f, s( כאשר , f

, אז השאילתהf שם של בן של sשם של אב ו-

?father)‘John’, X(.

. Johnתחזיר את כל הבנים של

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 16

תוצאת השאילתה:

Father)‘John’, ‘Bob’(.

Father)‘John’, ‘Fred’(.

Father)‘John’, ‘Ann’(.

….

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 17

שאילתות המשך...

השאילתה

?father)Y, ‘John’(.

’. Johnתיתן את האבא של ‘השאילתה

?father)X, Y(.תחזיר את כל הזוגות של אב ובן.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 18

שאילתות המשך...

השאילתה ?father)‘John’, ‘Dave’(.

הוא האבא של John אם )’father)‘John’, ‘Daveתחזיר Dave.אחרת לא תחזיר דבר ,

-תשובה ריקה שקולה לfalse וכל תשובה אחרת , .trueהיא

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 19

Datalogאריתמטיקה ב-

ניתן להשתמש בפעולות אריתמטיות פשוטות, כגון

בגוף החוק.+, -, *, / :דוגמא

.six)X( ← X = 3 * 2 הפרדיקט

.6 שווה ל-X כאשר trueמקבל למעשה ניתן להסתכל על פעולות אריתמטיות כעל

פרדיקטים אינסופיים המוגדרים מראש במערכת. למשל, + יכול להיות מוגדר ע"י הפרדיקטadd)X, Y, Z(

)X + Y = Z. add)X, Y, Z ←בצורה הבאה:

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 20

דוגמאות

:דוגמא

. )add)5, 7, Zהשאילתא ?

, כלומר נקבל את 5+7 את תוצאת החישוב של Zתחזיר ב-. )add)5, 7, 12התשובה

ע"י אותו פרדיקט נוכל לבצע גם את הפעולהההפוכה-חיסור.

נבצע את השאילתא:5 – 12דוגמא: כדי לחשב את

?add)5, Y, 12(. ,יחד עם זאתDatalog אינו כלי לפתרון משוואות! במקרים

פחות פשוטים הוא לא יצליח.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 21

רקורסיה

בחוק המגדיר פרדיקטIDB ניתן להשתמש בפרדיקטי EDB ובפרדיקטי IDB אחרים )ואפילו רקורסיבית באותו

שאותו מגדיר החוק(.IDBפרדיקט

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 22

סגור טרנזיטיבי

-ע"י רקורסיה ניתן להגדיר ב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ו-

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 23

Datalog - עם שלילה Datalog

Datalog היא הרחבה של Datalog המאפשרת ,( לפני תנאי המופיע בגוף שימוש בסימן שלילה)

החוק.-דוגמא: בDatalogאפשר להגדיר את החוק

p)X( ← q)X(, r)X(. לכל ערךX בתחום, אם מתקיים q)X( ולא

.)X(p אז מתקיים )r)Xמתקיים

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 24

Datalogהמשך -

שימו לב: כאשר מגדירים חוקים עם שלילה שבהםלא כל המשתנים מופיעים בראש החוק, התוצאה

עלולה להיות שונה מהצפוי. :דוגמא

נתון הפרדיקט married_to)X, Y( המבטא כי האישה X .Yנשואה לגבר

ברצוננו להגדיר פרדיקטbachelor עבור הגברים הרווקים.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 25

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 שעבורו לא .)y(bachelor כדי שנקבל )married_to)X, Yמתקיים

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 26

דוגמא - הפתרון הנכון

נגדיר פרדיקט עזרmarried_man: married_man)Y( ← married_to)X, Y(. bachelor)Y( ← man)Y(, married_man)Y(.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 27

Datalogבטיחות של

-כמו בDatalog.ללא שלילות שימו לב: הופעה בתנאי מהצורהp)…, X, …(

להיות מתוחם.Xאינה לכשעצמה גורמת ל-

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 28

בטיחות - דוגמא

החוק q)X( ← p)X(.

איננו מתוחם.Xאיננו בטוח: המשתנה הפרדיקטq)X( יתקיים עבור כל התחום, פרט

.)p)X המקיימים xלערכי החוק

q)X( ← p)X(, s)X, Z(. מתוחם.Xהוא בטוח, כי

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 29

משמעות: שלילה מרובדת

לתוכניתDatalog.עלולות להיות מספר משמעויות שונות ( נתונה התוכניתX מעל התחום D = {0, 1}:)

p)0(.q)X( ←p)X(.

:במקרה הזה יש לתוכנית שתי משמעויות שונות {p)0(, q)1(} {p)0(, p)1(}

מבחינה לוגית, החוק האחרון שקול לחוקp)X( ←q)X(.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 30

דוגמא נוספת

woman)‘Sue’(.

man)‘Bob’(.

man)‘Ed’(.

married_to)‘Sue’, ‘Bob’(.

married_man)Y( ← married_to)X, Y(.

bachelor)Y( ← man)Y(, married_man)Y(.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 31

דוגמא המשך...

גם לתוכנית זו לפי הסמנטיקה של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’(}

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 32

Datalogמשמעות של תוכנית

.מסקנה: דרושה סמנטיקה אחרת השיטה: ריבוד התוכנית- חלוקת הפרדיקטים

לרבדים )שכבות( כך ש: אם קיים חוק מהצורהp)X( ← … q)X( אז הפרדיקט …

q נמצא ברובד נמוך יותר או שווה לרובד של p. אם קיים חוק מהצורהp)X( ← … q)X( אז …

נמצא ברובד שהוא )ממש( נמוך יותר qהפרדיקט .pמהרובד של

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 33

שלילה מרובדת - המשך

.לא כל תוכנית ניתנת לריבוד פרדיקטים שמוגדרים בצורה מעגלית עלולים

להיות בלתי ניתנים לריבוד. המשמעות מושגת ע"י חישוב הפרדיקטים לפי

סדר הרבדים, מהנמוך לגבוה.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 34

דוגמא

:ריבוד לתוכנית מהדוגמא הקודמת הפרדיקטים 0רובד :woman, man, married_to. הפרדיקט 1רובד :married_man. הפרדיקט 2רובד :bachelor.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 35

חישוב המשמעות של התוכנית:

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’(}

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 36

שלילה מרובדת – הערות

לתוכניתDatalog יכולים להיות כמה ריבודים שונים.

למשל, בדוגמא לעיל יכולנו להוריד את הפרדיקטmarried_man ואת 0 לרובד bachelor 1 לרובד.

.כל הריבודים יובילו לאותה משמעות הריבוד הדחוס ביותר שבו כל הפרדיקטים נמצאים

ברובד הנמוך ביותר האפשרי, הוא היעיל ביותר.

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 37

Datalogfסימני פונקציה – . הרחבה שלDatalog מבנהמאפשר להגדיר( structure.של רשימת הערכים )נתבונן בפרדיקטדוגמא :

person(name, house_no, street, city, id_no)

( נרצה לייצג את השלישייהhouse_no, street, city ) כישות, שמשמעותה – כתובת:לוגית אחת

person(name, addr(house_no, street, city), id_no) לכן, במקום העובדה

person(‘ 2389763, ‘ויצמן’, ‘חיפה’, 17ראובן’, ).נוכל לרשום:

person(‘ראובן’, addr(17, ‘ויצמן’, ‘חיפה’), 2389763).

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

חורף-תשס"ג 236363- DBMS, שפות שאילתא: Datalog 38

Datalogfהמשך –

:מותר לקנן סימני פונקציה, למשלperson(‘ראובן’, addr(street_addr(17, ‘ויצמן’), ‘חיפה’), 2389763)

:סימני פונקציה יכולים להופיע בראש החוק, למשלhaifa_res(N, street_addr(H,S)) person(N,addr(H,S,‘חיפה’),I).

סימני פונקציה אינם פונקציות )אלא רק איגוד שלמספר ערכים לערך אחד( ואינם פרדיקטים )אלא

ייצוג של "טיפוס" מורכב(. באמצעותDatalogf נוכל להגדיר רשימות ולחשב

פונקציות סטטיסטיות. נושאים אלו הינם מעבר למסגרת הקורס.