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.