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

Slides:



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

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
הדרכה בשימוש בקטלוג הספרייה מפגש מס ' 2 תשס " ח. מטרת ההדרכה  איתור חומר מתוך הסילבוס  איתור חומר בנושא מבוקש.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
מתמטיקה בדידה תרגול 3.
מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
מבוא למדעי המחשב תרגול מספר 3.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
מערכות מסדי נתונים 7. מבוא למסמכי XML ו-DTD שקפים:אלדר פישר.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
חלון הפקודות מיועד לבצע פעולה אחת בכל פעם. כיצד אפשר לבצע רשימת פקודות או אפליקציות מורכבות ?
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.
מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר.
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
Spring חלק 3: מבוא ל- XPath XML Path Language.
מערכות מסדי נתונים 8. שפת החיפוש XPath שקפים:אלדר פישר.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts SQL n מבנה שאילתה n פונקציות צבירה.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
A. Frank File Organization Introduction to Pile File.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
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 מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
1 XML eXtensible Markup Language. 2 What is XML?  XML היא שפה תיאורית  XML נועדה לספק דרך סטנדרטית לתיאור משמעות מידע ומבנה מידע כאשר הוא מועבר בין.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
תכנות מכוון עצמים ושפת ++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.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
Tirgul 12 Trees 1.
Computer Architecture and Assembly Language
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
חלק 3: מבוא ל- XPath XML Path Language Spring 2005.
ממשקים - interfaces איך לאפשר "הורשה מרובה".
Marina Kogan Sadetsky –
Extensible Markup Language
עקרונות בסיסיים בתכנות Visual Basic
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Computer Architecture and Assembly Language
Presentation transcript:

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

2 מקורות עבור XQuery ספר : Howard Katt (editor), XQuery from the Experts, Addison-Wesley בעיקר הפרק הראשון: Jonathan Robie, XQuery : A Guided Tour אשר ניתן למצוא אותו גם ברשת: שקפים עם מידע נוסף: Oded Shmueli, Introduction to XQuery מימוש לדוגמא של XQuery הכולל ממשק דרך הרשת:

3 XPath ו-XQuery השפה XQuery בנויה למעשה כהרחבה של XPath, כך שכל ביטוי חוקי ב-XPath הוא בפרט ביטוי חוקי ב-XQuery. ליתר דיוק, XQuery 1.0 כוללת בתוכה את XPath 2.0, שהיא גירסא מתקדמת יותר של XPath. חלק מהמבנים שנלמד שייכים למעשה ל-XPath 2.0 ולא רק ל-XQuery.

4 התייחסות למסמכים חיצוניים ב-XQuery יש יכולת לעבוד עם מספר מסמכים במקביל. איך נקבע לאיזה מהמסמכים מתייחס ביטוי חיפוש נתון ? הפונקציה doc(name) מחזירה את צומת השורש של המסמך המתואר ע"י הביטוי name (כאשר ביטוי זה מפורש כמחרוזת המכילה URI). דוגמא: הביטוי doc(“xmpbib.xml”)/bib/book יבצע חיפוש של ספרים במסמך ביבליאוגרפיה ששמו הוא “xmpbib.xml”. הסכימה של קובץ זה תתואר בהמשך ותשמש אותנו בדוגמאות (הקובץ הנ"ל משמש חלק מדוגמת-שימוש של XQuery המתוארת בפירוט באתר הרשמי של w3.org). ניתן להתייחס גם לסדרה של צמתי שורש של מספר מסמכים, באמצעות הפונקציה collection(names).

5 המסמך לדוגמא xmpbib.xml במהלך ההרצאות על XQuery נתייחס למסמך בשם xmpbib.xml המכיל פרטים על מספר ספרים. אנו נניח שמסמך זה מציית ל-DTD הבא: צמתים עם התוויות title, last, first, affiliation, publisher, price מוגדרים כמכילי #PCDATA בלבד וללא תכונות. נניח גם שצומת המסמך bib הוא בן יחיד של המסמך xmpbib.xml.

