F 077-7868848
M 054-4822621
מבוא לאינטרנט סמנטי - RDFa
תרגום מאתר ALA נכתב במקור ע"י מרק בריבק
RDFa
או בתרגום חופשי לעברית : 'תשתית תאור משאבים על ידי תכונה' נהנת מרגעי התהילה שלה כרגע:
גוגל מתחיל להתייחס לRDFa ולמיקרופורמטס כשהוא מאנדקס אתרים, ומשתמש במידע כדי להעשיר את תוצאות החיפוש, בעוד יאהו משתמש בהם כבר כשנה.
כששני הענקים כבר מתיחסים לנושא, עולם חדש של תוכן מתקרב בצעדי ענק
האינטרנט מתוכנן עבור אנשים, ורוב המידע העשיר והמועיל שהאתרים מכילים לא זמין למכונות. אנשים יכולים להתמודד עם וריאציות שונות בעימוד, בצבע, באיות, במיקום וכו', ועדיין לקלוט את המשמעות המקורית של התוכן. מכונות לעומת זאת צריכות קצת עזרה .
סוג חדש של ווב - ווב סמנטי - ייוצר ע"י מידע שיסומן בצורה כזאת שגם תוכנות יוכלו להבין אותו בקלות. לפני שנשקול איך להשיג את המטרה, הבה נראה מה נוכל להשיג באמצעותה.
חיפוש משופר
הוספת מידע ידידותי למכונה לדף האינטרנט משפר את יכולות החיפוש. לדוגמה תארו לכם מאמר חדשותי שאומר : "ראש הממשלה טס לאוסטרליה" ביחס לראש הממשלה בנימין נתניהו. המאמר לא קורא לראש הממשלה בשם אבל די קל לדאוג שהמאמר יופיע כשמישהו מחפש את "בנימין נתניהו".
אבל אם המאמר מדבר על שנת 1949, לא היינו רוצים שהמאמר יופיע בחיפוש אחר "בנימין נתניהו" - אבל כן הינו רוצים שיופיע כשמחפשים את "דוד בן גוריון".
כדי להשיג את התוצאה ע"י שימוש באותה טכניקה כמו בדוגמה של בנימין נתניהו - ע"י מיפוי סט אחד של מילים לסט אחר - מנוע החיפוש צריך לדעת את תאריך התחלת הכהונה וסיום הכהונה של כל ראש ממשלה, ואז לעשות הצלבה של המידע הזה עם תאריך פרסום המאמר. זה לא לחלוטין בלתי אפשרי, אבל מה אם המאמר מומצא או מדבר על ראש ממשלת אוסטרליה ? במקרה כזה, רשימת תאריכים פשוטה לא תעזור.
האלגוריתמים שמנסים להסיק מידע חיוני מהטקסט ישתפרו עם הזמן, אבל מידע נוסף שהופך את המידע לחד ערכי רק ישפר את דיוק החיפוש.
שיפור הממשק למשתמש
יאהו וגוגל התחילו שניהם להשתמש ב RDFa כדי לשפר את חווית המשתמש ע"י שיפור תצוגת תוצאות החיפוש.
יש יתרון מסחרי ברור להבנה טובה יותר של דף שמאונדקס: פרסום ממוקד ורלונטי יותר יכול להופיע ליד הטקסט בעמוד.
עכשיו שאנחנו יודעים למה להוסיף מידע מכוון מכונה בדפים שלנו, אז בואו נעבור לתכלס ונראה איך עושים את זה .
מאפייני מטהדטה ב HTML
אתם בוודאי כבר מכירים את תגיות המטהדטה הבסיסיות שנתמכות בHTML. הנפוצות בהן הם meta ו link, וחלק מהאנשים אולי מכירים גם את העובדה ש rel@ שבשימוש בlink בדרך כלל, יכולה לשמש גם ב a. שימו לב שהיחוס לHTML הוא כמובן גם לXHTML.
נסתכל תחילה על המאפיינים הקיימים האלה, מפני שהם מהווים את הבסיס התפיסתי עליו נבנה רעיון הRDFa.
השימוש של META וLINK בHTML
תגיות הmeta ו link נמצאות באלמנט הhead של הדף, ומאפשרות לנו לספק מידע שמתיחס למסמך. לדוגמה, נרצה לידע שהדף נוצר בתאריך מסוים, שאני המחבר, ושאני מאפשר לאנשים אחרים להשתמש במאמר בכל צורה שירצו:
<html>
<head>
<title>RDFa: עכשיו לכולם יכול להיות ממשק</title>
<meta name="author" content="עדו דקרס" />
<meta name="created" content="27/10/2009" />
<link rel="license" href="http://creativecommons.org/licenses/ by-sa/3.0/" />
</head>
-
-
-
</html>
הדוגמה מראה איך בHTML מידע המטהדטה נארז במקום מופרד מהטקסט של המסמך. HTML משתמש באלמנט head למטהדטה ובאלמנט body לתוכן הדף.
HTML גם מאפשר לטשטש בין שני האזורים: אפשר להוסיף את התכונה rel@ לאלמנט a ועדיין לשמור על המשמעות שלו ב link.
השימוש בrel@
תארו לעצמכם שאני רוצה לאפשר למבקרים באתר לראות את רשיון ה Creative Commons. כרגע המידע על הרשיון שאליו אני מתיחס חבוי מהקוראים מפני שהוא נמצא באלמנט הhead. אבל בזה קל לטפל ע"י הוספת עוגן (a) בתוך אלמנט ה Body.
<a href="http://creativecommons.org/licenses/by-sa/3.0/">
CC Attribution-ShareAlike</a>
זה יפה, ומאפשר לנו להשיג את המטרה: קודם כל יש לנו מטהדטה מוכוון מכונה ב head, שמתאר את היחס בין המאמר לרשיון:
<link rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/" />
ובנוסף, יש לנו לינק בתוך ה body, שמאפשר לאנשים להקליק ולקרוא את הרשיון:
<a href="http://creativecommons.org/licenses/by-sa/3.0/">
CC Attribution-ShareAlike</a>
אבל HTML מאפשר לנו להשתמש ב rel@ גם על עוגן. במילים אחרות, זה מאפשר להוסיף מטהדטה שבדרך כלל ימצא באלמט head של המסמך גם באלמנט ה body.
בעזרת הטכניקה החזקה הזאת, אנחנו יכולים להביע גם את המידע מוכוון המכונה וגם את המידע מכוון הקוראים, בחבילה אחת:
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
CC Attribution-ShareAlike</a>
שיטה פשוטה זו המרחיבה את את המרקאפ עם מטהדטה לא נמצאת בשימוש רב ברשת, אבל היא נמצאת בלב הRDFa. זה מוביל לעיקרון הראשון ב RDFa:
כלל 1:
האלמנטים link ו a מעידים על קשר בין הדף הנוכחי ובין דף אחר; תכונת ה rel@ נותנת ערך שמתאר את הקשר בצורה טובה יותר.
אבל בואו לא נשכח : השימוש ב rel@ עם אלמנט ה a היא בסך הכל שימוש בתכונה קיימת של HTML, ש RDFa משכה את תשומת הלב אליה.
הוספת רשיון לתמונות
הדוגמה הקודמת נותנת מידע על הרשיון של הדף שמכיל אותו. יחד עם זאת מה אם הדף מכיל פריטים רבים, כל אחד עם רשיון שימוש שונה? לא קשה לחשוב על מצבים כאלה, כמו דפים עם תוצאות חיפוש ב Flicker, YouTube או SlideShare.
RDFa לוקח את הרעיון הבסיסי של rel@ - היחס שהתכונה מוסיפה בין פרטים - ומוסיפה עליה, ע"י אפשור הוספת התכונה גם לתכונה src@ באלמנט img
לדוגמה ניקח תוצאות חיפוש :
<img src="image1.png" />
<img src="image2.png" />
נניח שהתמונה הראשונה נמצאת תחת רשיון Creative Commons Attribution-ShareAlike, אבל השניה נמצאת תחת רשיון Attribution-Noncommercial-No Derivative works license.
איך נוסיף את המידע לדף?
אם ניחשתם שנוסיף את תכונת הrel@ לתג ה img, צדקתם. כדי להציג שני רשיונות שונים, אחד לכל תמונה, פשוט נרשום כך:
<img src="image1.png" rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/" />
<img src="image2.png" rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" />
כאן אפשר לראות את העיקרון הבסיסי - בניית המטהדטה בצורה אינקרמנטלית באמצעות האלמנטים הקיימים בHTML. בנייה על עקרונות הHTML מקלה על אנשים בשימוש ב RDFa.
כלל 2:
תכונות ה rel@ וה href@ לא מוגבלות יותר לאלמנטים alinkת אלה יכולות להיות מוספות גם לimg כדי להוסיף הקשר בין התמונה לפריט אחר.
הוספת מאפינים ל body
בדוגמת ה HTML ראינו שאפשר להוסיף גם מאפיינים טקסטואלים המתארים את המסמך:
<meta name="author" content="עדו דקרס" />
<meta name="created" content="27-10-2009" />
זה מספר לנו מי יצר את המסמך ומתי, אבל זה יכול להיות בשימוש רק בhead של המסמך.
RDFa לוקח את הטכניקה ומאפשר שימוש בה גם באלמנט ה body;
מה שאומר ש content@ לא מוגבל יותר לתג ה meta@, אלה יכול להופיע בכל אלמנט.
כלל 3:
בHTML רגיל, תכונות מוכתבות בראש הדף, ע"י שימוש בcontent@ בתוך meta@.
בדפי HTML עם RDFa ניתן להשתמש ב content@ כדי להוסיף מאפיינים לכל אלמנט.
יחד עם זאת יש שינוי קטן מהדרך ב משתמשים ב content@ ב head, בזאת שהתכונה name@ כבר נמצאת בשימוש באלמנטים שונים במסמכי HTML,
זה יכול ליצור בילבול אם משתמשים בה כתכונה גם ב body.
RDFa מוסיף לכן את התכונה property@ כדי לשמש בתפקיד.
כלל 4:
למרות ש name@ משמש כהגדרת שם התכונה בתג ה meta@, לא ניתן להשתמש בה באלמנטים אחרים, לכן RDFa הוסיפה את מושג ה property@.
נניח ששם המחבר ותאריך פרסום המסמך נמצאים נמצאים באלמנט ה head של המסמך, ושהמידע נמצא גם בתוכן המסמך בצורה קריאה לאנשים:
<html>
<head>
<title>RDFa: עכשיו לכולם יכול להיות ממשק</title>
<meta name="author" content="עדו דקרס" />
<meta name="created" content="27/10/2009" />
</head>
<body>
<h1>RDFa: עכשיו לכולם יכול להיות ממשק</h1>
Author: <em>עדו דקרס</em>
Created: <em>27/10/2009</em>
</body>
</html>
בעזרת RDFa אנחנו יכולים לאחד את המידע כדי שיופיע במקום אחד:
<html>
<head>
<title>RDFa: עכשיו לכולם יכול להיות ממשק</title>
</head>
<body>
<h1>RDFa: עכשיו לכולם יכול להיות ממשק</h1>
Author: <em property="author" content="עדו דקרס">עדו דקרס</em>
Published: <em property="created" content="27/10/2009">27/10/2009</em>
</body>
</html>
מייד נראה איך אנחנו יכולים לשפר את הדוגמה. בינתיים אנחנו רק צריכים להכיר בעובדה שלא משנה אם מידע המטה מופיע בראש הדף או בתוכנו, זה מביע את אותו הדבר -
וזה בעצם יצוג טקסטואלי מקביל לטכניקת ה rel@ שיש לHTML כדי להביע יחסים ב body.
שימוש באוצרות מילים
כאן אנחנו צריכים לסטות מעט. אנחנו יכולים להעביר איך שהו את השימוש ב@name="author" מפני שאפילו שהתכונה author לא מוגדרת בשום מקום, במשך השנים אנשים התרגלו לצפות לכך.
אבל RDFa מאפשר -ודורש - דיוק רב יותר. כשאנו משתמשים במושגים כמו "author" או "created", אנחנו צריכים להורות מאיפו הגיע המושג. אם לא נעשה זאת,
אין לנו כל דרך לדעת אם מה שאני מתכוון ב "author" זהה למה שאתם מתכוונים.
זה אולי נראה מיותר. אחרי הכל מי יכול להתבלבל במושג בסיסי כמו "author"? אבל תארו לעצמכם שימוש במושג "country" באתר נסיעות; האם המושג הזה מגדיר שבמדינה הזאת תהיה החופשה, או שהוא מגדיר שהחופשה תהיה באזור הכפרי ולא בעיר ? למילים רבות נוספות יכולות להיות משמעויות שונות בהקשר שונה, ואם מוסיפים גם את האפשרות לשפות שונות, די מהר מבינים שאם רוצים להתקדם עם משמעות המידע, אנחנו צריכים להיות יותר מדוייקים. וזה אומר להסביר מאיפו המושגים שבהם אנחנו משתמשים מגיעים.
בRDFa אנו עושים זאת ע"י הגדרה שאנו עומדים להשתמש באוסף מושגים מסויים, או אוצר מילים. זה נעשה בדרך פשוטה - רק מגדירים את כתובת אוצר המילים:
xmlns:dc="http://purl.org/dc/terms/"
(אם אתם מבינים XML , תראו שזו הגדרת namespace סטנדרטית)
דוגמה זאת נותנת לנו גישה לאוסף המושגים של Dublin Core, ע"י שימוש בתחלית dc. בDublin Core יש הרבה מושגים זמינים, והשניים שבהם נשתמש לדוגמה זו הם creator ו created כדי להשתמש בהם אנו צריכים להוסיף את התחלית בצורה זו:
dc:creator
dc:created
עכשיו ברור מייד ש "dc:creator" שונה מ "xyz:creator".
שמי לב שההפניה לאוצר המילים צריכה להופיע במסמך לפני המקום בו משתמשים בו. בדוגמה שלנו אפשר להוסיף אותה באלמט הbody או ב html. והקוד יראה כך:
<html xmlns:dc="http://purl.org/dc/terms/">
<head>
<title>RDFa: עכשיו לכולם יכול להיות ממשק</title>
</head>
<body>
<h1>RDFa: עכשיו לכולם יכול להיות ממשק</h1>
Author: <em property="dc:creator" content="עדו דקרס">עדו דקרס</em>
Published: <em property="dc:created" content="27/10/2009">27/10/2009</em>
</body>
</html>
יש עוד הרבה מילונים לבחור מהם, ובמאמר הבא אוסיף רשימה שלהם. כמובן אין שום מניעה ליצור מילון משלכם בתוך החברה, ארגון או קבוצת עניין. אבל שימו לב, אין ארגון אחד שמפקח על הנושא. קיימים שיטות מועדפות לעקוב אחריהן, אבל עם הכח באה אחריות, אז השתדלו להבין את התהליך ככל האפשר לפני שתתחילו ליצור מילון חדש.
לפני שנחזור לדוגמה שלנו, נוסיף נקודה אחרונה בקשר לאוצרות מילים; מן הסתם תתהו מדוע rel="license" לא קיבל טיפול זהה ל property="author", וצריך תחילית. התשובה היא שבHTML כבר יש ערכים שבשימוש עם rel@ (כמו "next" ו "prev"), ו RDFa מוסיף עוד כמה. אחד מהערכים שהוספו הוא "license".
אבל ברגע שנצא מרשימת הערכים הקיימת - לדוגמה אם אנחנו רוצים להשתמש במושג "replaces" מ Dublin Core או "knows" מ FOAF - אז חייבים להשתמש במיפוי למילון ובתחילית לפני המושג.
לדוגמה, הבה נניח שלמאמר אין רק רשיון CC כמו בדוגמה מקודם, אלה שהוא מחליף מאמר אחר - דבר שנוכל להביע בעזרת המושג "replaces" מ Dublin Core. נביע את היחסים בצורה הזו:
<html xmlns:dc="http://purl.org/dc/terms/">
<head>
<title>RDFa: עכשיו לכולם יכול להיות ממשק</title>
</head>
<body>
<h1>RDFa: עכשיו לכולם יכול להיות ממשק</h1>
Author: <em property="dc:creator" content="עדו דקרס">עדו דקרס</em>
Published: <em property="dc:created" content="27/10/2009">27/10/2009</em>
License: <a rel="license" href="http://creativecommons.org/licenses/ » by-sa/3.0/">CC Attribution-ShareAlike</a>
Previous version: <a rel="dc:replaces" href="rdfa.0.8.html">version 0.8</a>
</body>
</html>
עכשיו כשהבנו את אוצרות המילים נחזור לדוגמה המרכזית.
שימוש בטקסט הרץ במאמר כדי להגדיר את הערך של המושג
בדוגמה הקודמת, השימוש הכפול בטקסט "עדו דקרס" גם בערך content@ וגם בטקסט של הדף אולי בלבלה אתכם. אם כן - כנראה הצלחתם להכנס למחשבה שמאחורי RDFa, אנחנו באמת יכולים להסיר את הגדרת ה content@ אם הטקסט מכיל את הערך שבו אנו רוצים להגדיר:
Author: <em property="dc:creator">עדו דקרס</em>
כלל 5:
אם ההגדרה content@ לא מופיעה, הערך של המושג יקבע לפי הטקסט של האלמנט.
אף על פי ש content@ היא השלכה מאלמנט המטה של HTML, חשבו על הדוגמה כעל דרך בררת המחדל לקבוע ערך. מזאת משתמע שהערך בcontent@ אם הוא קיים, יכול להיות דרך לעקוף את הערך טקסט הדף, אם הערך בטקסט לא מביע בדיוק את מה שרוצים. זה מאפשר גם לעורכי המאמר יותר חופשיות עם הטקסט שאנשים קוראים, מפני שהם יכולים להיות מדוייקים יותר עם הטקסט המוטמע. אפשר לקחת לדוגמה את תאריך הפרסום; המידע בכל הדוגמאות הבאות אומר אותו הדבר, אבל מוצג בדרך שונה לגמרי:
<span property="dc:created" content="27/10/2009">Oct 27th, 2009</span>
<span property="dc:created" content="27/10/2009">Oct 27th</span>
<span property="dc:created" content="27/10/2009">27th Oct</span>
<span property="dc:created" content="27/10/2009">27/10/09</span>
<span property="dc:created" content="27/10/2009">tomorrow</span>
<span property="dc:created" content="27/10/2009">yesterday</span>
כלל 6:
אם ההגדרה content@ קיימת, היא עוקפת את הערך של האלמנט בטקסט, וקובעת את ערך המושג.
במאמר הבא, נראה איך להוסיף תכונות לתמונות, ואיך להוסיף מידע לכל אלמנט.