שאילתת ספארקל בסיסית

סרטים בסדרה מלחמת הכוכבים

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

# סרטי מלחמת הכוכבים 
SELECT ?item  
WHERE 
{
  ?item wdt:P179 wd:Q22092344.
}

קידוד צבעים בממשק השאילתות

בממשק השאילתות של ויקינתונים יש משמעות לצבעים השונים, שמסייעים להבין ולהסביר את הקוד בספארקל:

  • אפור: השורה הראשונה של השאילתה מתחילה בסולמית (#) ולאחריה טקסט באפור. זוהי הדרך לסמן הערה – משהו שאנחנו כותבים שלא משפיע על השאילתה עצמה. כל טקסט שמופיע אחרי # הוא הערה וממשק השאילתות מתעלם ממנו, פרט לתבניות מסויימות שנראה בחלקים הבאים.
  • אדום: המילים SELECT ו-WHERE בשורות 2-3 מופיעות באדום ובאותיות גדולות זוהי הדרך לסמן מילות תחביר "שמורות" של ספארקל, שהן סוג של "פקודה":
    • SELECT – אחרי מילה זו מצהירים את שמות המשתנים שיוצגו בתוצאות השאילתה
    • WHERE – אחרי מילה זו מופיעה התבנית להתאמה שלפיה ייבחרו הפריטים, כלומר הקריטריונים או המגבלות על היחסים בין משתני השאילתה, לרוב בצורה של שלישיות שמשקפות את מבנה הפריט-מאפיין-ערך של ויקינתונים.
  • ירוק: בשורות 2 ו-5 מופיע הביטוי "item?". בשפת ספארקל שמות של משתנים מתחילים בסימן שאלה ומסומנים בירוק. שמות משתנים יכולים לקבל כל רצף של תווים (פרט למילים שמורות). בדוגמא למעלה מופיע המשתנה item? אך התוצאות יהיו זהות גם אם נקרא למשתנה בשם אחר, כמו film?, או x? או any_variable_name?. התפקיד של משתנים הוא להחזיק ערכים לשימוש עתידי.
  • כחול: בשורה מספר 5 מופיעים מספר מונחים בצבע כחול. אלה מסמנים תחיליות (prefixes). תחיליות הן קיצורי דרך שמאפשרות לשאילתות להיות מוצגות בצורה יותר קומפקטית ובהירה. ללא התחיליות היינו צריכים לציין את כתובת ה-URL המלאה של כל אלמנט בשאילתה.
    • wdt: תחילית המסמנת מאפיין בוויקינתונים + המספר המזהה של המאפיין (אחרי האות P).
      ללא התחילית היינו צריכים להציג את המאפיין כך: http://www.wikidata.org/prop/direct/>:P179
    • wd: תחילית עבור פריטים בוויקינתונים + המספר המזהה של הפריט (אחרי האות Q).
      ללא התחילית היינו צריכים להציג את המאפיין כך: <http://www.wikidata.org/entity/>:Q22092344

הסבר לשאילתה

עכשיו נסתכל איך השאילתה עובדת.

שאילתת ספארקל מורכבת בדרך כלל משתי פסוקיות (clause) או יותר, שהן חלקים של השאילתה עם פונקציות שונות. בשאילתת הספארקל הבסיסית שלנו יש שתי פסוקיות:

פסוקית SELECT

בפסוקית ה-SELECT אנחנו מפרטים את המשתנים שהשאילתה תחזיר בתוצאות – במקרה הנוכחי קראנו למשתנה שלנו item?. בעיקרון השורה הזו אומרת "אנחנו הולכים למצוא כמה ערכים ולשמור אותם במשתנה item?, ואז אנחנו נציג את הערכים האלה".

פסוקית WHERE

בפסוקית ה-WHERE אנחנו מציינים את התנאים למשתנים, לרוב בצורה של שלישיות. מבחינה לוגית, ספארקל עובד לפי התאמת תבניות (pattern matching). כלומר, המעבד של ספארקל מחפש התאמה בין התבניות שאנחנו מגדירים בפסוקית ה-WHERE להצהרות בוויקינתונים, שכזכור יש להן מבנה עם שלושה חלקים (נושא, מושא, נשוא). פסוקית ה-WHERE אומרת למעבד איזה ערכים של המאפיין להכניס למשתנים שהצהרנו בפסוקית ה-SELECT, ואיך לשלוף את הנתונים.

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

במילים אחרות, השאילתה בוחרת פריטים שהם: (1) עם מאפיין: חלק מסדרה (P179), ו-(2) למאפיין יש את הערך "מלחמת הכוכבים (סדרת סרטים)" (Q22092344).
שימו לב שאם אתם עומדים עם הסמן מעל התחילית או המספר המזהה הקשור אליה, ממשק השאילתות יציג לכם את התווית והתיאור של המאפיין או הפריט.

לחצו על כפתור ה"Play" (הכפתור הכחול עם החץ) על מנת להריץ את השאילתה. יש לגלול בתוך המסגרת כדי לראות את התוצאות.

השאילתה מחזירה את המספר המזהה של כל סרט בסדרת הסרטים מלחמת הכוכבים, אבל לא את השם של הסרט.
בחלק הבא נלמד איך לאחזר גם את השמות של הסרטים.

הוספת תוויות

הוספת תוויות

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

# סרטי מלחמת הכוכבים 

SELECT ?item  ?itemLabel 
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}

הסבר לשאילתה