6 אופרטורים ופונקציות נוספות ב-XPath בגרסת ה-XPath המשמשת ב-XQuery מתווספים אופרטורים נוספים. כמה מהחשובים בהם: טיפול בקבוצות של צמתים: לאופרטור האיחוד "ו", שכאן ניתן גם לכתוב אותו כ-“union”, מתווספים גם האופרטורים של חיתוך, “intersect”, וחיסור, “except”. השוואות צמתים: האופרטור “is” ייתן ערך “true()” אם ורק אם הביטויים משני צדדיו יקבלו צומת זהה (ולא סידרה) בחישוב ערכם (בניגוד ל-"=" שיתן “true()” גם עבור שני צמתים שונים בעלי אותו תוכן). האופרטורים " >" יתנו ערך אמת עבור הצמתים המושווים בהתאם לסדר המסמך. על האופרטורים האחרים, ועל הגידול המשמעותי בפונקציות, הנכם מוזמנים לקרוא באתר של w3.org.

7 סדרות ב-XQuery וב-XPath 2.0 במקום קבוצות הצמתים של XPath 1.0, יהיו לנו עתה סדרות של עצמים. הסדרות יוכלו להכיל גם צמתים וגם ערכים, אולם לא סדרות אחרות. תוצאה של ביטוי שאמור להכיל סדרה כאיבר בסדרה אחרת "תשוטח" ע"פ הדוגמא הבאה: (1, (2, 3), 4)  (1, 2, 3, 4) סדרות יכולות להכיל חזרות ושומרים לגביהן סדר. עם זאת, אופרטורים המותאמים לקבוצות צמתים, כגון union, יתעלמו מסדר זה ויחזרו לסדר המסמך, וכן יוציאו הודעת שגיאה אם הסדרות המעורבות מכילות ערכים שאינם צמתים. ניתן לבנות סדרות ב-XQuery באמצעות ביטויים מהצורה הבאה: (arg 1, arg 2, … )

8 עוד על סדר המסמך סדר המסמך חשוב גם ב-XQuery, שכן אופרטורים המטפלים בקבוצות של צמתים (כגון intersect, union, או חיפוש בתתי העצים) יתחשבו בסדר המסמך ולא בסדר הסדרה המקורי. סדר המסמך ברור כאשר המדובר בצמתים מתוך אותו עץ. עם זאת, ב-XQuery יתכן שיהיו מספר עצי התייחסות במקביל. במקרה זה, הסדר בין שני צמתים מעצים שונים יכול להיות שרירותי, אולם מובטח שהוא יהיה יציב  הוא לא ישתנה במהלך ביצוע השאילתה.

9 בניה של צמתים חדשים  Constructors בשפת ה-XQuery יש אפשרות "לייצר" עצי XML אשר אינם נמצאים כחלק מקבצי הקלט. השיטה הפשוטה ביותר לעשות זאת היא באמצעות כתיבת מקטע XML מוקף בתגים (כגון “ some text ”). מקטע כזה הוא ביטוי XQuery חוקי שתוצאתו היא צומת אלמנט חדש עם התווית, התכונות, והתוכן המצויינים. בדרך כלל נרצה אבל לחשב את תוכן הצומת באמצעות ביטוי XPath או XQuery. במקרה זה מקיפים את ביטוי החישוב בסוגריים מסולסלים “{…}”. דוגמאות: {doc(“xmpbib.xml”)/bib/book/title}

10 בניית צמתים  המשך ניתן גם לבנות צומת אלמנט עם תווית tag שתוכנו הוא הביטוי המחושב expr באמצעות הביטוי הבא: element tag {expr}. כאן גם אפשר להחליף את השם tag בביטוי מוקף ב-{...}, ע"פ הדוגמא element {arg} {expr}. במקרה זה תווית הצומת תהיה ערך המחרוזת של הביטוי arg. לתוספת תכונות עבור צמתים אלו, יש לבנות אותן כצמתים באמצעות הביטוי attribute label {expr} או attribute {arg} {expr}, ולשרשר את אלו לביטוי התוכן של צומת האלמנט. דוגמא: הביטוי element title {attribute language {“en”}, “Gone with the wind”} יחזיר את מקטע ה-XML Gone with the wind

