נתיבי מאפיין

נתיבי מאפיין

המבנה התחבירי שמאפשר לנו לבחור פריטים ששייכים לאותה קבוצה משתמש בנתיבי מאפיין (property paths). נתיבי מאפיין הם דרך מקוצרת לרשום את המאפיינים המחברים בין שני פריטים.

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

לפריט Q165713 יש מאפיין P31 (מופע של) המקבל את הערך "סרט באורך מלא" Q24869. ההצהרה של פריט-מאפיין-ערך היא אם כן:
Q24869 – P31 – Q165713

הנתיב בין פריט Q165713 לפריט Q24869 הוא הפשוט והקצר ביותר: מאפיין אחד.

לפריט Q24869 (סרט באורך מלא) יש מאפיין P279 (תת-קבוצה של) המקבל את הערך "סרט קולנוע" Q11424.
ההצהרה של פריט-מאפיין-ערך היא אם כן:
Q11424 – P279 – Q24869

גם הנתיב בין פריט Q24869 לפריט Q11424 הוא בעל מאפיין אחד בלבד.

אפשר לחבר אלמנטים של הנתיב בעזרת קו נטוי קדמי (/). כאשר בשאילתה מופיע המבנה התחבירי wdt:P31/wdt:P279 הוא מסמן נתיב בין שני פריטים המורכב ממאפיין P31 (מופע של) וממאפיין P279 (תת-קבוצה של).

אבל אם התבנית להתאמה בשאילתה היא:
.item wdt:P31/wdt:P279 wd:Q11424?
השאילתה תמצא התאמה אך ורק עם פריטים שהם מופע של תת-קבוצה של סרט קולנוע – כלומר פריטים שהנתיב שלהם לפריט "סרט קולנוע" (Q11424) מורכב מ-P31 וגם P279. פריטים שהם מופע של "סרט קולנוע" בעצמם (כלומר יש להם מאפיין P31 עם הערך Q11424) לא יאוחזרו כיוון שהם לא תואמים את המבנה התחבירי של התבנית.

הביטוי *wdt:P31/wdt:P279 בשורה 6 הוא דרך קיצור לציין שיש מאפיין "מופע של" ואחריו מספר כלשהו של מאפייני "תת-קבוצה של" בין item? לבין הפריט "סרט קולנוע" (Q11424).

אם מסירים את הכוכבית (*) בשורה 6 בשאילתה ומריצים את השאילתה, התוצאות לא כוללות פריטים שהם בעצמם מופע של סרט קולנוע.
הכוכבית (*) אחרי אלמנט בנתיב פירושה "אפס או יותר מהאלמנט הזה". מכאן שהתבנית להתאמה
item wdt:P31/wdt:P279* wd:Q11424?
יכולה להתאים ל:
.item wdt:P31 wd:Q11424?
או
.item wdt:P31/wdt:P279 wd:Q11424?
או
.item wdt:P31/wdt:P279/wdt:P279 wd:Q11424?
או
.item wdt:P31/wdt:P279/wdt:P279/wdt:P279 wd:Q11424?
וכן הלאה.

DISTINCT

DISTINCT – הצגת תוצאות ייחודיות

בוא נסתכל שוב על השאילתה שמראה את כל יצירות האמנות (Q838948) שמתרחשות ביקום הבדיוני של מלחמת הכוכבים:

אם תריצו את השאילתה תוכלו לראות שיש בתוצאות כמה כפילויות: פריטים מסוימים, כמו Q19590955 (רוג אחת: סיפור מלחמת הכוכבים) ו-Q6074 (מלחמת הכוכבים – פרק 7: הכוח מתעורר) מופיעים יותר מפעם אחת.
לעיתים קרובות שאילתות עלולות להחזיר תוצאות כפולות – למשל כשמשתמשים בתבנית שכוללת מבנה תחבירי עם נתיבי מאפיין כמו:
item wdt:P31/wdt:P279* ?class?
אם יש מספר נתיבים מ-item? ל-class? תתקבלת תוצאה חדשה עבור כל אחד מהנתיבים. למשל, לפריט Q19590955 (רוג אחת: סיפור מלחמת הכוכבים) יש את הערכים "סרט קולנוע" וגם "סרט תלת-ממד" למאפיין P31, ולכל אחד מהם יש נתיב למחלקה "יצירת אמנות". כתוצאה מכך, הפריט מופיע פעמיים בתוצאות.

כדי להסיר כפילויות מהתוצאות מוסיפים את מילת המפתח DISTINCT אחרי SELECT:

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

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

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

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

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 – ערכו את השאילתה וצרו רשימה של דמויות ייחודיות בטרילוגיה הראשונה של מלחמת הכוכבים, והשחקנים ששיחקו אותם.

פתרון

קואורדינטות

שאילתות איפה: קואורדינטות

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

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

בואו נסתכל על דוגמה פשוטה: איפה התרחשו אסונות תעופה?

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

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

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


קואורדינטות מקושרות

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

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

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

# פינת התחביר

דרך אחרת לנסח את השאילתה האחרונה היא להשתמש בסוגריים מרובעים כדי לאחד את שתי התבניות בשורות 7 ו-8.
במקום:
.item wdt:P915 ?location?
.location wdt:P625 ?coords?

נכתוב:
.[item wdt:P915 [wdt:P625 ?coords?

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

המפה מראה את אותם אתרים אבל התחביר משמיט את המשתנה location? ולכן המשתנה locationLabel? ריק והתווית של האתר לא מופיעה.

דילוג לתוכן