בפסוקית ה-SELECT אנחנו מצהירים על שני משתנים: item? ו-itemLabel?.
Label הוא צירוף "שמור": הוא מתייחס לתווית של הפריט שמוגדר על ידי שם המשתנה. כלומר אם למשתנה שלנו היינו קוראים x?, אז המשתנה עבור התווית יהיה xLabel?. אם היינו קוראים למשתנה film?, אז המשתנה עבור התווית יהיה filmLabel?, וכן הלאה.

בפסוקית ה-WHERE מופיעה אותה תבנית להתאמה כמו קודם:
.item wdt:P179 wd:Q22092344?
בנוסף, מופיעה באדום הפקודה SERVICE ולאחריה הטקסט (בכחול):
."[wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE

הטקסט בכחול הוא קוד שקורא לשירות מיוחד שמאחזר את התוויות של פריטים. במילים אחרות, אם המשתנה בפסוקית ה-SELECT נקרא NAMELabel?, ממשק השאילתות שולף את התווית של הפריט שמחזיק המשתנה NAME?. השירות הזה שימושי מאוד כיוון שהוא מוריד את רמת המורכבות שהייתה נדרשת בשאילתות ספארקל כדי להשיג את אותו אפקט.

מה זה AUTO_LANGUAGE?

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

הריצו את השאילתה. אחרי כן שנו את שפת הממשק והריצו את השאילתה שוב.

הגדרת שפת התווית

הגדרת שפת התווית

דרך אחרת להגדיר את השפה שהשאילתה מחזירה לתוויות היא להצהיר זאת בקוד של פקודת SERVICE (במקום לשנות את שפת הממשק).

למשל, השאילתה הבאה מחזירה ומציגה את התוויות בעברית (he):

# סרטי מלחמת הכוכבים 

SELECT ?item  ?itemLabel 
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "he". }
}

ניתן להגדיר מספר שפות ואת הסדר שבו יאוחזרו התוויות. למשל, השאילתה הבאה שולפת קודם את התווית בצרפתית (fr), אבל אם אין תווית בשפה זו תאוחזר התווית בגרמנית (de), ואם זו לא קיימת אז התווית באיטלקית, וכן הלאה.

# סרטי מלחמת הכוכבים 

SELECT ?item  ?itemLabel 
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,de,it,es,no,pt". }
}


השלמה אוטומטית

פונקציית החיפוש של ממשק השאילתות

לא קל לזכור את הקוד לשירות התוויות של ויקינתונים. למרבה המזל, ממשק השאילתות מציע פתרון פשוט: השלמה אוטומטית. בחלון של ממשק השאילתות, בכל שלב, ניתן ללחוץ על המקשים Ctrl+רווח (או Enter+Alt) והממשק יציג תפריט עם אפשרויות לקוד שיכול להיות מתאים; בחרו את ההצעה המתאימה בעזרת מקשי החצים, ולחצו על Enter.

למשל, במקום לכתוב את הקוד:

SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]".}

אפשר רק להתחיל להקליד SERV, ללחוץ על Ctrl+רווח, וההצעה הראשונה בתפריט שנפתח היא ההשלמה האוטומטית לקוד של שירות התוויות. כל מה שעליכם לעשות הוא ללחוץ על Enter. לאחר שהכנסתם את הקוד, ייתכן ותרצו לערוך אותו כדי להגדיר את השפות הספציפיות לתוויות שהשירות יאחזר.

ההשלמה האוטומטית יכולה גם לחפש מספרי Q (מספר מזהה של פריטים) או מספרי P (מספר מזהה של מאפיינים). אם מקלידים את אחת מהתחיליות :wd (לפריטים) או :wdt (למאפיינים) ומתחילים להקליד טקסט (לא משנה באיזה שפה), Ctrl+רווח יבצע חיפוש של הטקסט בוויקינתונים, ויציע לכם פריטים או מאפיינים רלוונטיים.

הוספת תיאור

הוספת תיאור של פריט

כפי שהוסבר במבוא לוויקינתונים, לכל פריט בוויקינתונים יש מספר מזהה ייחודי שמתחיל באות Q. לפריטים יש גם תווית בשפה אחת או יותר. בנוסף, לפריט יכול להיות תיאור – ביטוי קצר בשפה כלשהי. מכיוון שהתוויות של פריטים אינן בהכרח ייחודיות, התיאור של פריט בוויקינתונים יכול להבחין בין פריטים בעלי תווית זהה או דומה. גם התיאור של פריט לא צריך להיות ייחודי, אבל לא יכולים להיות שני פריטים עם אותה תווית ואותו תיאור.

בממשק השאילתות Description היא עוד מילה מיוחדת (כמו Label), ששמורה לתיאור של הפריט שאוחזר על ידי משתנה מסויים. אם בפסוקית ה-SELECT יש משתנה בשם NAMEDescription?, ממשק השאילתות יאחזר את התיאור של הפריט שמחזיק המשתנה NAME?.

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


תרגיל: שאילתה פשוטה

| תרגיל: צרו רשימה של פריטים, כולל תווית ותיאור, שהם חלק מסדרת הסרטים הארי פוטר (Q216930)

כתבו את שאילתת הספארקל בחלונית שלמטה בעזרת SELECT ו-WHERE.

לחצו על כפתור ה"פליי" להרצת השאילתה.

פתרון

הפתרון המוצג אינו בהכרח זהה לשלך. אולי השתמשת בשמות משתנים אחרים, או שהשפה שבחרת להציג בה את התוויות היא אחרת. אלה הבדלים קלים שאינם משמעותיים; מה שחשוב הן התוצאות.

לחצו על כפתור ה"פליי" להרצת השאילתה.

דילוג לתוכן