400 likes | 553 Views
DTD Inference for Views of XML Data. Yannis Papakonstantinou and Victor Vianu U.C. San Diego Given by Irit Gefner 17.11.02. על סדר היום. מוטיבציה הגדרות וטענות אלגוריתם סיכום. מוטיבציה. מוטיבציה. נגדיר : מבנה נתונים המתאים למסמך XML . מבנה נתונים המתאים ל DTD .
E N D
DTD Inference for Views of XML Data Yannis Papakonstantinou and Victor Vianu U.C. San Diego Given by Irit Gefner 17.11.02
על סדר היום • מוטיבציה • הגדרותוטענות • אלגוריתם • סיכום Type Inference
מוטיבציה Type Inference
מוטיבציה נגדיר: מבנה נתונים המתאים למסמך XML. מבנה נתונים המתאים ל DTD. שאילתה על מסמך XML. המטרה: בניה של DTD המתאים ביותר לחלקי ה XML בתוצאת השאילתה. Type Inference
loto - Labeled Ordered Tree Object Type Inference
- הגדרהlotot over Σ • עץ סדור. • כל קודקוד מתאים לאלמנט ב XML. • תווית הקודקוד היא סוג האלמנט. (type name) • Σ היא קבוצת ה type names ב XML. • נסמן ב n)) את התווית של n. עבור n איבר ב t. • נסמן ב tree(n) את תת העץ של t ששורשו הוא n. Type Inference
root: dealer; dealer: UsedCars, NewCars; UsedCars: ad*; NewCars: ad*; ad: (model, year) + model; ltd - Loto Type Definition Type Inference
- הגדרהltd d over Σ • מכיל הגדרה של סוג השורש (type name מ Σ). • מתאים לכל a ב Σ שפה מעל Σ. נסמן ב d(a). • אם n1,n2,..,nk הם הבנים של n, אז המילה (nk)(n1).. שייכת ל d((n)) • נסמן ב d(root) את הסוג של השורש. • loto tמספק את d אם: - השורש של t הוא מסוג d(root). - לכלn ב t עם הבנים n1,n2,..,nk המילה (nk)(n1) (n2).. שייכת ל d((n)) • נסמן בT(d) את קבוצת ה lotos שמספקים את d. Type Inference
הגדרות נוספות... • ltd נקרא רגולרי אם לכל a ב Σ, d(a) שפה רגולרית. • נאמר כי d,d’שקולים אם T(d)=T(d’). • נאמר כי dיותר הדוק מ d’, אם T(d) T(d’). • נאמר כי dהדוק לקבוצה T של lotos, אם T=T(d). • נאמר כי dקרובל T אם T(d)T. Type Inference
סגירות תחת החלפת תת עץ Lad = {(model,year),(model)} הגדרות נוספות... • לכל a ב Σ, נסמן ב La את השפה שמכילה את כל המילים (nk)(n1).. עבור כל n1,..,nkשהם בנים של איבר ב t בעל תווית a. קבוצה T של lotosסגורה תחת החלפת תת עץ כאשר: אם t,t’ ב T. n איבר ב t. n’ איבר ב t’. ומתקיים (n’)=(n). אז t’’ המתקבל מ t על ידי החלפת tree(n) ב tree(n’) שייך ל T. לכל a ב Σ, נסמן ב La את השפה שמכילה את כל המילים (nk)(n1).. עבור כל n1,..,nkשהם בנים של איבר ב t בעל תוית Type Inference
מספר טענות • לקבוצה T של lotos יש ltdהדוק אם"ם מתקיימים שני התנאים: La שפה רגולרית. T סגורה תחת החלפת תת עץ. אם ל T אין ltdהדוק נתעניין בקירובים. אם יש כאלה נחפש את ההדוק ביותר מביניהם. • לקבוצה T מעל Σ יש ltdהדוק ביותר אם"ם לכל a ב Σ, La היא שפה רגולרית. Type Inference
root: section; section: intro, section*, conc; נדון בתוצאת השאילתה המבקשת את כל הintro וה conc. Ltd קרוב: root: view; view: (intro + conc)*; Ltd קרוב יותר: root: view; view: ( + intro),(intro + conc)*, conc; - המשך - • אם אין ltdהדוק ביותר, יש אינסוף קירובים. Type Inference
root: UsedCars; UsedCars: ad*; ad: model, year; root: NewCars; NewCars: ad*; ad: model; מוגבלDTD ראינו מסמך בודד שלא ניתן למצוא לו ltd הדוק. בעייתיות בשרשור מסמכים. ראינו מסמך בודד שלא ניתן למצוא לו ltd הדוק. • ראינו מסמך בודד שלא ניתן למצוא לו ltd הדוק. • בעייתיות בשרשור מסמכים. • אי יכולת לבטא מספר חזרות של סוג מסוים. root: dealers; dealers: dealer*; dealer: UsedCars, NewCars; UsedCars: ad*; NewCars: ad*; ad: (model,year) + model; נגדיר מנגנון specialization. Type Inference
Specializaion • Specialized ltd d = < Σ , Σ’ , d , > • d הוא ltd מעל Σ. • d הוא specialized ltd מעל Σ’. • ממפה מ Σ’ ל Σ. לכל תווית ב Σ, יש קבוצה של תוויות ב Σ’ root: dealer; dealer: UsedCars, NewCars; UsedCars: ad_u*; NewCars: ad_n*; ad_u: model,year; ad_n: model; root: dealer; dealer: (UsedCars, NewCars; UsedCars: ad*; NewCars: ad*; ad: (model, year) + model; הערה: ltds כאלו אפשר להמיר לאוטומטים מעל עצים. ולכן בדיקת הכלה למשל תבוצע בזמן אקספוננציאלי ובדיקת ריקנות בזמן פולינומיאלי. Type Inference
Select X where body לכל קודקוד פנימי, תווית מהצורה: p1.X1… pkXkpk+1 לכל צלע היוצאת מקודקוד, תווית מהצורה: <Xi,p> Xiמשתנה שמופיע בקודקוד. pביטוי רגולרי. Select loto-ql root <p’> pl.X’.pr פונקצית הקשירה : יש במסמך איברים n0…nm כך ש (X’) = n0 (n1)… (nm)p ול nm יש בנים y11..y1i1…y(k+1)1..y(k+1)i(k+1) כך שלכל 0 j k מתקיים (yj1)… (yjik)pj(Xj) = yjij <X’,p> p1.X1… pkXkpk+1 Type Inference
דוגמא • root: journal; • journal: (mathArticle, compAtricle)*; • mathArticle: abstract, theorem*, summary, ref; • compArticle: abstract, section+, summary, ref; • theorem: (proof + theorem)*; • Section: intro, section*, conc; Type Inference
Select loto-ql • שאילתה לקבלת כל רכיבי ה intro וה conc המופיעים בעומק כלשהו תחת CompArticle. journal <CompArticle, section+> Σ*(intro+conc).X. Σ* root: view; view: (intro, A, conc)*; A: (intro, A, conc)*; Type Inference
Select loto-ql • שאילתה לקבלת כל רכיבי ה mathArticle שיש תחתם רכיב theorem שתחתיו יש proof. journal <> Σ*mathArticle.X. Σ* <X, theorem> Σ* proof Σ* Type Inference
רגע לפני האלגוריתם • ראינו כי בניה של ltd לתוצאה של שאילתה זקוקה לעיתים למנגנון ה specialization. • וכן כי יש שאילתות שהתוצאה שלהן תתואר ע"י ltd חסר הקשר. • בהינתן ltd d ושאילתה qloto-ql השאלה האם יש ltd רגולרי הדוק או הדוק ביותר עבור q(T(d)), אינה ניתנת להכרעה. • זאת משום שכפי שראינו הרגולריות היא תנאי הכרחי לקיום ltd הדוק. והבעיה, האם דקדוק חסר הקשר מגדיר שפה רגולרית אינה כריעה. Type Inference
ניווט לעומק • נניח ltd d וביטוי רגולרי p מעל Σ. a תווית ב Σ. נדון בשאלה אם ב lotos שמספקים את d, יש מסלול שיוצא מאיבר בעל תווית a ונמצא ב p. נאמר כי: • pמסופק ב a. אם יש מסלול כזה בחלק מ T(d). • pלא מסופק ב a. אם אין אף מסלול כזה. • pואלידי ב a. אם יש מסלול כזה לכל איבר בעל תווית a בכל loto ב T(d). Type Inference
רדוקציה לאוטומטים מעל עצים • נסמן ב Rd את קבוצת ה lotos ששורשם a ומספקים את d. • נסמן ב Rp את קבוצת ה lotos ששורשם ב a וממנו יוצא מסלול ב p. • מהם ניתן לבנות בזמן פולינומיאלי אוטומטי עצים top-down לא דטרמיניסטים. R’d, R’p • pמסופק ב a, אם R’d ∩R’pלא ריק. בדיקה פולינומיאלית. • pואלידי ב a, אם R’d R’p. בדיקה אקספוננציאלית. Type Inference
Type Tightening • נגדיר לקבוצה T(d) של lotos, תת-קבוצה מקסימלית של lotos שבה p ואלידי ב a. • זוהי תת-קבוצה ממש, אם ב (d)T, p מסופק אך לא ואלידי. • נבנה specialized ltd עבור קבוצה זו. ונסמן: tighten(a,d,p) הבניה אפשרית: • הפעלת specialization על Rd ∩Rp Type Inference
אלגוריתם – 1 • יהיו ltd d והשאילתה q מעל Σ. נבנה את dq • השורש – view. • לכל a ב Σ, dq(a) = d(a) • יהא p אוטומט מעל Σ שמקבל את p. עם מצב ההתחלה s ופונקצית המעברים . • תהא ph השפה המתקבלת מ p אם מתחילים ממצב h. root <p> pl.X.pr Type Inference
אלגוריתם – 1 • נגדיר את dq(view) כדקדוק חסר הקשר: • הטרמינלים הם Σ. • המשתנים הם זוגות <h,a> כאשר h מצב ב p המשתנה ההתחלתי הוא <s,view> • נגדיר את הייצור ב <h,a> נבחין בין המקרה בו h אינו מצב מקבל באוטומט לבין המקרה שהוא כן. Type Inference
אלגוריתם – 1 • אם h אינו מצב מקבל, הניווט לעומק. • לכל סוג b, ב Σ. (h,b)h’ = ph’ ואלידי ב b{<h’,b>} ph’מסופק אך לא ואלידי ב b{,<h’,b>}<h,a> ph’לא מסופק ב b{} Type Inference
אלגוריתם – 1 • אם h מצב מקבל, הניווט לרוחב (בבנים של a) • <h,a> th(d(a)) • th עושה התאמה של כל מילה w ב d(a) לתווית pl.X.pr root <p> ההתאמה: מעבר על אותיות w. לכל אות z, בדיקה אם תחילית המילה עד לאותה אות נמצאת ב pl ושאר המילה ב pr. אם יש התאמה פולטת לרצף z<h,z> אם אין התאמה פולטת לרצף <h,z> pl.X.pr Type Inference
דוגמא - שאילתה 1 • שאילתה לקבלת כל רכיבי ה intro וה conc המופיעים בעומק כלשהו תחת CompArticle. journal <CompArticle, section+> Σ*(intro+conc).X. Σ* Type Inference
אלגוריתם – דוגמא 1 • אוטומט שמקבל את (compArticle,section+): (s,compArticle) = h1Ph1 = section+ Ph1 ואלידי ב compArticle ולכן <s,compArticle> {<h1,compArticle>} (h1,section) = h2Ph2 = section* Ph2 ואלידי ב section ולכן <h1,compArticle> {<h2,section>} Type Inference
אלגוריתם –דוגמא 1 h2 הוא מצב מקבל. צריך להפעיל את f: התאמה בין d(section) ובין התווית Σ*(intro+conc).X. Σ* d(section) = intro, section*, conc w = intro, conc ==> intro, <h2,intro>, conc, <h2,conc> w = intro, section, conc ==> intro, <h2,intro>, <h2, section>, conc, <h2,conc> w ==> intro, <h2,intro>, <h2, section>*, conc, <h2,conc> Type Inference
דוגמא 1 - תוצאה • <s,compArticle> {<h1,compArticle>} • <h1,compArticle> {<h2,section>} • <h2,section> • intro, <h2,intro>, <h2, section>*, conc, <h2,conc> • <h2,intro> = <h2,conc> = • ביטול מצבים מיותרים: • root: view; • view: (intro, A*, conc)*; • A: (intro, A*, conc)*; Type Inference
אלגוריתם – 2 • צריך להבטיח את קיום המסלול p’ מ X. • השפה d(view) תשתמש ב d’ = specialized ltds tighten(a,d,p’) root <p> pl.X.pr <X,p’> * Type Inference
אלגוריתם – 2 לכל a ב Σ, אם מתקיים התנאי נמשיך עם a’, האיבר המתאים ב d’. כלומר: p’ ואלידי ב a{<h’,a’>} p’מסופק אך לא ואלידי ב a{,<h’,a’>}<h,a> p’לא מסופק ב a{} Type Inference
דוגמא - שאילתה 2 • שאילתה לקבלת כל רכיבי ה mathArticle שיש תחתם רכיב theorem שתחתיו יש proof. journal <> Σ*mathArticle.X. Σ* <X, theorem> Σ* proof Σ* Type Inference
אלגוריתם – דוגמא 2 יש לבצע specialization על מנת להבדיל בין mathArticles שיש תחתם theroem עם proof ובין mathArticles אחרים. Specialized ltd: root: journal; Journal: (mathArticle + compArticle + p_mathArticle)*; p_mathArticle: abstract, theorem*, p_theorem, theorem*, summary, ref; p_theorem: (proof + theorem)*, proof, (proof + theorem)*; ואז f תתאים בין d(journal) ובין Σ*p_mathArticle.X. Σ* Type Inference
דוגמא 2 - תוצאה root: view; view: p_mathArticle*; p_mathArticle: abstract, theorem*, p_theorem, theorem*, summary, ref; p_theorem: (proof + theorem)*, proof, (proof + theorem)*; theorem: (proof + theorem)*; Type Inference
תוצאה • בהנתן ltd d רגולרי ושאילתת loto-ql q. ניתן לבנות specialized ltdחסר הקשר הדוק, עבור q(T(d)). סיבוכיות הבניה: אקספוננציאלית. הגודל: פולינומיאלי ב d ואקספוננציאלי ב q. • אם ב ltd אין מעגלים או שבשאילתה אין מעגלים לעומק, ניתן לבנות specialized ltdרגולרי הדוק, עבור q(T(d)). Type Inference
שאילתות מורכבות הרחבה: ניתן להכליל להרבה משתנים. שאילתות הכוללות attributes וטקסט. שאילתה עם בניה מורכבת של התוצאה (למשל group by) ביצוע: צריך לקחת בחשבון משתנים ב pl וב pr, כלומר אחים. צריך לבצע tighten לכל משתנה. בניווט לעומק צריך לקשר בין אוטומטים. Type Inference
שימושים • בהינתן ltd d,d’ רגולריים ושאילתה loto-ql q, ניתן לקבוע אם q(T(d))T(d’). ההוכחה תשתמש ב: • בדיקת הכלה בין דקדוק חסר הקשר לשפה רגולרית • בדיקת הכלה בין שפות עצים רגולריים • סיבוכיות: אקספוננציאלית Type Inference
שימושים • בדיקת התאמה: ניתן לבדוק אם מבניות תוצאה של שאילתה מתאימה להגדרה קודמת. • אופטימיזציות - באחסון התוצאה - בניית שאילות וביצוען • הצגת התוצאה (XSL) Type Inference