1 236363 מערכות מסדי נתונים 8. שפת החיפוש XPath שקפים:אלדר פישר.

Slides:



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

1 Colorful XML: One Hierarchy Isn't Enough Authors : H. V. Jagadish, Laks V. S. Lakshmanan, Monica Scannapieco, Divesh Srivastava, Nuwee Wiwatwattana Presented.
מבוא למדעי המחשב לתעשייה וניהול
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
עיבוד תמונות ואותות בעזרת מחשב
כתיבת עבודת גמר מבנה העבודה  מבחינה צורנית - יש להקפיד על אחידות בכתיבה  כותרות אחידות  רווחים זהים, פונט בגודל אחיד (12, רווח וחצי)  הצגת.
מתמטיקה בדידה תרגול 3.
מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
Inverse kinematics (Craig ch.4) ב"ה. Pieper’s solution נתבונן ברובוט עם 6 מפרקי סיבוב כאשר שלושת הצירים של המפרקים האחרונים נחתכים. נקודת החיתוך נתונה.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
מערכות מסדי נתונים 7. מבוא למסמכי XML ו-DTD שקפים:אלדר פישר.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
מערכות מסדי נתונים 9. מבוא קל ל-XQuery שקפים:אלדר פישר.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
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. התחשיב הרלציוני שקפים:אלדר פישר.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
Spring חלק 3: מבוא ל- XPath XML Path Language.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
©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 דוא " ל :
תחשיב היחסים (הפרדיקטים)
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 - גמישות בבינאריות גמישות בעומק - עץ חיפוש בינארי: ממוצע O(log n) גרוע ביותר (O(n - היינו רוצים לשמור את העץ מאוזן תמיד Data Structures, CS, TAU
מתמטיקה בדידה תרגול 2.
7/13/20151 חלק 1: XML Extensible Markup Language.
A. Frank File Organization Hardware Size Parameters.
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 תרגול
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
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:
מחרוזות – הטיפוס String
Object Oriented Programming
Tirgul 12 Trees 1.
Object Oriented Programming
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
חלק 3: מבוא ל- XPath XML Path Language Spring 2005.
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
Extensible Markup Language
תזכורת על מה דיברנו שיעור שעבר? בנינו אתר אינטרנט עם כותרות
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Database Management Systems
Presentation transcript:

מערכות מסדי נתונים 8. שפת החיפוש XPath שקפים:אלדר פישר

2 מהי XPath XPath היא שפת שאילתות המאפשרות לבחור קבוצה של צמתים מתוך מסמך XML. זוהי שפה פשוטה יחסית (אולם רחוקה מטריוויאלית) לניווט במבנה העץ של המסמך ובחירה מתוכו. בד"כ שפה זו משמשת כרכיב בשפות מורכבות יותר, כגון שפת השאילתות XQuery ושפת תרגום המסמכים XSLT, כשם ששפת הביטויים הרגולרים משמשת כרכיב ב-DTD.

3 מקטע DTD לדוגמא עבור הדוגמאות ב-XPath, נניח שהמסמך שלנו מציית ל-DTD המכיל (בין השאר) את ההכרזות הבאות: <!ATTLIST imagefile CDATA #REQUIRED heightCDATA #IMPLIED widthCDATA #IMPLIED> כאשר לא מצויין אחרת, אנו נניח שהבן היחידי של שורש המסמך הוא צומת אלמנט עם תווית book.

4 Xpath  תחביר בסיסי התחביר הבסיסי של ביטויי XPath מזכיר את זה של בחירת קבצים במערכות הפעלה. דוגמא: עבור מסמך המכיל תיאור של ספר יחיד (תחום בתגים … ) הביטוי הבא יתאר את כל תתי הפרקים בספר: /book/chapter/section. באופן פורמלי: סימן " / " פירושו שתת-הביטוי מימין לסימן מתאר חיפוש, שיש לבצעו בתתי העץ הנקבעים ע"י הצמתים המתוארים בתת-הביטוי שמשמאל לסימן ה-" / ". סימן ה-" / " השמאלי ביותר פירושו שהחיפוש הכולל מתחיל מצומת השורש.

5 חיפוש צאצאים (סגור Kleene מוגבל) שני סימני " / " רצופים פירושם שאת הצמתים המתוארים בתת- הביטוי מימין לסימן יש לחפש החל מהצאצאים של הצמתים המתוארים משמאל לסימן, ולא רק מהבנים. דוגמאות: –חיפוש של כל צמתי התמונה במסמך : //image –בהנחה שהמסמך כולו מכיל תיאור של ספר יחיד, איך נחפש כותרים של פרקים ותתי-פרקים בלבד ? /book/chapter//title –עבור מסמכים שיכולים להכיל מספר ספרים במספר רמות, איך נחפש את כל התמונות המופיעות בהם ? //book//image

6 בחירת צמתים שאינם אלמנטים התחביר הבסיסי מתאים לבחירת צמתי אלמנט בלבד. אם נרצה להתייחס לצמתי תכונות, נשתמש בסימן לדוגמא, הביטוי ייתן את שמות כל הקבצים המשמשים עבור תמונות בספר. על מנת להתייחס לצמתי טקסט, נשתמש במילה השמורה “text()”. זכרו שלצמתים אלו אין תוויות. דוגמא: לבחירת הטקסט של כותרת הספר (ללא ה-“ … ” מסביב לטקסט) ניתן להשתמש בביטוי /book/title/text().

7 בחירת צומת כל שהוא (wildcard) המילה השמורה "node()" מתאימה לכל צומת של המסמך הממוקמת במקום המתאים במסלול החיפוש, פרט לתכונות. הסימן "  " פירושו כל צומת אלמנט הממוקם במסלול החיפוש (ליתר דיוק, הפירוש הוא "כל הצמתים מטיפוס ציר החיפוש הנוכחי", אולם ברב המקרים טיפוס זה הוא של צמתי האלמנט). דוגמא: /book//paragraph/node()  ייתן את התוכן של כל הפסקאות בספר (קטעי טקסט, צמתי הדגשה ותמונות). /book//paragraph/   ייתן את ההדגשות והתמונות בכל הפסקאות בספר. הצירוף  " פירושו כל צמתי התכונות במסלול החיפוש. לדוגמא:   ייתן את כל התכונות של כל התמונות בספר.

8 בחירה של צומת לפי מספר הביטוי /book/chapter[3] יבחר את צומת הפרק השלישי בספר. באופן כללי: אם נצמיד לתווית של צומת בחיפוש מספר k (או ביטוי אריתמטי שתוצאתו היא מספר k), אז התשובה תהיה הצומת ה-k בעל תווית זו. הסדר נקבע לפי סדר הצמתים במסמך. הבחירה נעשית מחדש עבור כל אפשרות של מסלול חיפוש חלקי עד הצומת הלפני אחרונה. לדוגמא, אילו באותו מסמך היו מאוחסנים מספר ספרים, אז /book/chapter[3] היה מחזיר את הפרק השלישי מכל ספר במסמך שיש לו פרק כזה.

9 ביטויים נוספים ב-XPath ב-XPath ניתן גם לכתוב ביטויים המחזירים ערך מספרי, או ערך בוליאני, או מחרוזת, ולא רק קבוצה של צמתים. ביטויים כאלה יכולים להיות שימושיים בשפה המארחת, ולעיתים משתמשים בהם כתתי-ביטוי של ביטויי חיפוש, לצורך בחירת צומת לפי מספר, או (כפי שנראה בהמשך) לפי תנאי בוליאני.

10 אופרטורים ב-XPath ניתן להשתמש בביטויי XPath באופרטורים הבאים: אופרטורים אריתמטים: +, -, , div (לחילוק, במקום הסימן " / "), mod (שארית בחלוקה של שלמים). השוואות:, =, =, =!. מחברים בוליאנים: and, or. איחוד בין שתי קבוצות צמתים מתבצע ע"י האופרטור " | " ניתן להשתמש בביטויי חיפוש המתחילים ב-" / " או " // ", ובביטויי בחירה בתוך " [... ] " אשר נראה בהמשך, כאופרטורים על קבוצת צמתים המתוארת בביטוי משמאלם. XPath מגדירה גם מספר פונקציות. חלק מהן נראה בהמשך.

11 בחירה לפי ביטוי בוליאני ניתן להשתמש בביטוי בוליאני בתוך " [... ] " על מנת לבחור מקבוצת הצמתים רק את אלו המקיימים את התנאי. הביטוי /book/chapter[title=“Introduction”] יבחר רק את הפרקים שבהם יש צומת “title” המכיל את הטקסט “Introduction”. מדוע השתמשנו ב-“title” ולא ב-“title/text()” ? ב-XPath צמתים מתורגמים למחרוזות לפי הצורך, ובתרגום זה סימני התיוג מוסרים.

12 מסלולי חיפוש יחסיים ביטויי חיפוש ב-XPath שאינם מתחילים ב-" / " מתארים חיפוש שאינו מתחיל בשורש המסמך. מהיכן החיפוש יתחיל ? הדבר תלוי בהקשר (context) של הביטוי. בעת ביצוע ביטוי XPath, תוכנת העיבוד מקבלת יחד עם הביטוי נתונים נוספים, ובהם את צומת ההקשר. נתונים אלו מסופקים ע"י השפה המארחת, ובמקרה שבו מדובר בתת-ביטוי של ביטוי XPath מורכב יותר, ההקשר ניתן ע"י XPath עצמו. דוגמא: ניזכר בביטוי /book/chapter[title=“Introduction”]. צומת ההקשר עבור תת-הביטוי title=“Introduction” יהיה צומת הפרק המתאים שעבורו התנאי נבדק.

13 פונקציות מיקום הפונקציה position() (ללא פרמטרים) נותנת את המיקום היחסי של צומת ההקשר בתוך קבוצת הייחוס שלו. לדוגמא, הביטוי /book/chapter[position()=3] שקול לביטוי /book/chapter[3]. הפונקציה last() מחזירה את מיקום הצומת האחרון בקבוצת הייחוס של צומת ההקשר. לדוגמא, הביטוי /book/chapter/section[last()] יחזיר את תת- הפרק האחרון בכל פרק של הספר.

14 פונקציות נוספות עבור קבוצות צמתים הפונקציה count(arg) תחזיר את מספר הצמתים בקבוצה המתוארת ע"י ביטוי החיפוש arg. דוגמא: הביטוי /book/chapter[count(section)>2] יחזיר את כל פרקי הספר עם יותר מ-2 תתי-פרקים. הפונקציה id(arg) תחזיר את הצומת בעל תכונת ה-ID הזהה לביטוי arg. –אם arg הוא מחרוזת עם רווחים, יבוצע חיפוש עבור כל "מילה" במחרוזת. –אם arg הוא קבוצת צמתים, הם יתורגמו למחרוזות שיפורקו ל- "מילים", ועבור כל אלו יבוצע חיפוש. דוגמא: עבור העץ הגנאולוגי שתואר בהרצאה הקודמת, כך נוכל לדעת לאלו אנשים יש בנות:

15 פונקציות אחרות ב-XPath מוגדרות גם מספר פונקציות שימושיות נוספות. למשל: –פונקציות תרגום הערכים number(…), boolean(…), string(…). –פונקציות להרכבת ובדיקת מחרוזות, כגון contains(…), concat(…). –פונקציות בוליאניות ומספריות כגון floor(…), sum(…), not(…). משמעות הפונקציות תינתן בתרגילים ובדפי קריאה.

16 עוד על השוואות ב-XPath במקרים שבהם אנו משווים בין שני ערכים מסוגים שונים, יתבצע תרגום אוטומטי של הערכים לפי הקריטריונים הבאים: ההשוואות =, > : הערכים המושווים יתורגמו במידת האפשר למספרים לצורך ההשוואה. שימו לב שמחרוזות שאינן מייצגות מספרים יגרמו כאן לתוצאה לא צפויה. ההשוואות =, =! : התרגום יתבצע לפי סדר העדיפויות הבא. –אם לפחות אחד הערכים הוא בוליאני (למשל תוצאה של השוואה אחרת, או של אחת הפונקציות false(), true() ), אז גם הערך השני יתורגם לערך בוליאני. –אם אחד הערכים הוא מספר והשני הוא מחרוזת, אז המחרוזת תתורגם גם היא למספר. –אם שני הערכים מחרוזות, תתבצע ביניהם השוואה.

17 השוואות וקבוצות צמתים בהשוואה כל שהיא בין ערך לקבוצה של צמתים (הנתונה ע"י ביטוי חיפוש), ההשוואה תקבל ערך אמת “true()” אם ורק אם קיים צומת כל שהוא בקבוצה, שלאחר תרגומו לערך מהסוג המתאים ההשוואה המתאימה תתקיים. דוגמא: הביטוי יחזיר “true()” אם קיימת במסמך תמונה אחת לפחות עם רוחב מוצהר הגדול מ-32. בהשוואה בין שתי קבוצות צמתים, זו תקבל ערך “true()” אם ורק אם קיים זוג צמתים  אחד מכל קבוצה, כך שבתרגומם לערכים ההשוואה המתאימה תתקיים. הביטוי יחזיר ערך “true()” אם קיים לפחות קובץ תמונה אחד משותף בין שני הפרקים.

18 ניווט מתקדם ב-XPath כל הביטויים שלמדנו עד עתה תיארו חיפושים בעץ המסמך במסלול יורד מהשורש, מאב לבן (עם אפשרות ל"דילוג" כאשר משתמשים ב-"//"). ב-XPath ניתן גם לתאר מסלולי חיפוש הכוללים כיוונים אחרים. הדבר נעשה באמצעות ציון "כיוון" הצומת המבוקש (ביחס לצומת הקודם שהגענו אליו) במפורש. book chapter section book chapter section

19 ציון כיוון מפורש (axis) ציון הכיוון ניתן בין סימן ה-"/" לבין תווית הצומת הבא. כאשר אין ציון כזה, ברירת המחדל היא מעבר לבן. במפורש כותבים זאת “child::”. דוגמא  הביטוי /book/chapter שקול לביטוי /child::book/child::chapter. הפניה לצומת תכונה נחשבת גם היא לציון כיוון. לדוגמא, הביטוי שקול לביטוי //image/attribute::file, כאשר “attribute::” הוא ציון הכיוון המפורש של תכונה. ציון כיוון החיפוש נקרא ציר  axis.

20 ציוני כיוון של צאצאים descendant::  מציין כל צאצא אפשרי של הצומת הנוכחי. descendant-or-self::  מציין כל צאצא אפשרי וכן את הצומת עצמו. השימוש ב-"//" שקול בעצם לשימוש ב- “/descendant-or-self::node()/” השימוש ב-"//" לא תמיד שקול אולם לציר “descendant::”. ניתן לראות את ההבדל בדוגמא הבאה: /book/descendant::image[1]  ייתן את התמונה הראשונה בספר. /book//image[1]  ייתן את התמונה הראשונה בכל פסקה בספר המכילה תמונה (ה-"[1]" יהיה ביחס לצומת האב של צומת ה- image).

21 בחירה עצמית ובחירת הורה הציר self:: מציין את הצומת עצמו. לדוגמא, לבחירת כל צמתי הכותרת שאינם הקדמה נוכל לכתוב /book//title[self::title!=“Introduction”] הציר parent:: מציין את אבי הצומת. הביטוי /book/chapter/parent::book יבחר את הספר עצמו, אבל רק אם יש בו פרקים. בקשר לצירים אלו קיימים סימונים מקצרים נוחים, המזכירים את אלו המשמשים במערכות הפעלה. “./” הוא סימון מקוצר ל-“self::node()/” “../” הוא סימון מקוצר ל-“parent::node()/”

22 חיפוש לפי אחים הציר following-sibling:: מציין את האחים של הצומת הנמצאים אחריו במסמך. לצורך זה, צמתי תכונות נחשבים כחסרי אחים. דוגמא: הביטוי /book/chapter[title=“Introduction”]/following-sibling::chapter ייתן את כל צמתי הפרקים לאחר פרק ההקדמה. הציר preceding-sibling:: מציין את האחים של הצומת (לא כולל תכונות) הנמצאים לפניו במסמך. דוגמא: הביטוי הבא ייתן את כל הפרקים לפני האפנדיקס: /book/chapter[title=“Appendix”]/preceding-sibling::chapter

צירים הפוכים הציר preceding-sibling:: הוא ציר הפוך: בניגוד לצירים האחרים, לכל מסלול חיפוש עד להגעה לציר זה, סדר הצמתים בתת הקבוצה המתאימה לצעד החיפוש של הציר יהיה בסדר הפוך לסדר המסמך. דוגמא: הביטוי הבא ייתן את הפרק האחרון לפני האפנדיקס: /book/chapter[title=“Appendix”]/preceding-sibling::chapter[1] לעומת זאת, הביטוי הבא כבר ייתן את הפרק הראשון  שינוי הסדר כבר אינו בתוקף בעקבות השימוש באופרטור על קבוצת הצמתים הכוללת. (/book/chapter[title=“Appendix”]/preceding-sibling::chapter)[1] ב-XPath 2.0 גם הציר parent:: הוא הפוך. ב-XPath 1.0 אין הדבר משנה כי תתי הקבוצות שהציר אמור להפוך יכולות להיות בנות צומת אחד לכל היותר.

24 מצייני כיוון נוספים למציאת האבות הקדמונים של צומת, עם או בלי הצומת עצמו (צירים הפוכים)ancestor-or-self:: ancestor:: למציאת כל הצמתים במסמך לאחר הצומת הנוכחי, פרט לצאצאים ותכונותfollowing:: למציאת כל הצמתים לפני הצומת הנוכחי, פרט לאבות הקדמונים ותכונות (ציר הפוך)preceding:: למציאת הכרזות על "מרחבי שמות", namespaces (לא נלמד) namespace::

25 XPath  מילות סיכום שפת החיפוש XPath מאפשרת גמישות רבה בהגדרת מסלולי חיפוש לבחירת קבוצות של הצמתים במסמך XML נתון. שפה זו משתלבת ב-XSLT, ובאופן הדוק אף יותר ב-XQuery, בעת ביצוע הפעולות המוגדרות בהן על קבוצות.