סינון תוצאות

FILTER – סינון תוצאות

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

פונקציית FILTER

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

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

בשורה 8 הוספנו תבנית שאוספת את הערך של המאפיין P577 (תאריך הוצאה לאור) עם המשתנה date?. בשורה אחרי כן אנחנו משתמשים ב-FILTER כדי לכלול רק פריטים שתאריך ההוצאה לאור שלהם הוא לפני 1 בינואר 2000.

שימו לב שהקריטריון לתאריך (2000-01-01) מופיע במרכאות ואחריו הביטוי "^^xsd:dateTime" שמסמן שמדובר בערך בפורמט של תאריך.

פונקציית YEAR

דרך אחרת לכתוב את השאילתה היא באמצעות הפונקציה YEAR. זו פונקציה מובנית שמחזירה את השנה של תאריך (כלומר של ערך שהוא נתון מסוג תאריך/שעה):

FILTER NOT EXISTS

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

הפסוקית FILTER NOT EXISTS משתמשת להגדרת התבניות שצריכות לא להתאים. בדוגמה הזו, התבנית היא מאפיין P166 (פרס שזכה בו") עם ערך שהוא מופע של (P31) פרס אוסקר (Q19020):

במילים אחרות, השאילתה מסירה פריטים שיש להם הצהרה שתואמת את התבנית בפסוקית FILTERNOT EXISTS.

תרגיל: FILTER

| תרגיל: כתבו שאילתה שמראה ראשי מדינות שנולדו בשנת 1980 או אחריה

רמז: בחרו מדינות ריבוניות (Q3624078) שיש להם מאפיין ראש הראשות המושלת (P6) שתאריך הלידה (P569) שלו או שלה הוא בשנת 1980 או אחריה, או שתאריך הלידה שלהם הוא 01-01-1980 או אחרי כן.

פתרון

דרך אחרת היא להשתמש בפורמט התאריך המדויק:

דילוג לתוכן