אחזור נתונים המקושרים לערכים

אחזור נתונים המקושרים לערכים

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

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

SELECT ?item  ?itemLabel ?directorLabel ?pobLabel
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344. # הפריט הוא חלק מסדרת הסרטים מלחמת הכוכבים
  ?item wdt:P57 ?director.     # ?director הערך של המאפיין במאי של הפריט נאסף על ידי המשתנה 
  ?director wdt:P19 ?pob.      # ?pob מקום הלידה של הבמאי נאסף על ידי המשתנה 
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}

השאילתה שולפת פריטים שהם חלק מהסדרה מלחמת הכוכבים ומאחזרת עבור כל סרט את הבמאי ואת מאפיין P19 (מקום לידה) של הבמאי, והערך שהוא מקבל.

חשוב להדגיש: המאפיין P19 והערך שלו מקושרים לבמאי – לא לסרט! אנחנו מאחזרים את הערך (מקום הלידה) של מאפיין (P19) של ערך (הבמאי) של המאפיין (P57) של הפריט שבחרנו!

תצוגה גרפית של המידע עבור הסרט מלחמת הכוכבים – פרק 5: האימפריה מכה שנית" (Q181795):

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

פריט Q181795 הוא הנושא (מוצג בכחול) בהצהרה שבה P57 (במאי) הוא הנשוא ו-Q119348 (ארווין קרשנר) הוא המושא.
פריט Q119348 הוא הערך או המושא (מוצג בירוק) של המאפיין במאי (מוצג בשחור).
פריט Q119348 הוא גם הנושא של ההצהרה:
Q1345 – P19 – Q119348
(ארווין קרשנר – מקום לידה – פילדלפיה)

עכשיו הריצו את השאילתה:

# פינת התחביר

דרך אחרת לנסח את השאילתה האחרונה היא להשתמש בסוגריים מרובעים כדי לאחד את שתי התבניות להתאמה בשורות 7 ו-8.
במקום:
.item wdt:P57 ?director?
.director wdt:P19 ?dob?

אפשר לכתוב:
[item wdt:P57 [wdt:P19 ?dob?

מה השתנה בתוצאות? מדוע?

התחביר משמיט את המשתנה director? ולכן המשתנה לתווית directorLabel? ריק.

תרגיל

| איזה סרטים צולמו בניו זילנד (Q664)?

רמז: ודאו שהשאילתה מאחזרת סרטים בהם הערך למאפיין אתר הצילומים (P915) נמצא ביחידה האדמיניסטרטיבית (P131) של ניו זילנד.

פתרון

הפתרון הבא מציג את אתר הצילומים:

או, בעזרת תחביר מקוצר (אתר הצילומים אינו מוצג)

שימו לב שכפילויות הוסרו מהתוצאות באמצעות ההוראה DISTINCT.

הצהרות עם מבחינים

שאילתות להצהרות עם מבחינים

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

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

על אף שיש 9 סרטים בסדרה קיבלנו 32 תוצאות. מדוע?

כפי שראינו קודם, מאפיין יכול לקבל מספר ערכים. במקרה הנוכחי, יש מספר ערכים לתאריך ההוצאה לאור עבור כל סרט. למה? כי יש תאריכי הפצה שונים עבור מדינות שונות. לכל ערך יש מבחין שמציין את המאפיין "מיקום ההוצאה לאור" (P291) והערך שמאפיין זה מקבל. למשל עבור הפריט מלחמת הכוכבים – פרק 4: תקווה חדשה (Q17738):

למאפיין "תאריך הוצאה לאור" (P577) יש את המאפיין "מיקום הוצאה לאור" (P291) כמבחין

איך אפשר לתשאל את הנתונים כך שהשאילתה תחזיר רק את תאריך ההוצאה לאור בארצות-הברית?

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

הסבר על מבחינים

עד כה ראינו הצהרות מהסוג הבא:

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

במודל הנתונים של ויקינתונים, עבור כל מאפיין ישיר המקשר בין פריט לערך, יש גם מאפיין פשוט (p) המקשר בין הפריט לבין מה שמכונה קודקוד הצהרה (statement node). קודקוד ההצהרה מקושר לערך של המאפיין הישיר באמצעות הצהרת מאפיין (ps), כפי שמוצג בתצוגה הגרפית הזו:

דרך אחרת לתאר את הנתונים הללו היא על ידי הצהרות:

פריטמאפייןערך
Q17738wdt:P5771977-05-25
Q17738p:P577Q17738-קודקוד הצהרה
Q17738-קודקוד הצהרהps:P5771977-05-25

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

לפי המודל הזה, נוכל לנסח שאילתה כדי לקבל את תאריך ההוצאה לאור (P577) של הסרטים בסדרת הסרטים מלחמת הכוכבים כשמיקום ההוצאה לאור (P291) הוא ארצות הברית:

עוד תרגיל

| תרגיל: צרו רשימה של השחקנים (P161) והתפקיד (P453) שהם שיחקו בכל אחד מסרטי הטרילוגיה המקורית של מלחמת הכוכבים (Q25540859)

פתרון

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

פתרון

דילוג לתוכן