11 ביטויים מותנים בניה של צמתים ב-XQuery יכולה להסתייע בביטויי XPath מותנים. צורתם הכללית: if (test) then expr 1 else expr 2 כאשר: test הוא ביטוי שערכו מתפרש כערך בוליאני. expr 1 הוא ביטוי לחישוב התוצאה אם test מתפרש כ-true(). expr 2 הוא ביטוי לחישוב התוצאה אם test מתפרש כ-false(). מכיוון שביטוי XQuery תמיד חייב לקבל ערך כל שהוא, תמיד חובה לכתוב גם את חלק ה-else. אם רוצים שבמקרים מסוימים תוחזר הסדרה הריקה, ניתן להשתמש עבור זו בסימון "( )".

12 דוגמא לביטוי מותנה נניח ש-$b הוא משתנה שערכו הוא אחד מצמתי ה-“book” של הקובץ xmpbib.xml (בהמשך נראה אפשרות לקביעת ערכים עבור משתנים). הביטוי הבא "יתרגם" את הצומת לצומת עם תווית “monograph” אם זהו ספר עם מחברים, או צומת עם תווית “handbook” אחרת (כזכור, סכימת הקובץ קובעת כי לספר יהיו או מחברים או עורכים): if ($b/author) then {$b/node()} else {$b/node()}

13 בניית מסמכים שלמים אחד השימושים של XQuery הוא בבניית מסמך XML תקני מלא כתשובה לשאילתה (הדבר שימושי למשל בתחום החדש יחסית של מסדי נתונים מבוססי XML). לשם כך יש להשתמש בביטוי הבא לבניית צומת-שורש של מסמך XML על תוכנו: document {expr} לדוגמא, אם נרצה להכניס את רשימת הספרים המקוצרת מאחת הדוגמאות הקודמות למסמך XML תקני שלם, נשתמש בביטוי הבא: document { {doc(“xmpbib.xml”)/bib/book/title} }

14 מבנה FLWOR FLWOR הוא מבנה לשאילתות XQuery בעל כושר הבעה חזק במיוחד, אשר מזכיר במידה מסוימת את מבנה השאילתות של SQL. משמעות ראשי התיבות היא For… Let… Where… Order by… Return הערה: חלק מצומצם ממבנה זה (for…return בלבד) מצוי כבר ב-XPath 2.0. כאן נראה סקירה של המבנה כפי שהוא מופיע ב-XQuery.

15 ביטוי for  return בסיסי בצורה הפשוטה ביותר, ביטוי זה משמש לביצוע פעולה איבר-איבר על סדרה. הצורה הכללית: for $var in domain return result כאשר : $var  המשתנה שיקבל ערכים מהסדרה. domain  ביטוי המחזיר סדרה. result  תוצאה, בד"כ תלויה ב-$var. תוצאת הביטוי תחושב כך: כל איבר (ערך או צומת) בסדרה המתוארת ע"י הביטוי domain מוצב במשתנה $var, ומחשבים עבורו את result (התוצאה יכולה להיות איבר או סדרה). כל התוצאות הנ"ל משורשרות לקבלת תוצאת הביטוי הסופית. סדר השרשור יהיה לפי סדר האיברים בסדרה domain.

16 דוגמאות הביטוי for $i in (1, 2, 3) return {$i} יחזיר את התוצאה: (במושגים של סדרה, התוצאה תהיה שלושה צמתי אלמנט עם תווית i ותוכן מתאים). בהתייחסות לדוגמת הקובץ xmpbib.xml, הביטוי for $i in doc(“xmpbib.xml”)/bib/book/author return { $i/last/text() } יחזיר רשימה של שמות המשפחה של המחברים של הספרים בקובץ. האם יתכנו כפילויות בתוצאת הביטוי ?

17 for רב-מימדי ניתן לקשור מספר משתנים לסדרות בביטוי for אחד. דוגמא: for $i in (1, 2), $j in (1, 2, 3) return {($i,$j)} סדר החישוב יהיה כמו זה המוכר מ"לולאות מקוננות" בשפות תכנות. בדוגמא למעלה התוצאה תהיה:

18 שימוש ב-let בביטוי FLWOR חלק הביטוי let $var := expr מציב במשתנה $var את הערך המתואר ע"י expr. במקרה (הנפוץ) ש-expr הוא ביטוי המתאר סדרה, ערכו של $var יהיה שווה לסדרה כולה (ולא לאיבר מתוכה). ניתן באותו ביטוי FLWOR לשלב מספר ביטויי for וביטויי let, ובכל סדר.

19 דוגמא לשימוש ב-for ו-let הביטוי for $i in (1, 2, 3) let $j := ($i, $i  $i, $i  $i  $i) return {$j} יחזיר את התוצאה

20 קינון ביטויים ניתן להשתמש בביטוי FLWOR בכל מקום שבו צריכים סדרה, ובפרט ניתן להשתמש בו כחלק מביטוי FLWOR אחר. דוגמא: הביטוי הבא יבנה טבלא של לוח כפל: for $r in (1 to 5) let $t := ( for $c in (1 to 5) return {$r  $c} ) return {$t}

21 שימוש ב-where בביטוי FLWOR שימוש בחלק “where cond” בתוך ביטוי FLWOR יגרום לכך שהחישוב המתואר בחלק ה-return יבוצע (ותוצאתו תשורשר לתוצאה הסופית) אם ורק אם הביטוי cond מקבל ערך true() (לאחר תרגום תוצאתו לערך בוליאני), עבור ערכי המשתנים הניתנים באיטרציה הנוכחית של חלקי ה-for וה-let. דוגמא: הביטוי for $i in (1 to 4), $j in (1 to 4) where $i mod $j = 0 return {($i, $j)} יחזיר את התוצאה:

22 שימוש ב -where  דוגמא לצירוף ניתן להשתמש בשילוב של for ו-where לביצוע פעולות צירוף (join). לדוגמא, נניח שבידנו קובץ נוסף xmpreviews.xml המכיל ביקורות, ושנרצה עבור כל זוג של ספר וביקורת עליו לייצר רשומה המכילה את כל הפרטים. נוכל לעשות זאת באמצעות הביטוי הבא: for $b in doc(“xmpbib.xml”)/bib/book, $r in doc(“xmpreviews.xml”)/reviews/entry where$b/title=$r/title return {$b/node(), $r/review} שימו לב שספרים ללא ביקורת עבורם לא יכללו בפלט.

23 שימוש ב-order by בביטוי FLWOR שימוש ב-order by מאפשר לציין את הסדר שבו ביטוי ה-return יחושב עבור ערכי המשתנים שעברו את הקריטריון של where (או כל הערכים המסופקים ע"י ה-for וה-let, במידה ואין חלק where). שימוש ב-order by הוא השיטה העיקרית לקבלת תוצאות בסדר שונה מסדר המסמך. עם זאת, יש להיזהר לא "לאבד" את הסדר עקב שימוש באופרטורים נוספים. למשל, אם רוצים "לאחד" תוצאות של שני ביטויי FLWOR אז יש לשרשר אותן עם אופרטור "," ולא להשתמש באופרטור "ו" אשר יחזיר אותן לסדר המסמך.

24 דוגמאות לשימוש ב-order by כתיבת תוכן רשימת הספרים לפי שם המחבר הראשון (שם משפחה קודם): for $b in doc(“xmpbib.xml”)/bib/book order by $b/author[1]/last, $b/author[1]/first return $b הספרים ללא מחברים יופיעו או כולם לפני שאר הספרים, או כולם לאחריהם. שאלת המיקום של "ערכים ריקים" היא תלוית מימוש, אולם יש דרך לציינה במפורש בביטוי. דוגמא למיון בסדר יורד: for $b in doc(“xmpbib.xml”)/bib/book order by descending return $b

25 סוף דבר בהרצאה זו נלמדו רק המבנים הבסיסיים בשפה XQuery. נושאים נוספים בבניית שאילתות של XQuery, וכן כל הנושא של היכולות של XQuery בבדיקת תחומים (בשילוב עם שפת הגדרת הסכימות XML-Schema), יכולים היו לתפוס חלק נכבד בקורס יעודי על XML. נזכיר רק כי בתוספת המבנים הנוספים שלא נלמדו כאן (כגון הגדרת שגרות), שפה זו היא שלמה במובן של טורינג. מספר יישומים מתקדמים יותר של XQuery (וכן מספר מלכודות שיש להזהר מהן) ינתנו בתרגיל.