بحث را با یک مثال آغاز میکنم. تصور کنید در یک صفحه روی وب، نوشته شده است:
کتاب «چگونه یک تجارت الکترونیک راه اندازی کنم» نوشته «حمید رضا نیرومند» در سال ۱۳۹۳ توسط انتشارات آفتابگردان منتشر شد.
دقت کنید که این جمله چقدر پرمحتواست! نام یک کتاب، نویسندهی آن، سال انتشار و انتشارات آن کتاب در این جمله وجود دارد، اما متأسفانه موتورهای جستجو این جمله را فقط یک سری «کلمه» میبینند ولاغیر! یعنی این جمله از نگاه موتورهای جستجو هیچ بار معنایی ندارد در حالی که حداقل چهار نکته مهم در آن بود!
برای اینکه بهتر متوجه شوید، به من بگویید من اینجا چه نوشتهام؟
همانطور که شما این متن را فقط یک عبارت (احتمالاً) سه کلمهای میبینید، موتور جستجو هم جملهی اول را یک عبارت چند کلمهای میبیند!
عبارت بالا که به زبان چینی است، معادل «من خدا را دوست دارم» است. این میتوانست به عنوان یکی از علاقهمندیهای من معرفی شود اما فقط یک عبارت شامل سه کلمه دیده شد.
همانطور که میدانید ما تا به حال دو نسل از وب را پشت سر گذاشتهایم:
۱- وب ۱ یا وب سنتی: همان وبی که آقای «تیم برنرزلی» اختراع کرد و حاوی یک سری صفحات ساده که در آنها متن و عکس بود، همین!
۲- وب ۲ یا اشتراکی: وبی که ظهور شبکههای اجتماعی (Social Networks) را شاهد بودیم و کاربران با استفاده از اشتراک هر نوع داده، یک لذت خاصی از وب بردند و میبرند.
اما یک وب دیگر در راه است به نام «وب ۳ یا وب معنایی» (Semantic Web):
در وب ۳ ما به دنبال این هستیم که صفحات به طور کامل برای موتورهای جستجو و هر نوع موتور تحلیلگر دیگر، شناخته شده باشد و همان جمله که در بالا گفتم فقط یک سری کلمهی ساده در نظر گرفته نشود!
خوب، حالا میشود آنتولوژی و RDF را بهتر معرفی کرد!
برای آشنایی با این مفاهیم، من بخشی از کتاب «نمایهسازی» که به تازگی آماده کردهام را اینجا قرار میدهم. اگر دانشجوی رشته کامپیوتر و به خصوص، برنامهنویس هستید، پیشنهاد میکنم این کتاب الکترونیکی را از طریق لینک زیر دانلود و مطالعه کنید:
دانلود کتاب نمایهسازی؛ گردآوری شده توسط حمید رضا نیرومند
آنتولوژی چیست؟
آنتولوژی در لغت از دو کلمه onto به معنی «هستی» و logy به معنی «مطالعه» تشکیل شده است. ریشه آنتولوژی در فلسفه است و به ارسطو نسبت داده میشود. در علوم کامپیوتر و در حوزه وب معنایی، آنتولوژی مفهوم کلمات و ارتباط بین آنها در حوزهای که مورد استفاده قرار میگیرند را نشان میدهد. امروزه با حجم عظیمی از اطلاعات مواجه هستیم. به منظور دستیابی مؤثر به اطلاعات، به سیستمی نیاز است که بتواند به طور مناسبی، اطلاعات را از وب استخراج کرده و به طور مناسبی به کاربران ارائه دهد، اما این کار به سادگی میسر نمیباشد. آنتولوژی به وجود آمده است تا این مشکلات را مرتفع سازد.
روشهای معنا بخشیدن به صفحات وب
- XML
- URI
- RDF
XML چیست؟
XML مخفف Extensible Markup Language و به معنی «زبان نشانهگذاری قابل توسعه» است.
فایل XML یک فایل متنی ساده و یک پایگاه داده قابل حمل به حساب میآید.
در این زبان تگها توسط برنامهنویس تعریف میشود و خود زبان، تگهای مشخصی ندارد. (پس یعنی دیگران هستند که زبان را «توسعه» میدهند. پس این، یک «زبان قابل توسعه» است)
معمولاً هر تگِ والد، نمادِ یک موجودیت و تگهای داخلی، صفات آن موجودیت یا همان سرستونها در پایگاه داده هستند.
این زبان امروزه در تمامی نرمافزارها برای انتقال اطلاعات یا تنظیمات از یک محل به محل دیگر کاربرد دارد.
توضیحی در مورد تفاوت پسوند doc با docx:
خیلیها سؤال میکنند که این پسوند x که انتهای پسوندهای آفیس از نسخه ۲۰۰۷ به بعد اضافه شد (docx و xlsx و pptx و...) به چه معناست؟
برای اینکه بهتر درک کنید، یک مثال از تستا بزنم:
ما در تستا ۲ در مقطعی نیاز پیدا کردیم که مدرس از یک آزمون در تستایی که روی سیستمش نصب کرده، خروجی بگیرد و آن خروجی را به تستایی که روی سایتش نصب کرده بارگذاری کند. من در آن زمان هر چند نام XML را شنیده بودم، اما درکش برایم سخت بود. بنابراین به سراغ XML نرفتم و خودم یک سری قوانین کلی در نظر گرفتن و مشخصات و سؤالات آزمون را با آن قواعد در یک فایل متنی ساده ذخیره کردم. مثلاً خروجی تستا ۲ را ببینید.
اگر به این فایل نگاه کنید، خواهید دید که یک سری عدد آنجا خط به خط هست. فرض کنید شما بخواهید یک نرم افزار بنویسید که خروجی تستا را بگیرد و آزمون آنرا برگزار کند. از من میپرسید آن اعداد چیست؟ مثلاً عدد ۱ که در خط چهارم است، نماد فعال بودن آزمون است یا نماد نمایش داده شدن نمرات بعد از آزمون یا...؟ اگر بگویم من خودم هم یادم نمیآید شاید باور نکنید! باید بروم کدها را تحلیل کنم بعد به شما بگویم... اگر من یک نرم افزار دیگر هم مینوشتم و شما از آن سؤال میکردید باید میرفتم کدهای نرم افزار دوم را هم بررسی میکردم بعد به شما آموزش میدادم که هر خط برای چیست... دقت کنید: به خاطر معنا نداشتن کلمات، نه تنها خود برنامهنویس ممکن است به اشتباه بیفتد، کسی هم که میخواهد با آن فایل کار کند بدتر به اشتباه میافتد و از آن بدتر اینکه این قوانین ممکن است در یک نرم افزار دیگر فرق کند!! دقیقاً مشکلی که برنامهنویسان با آفیس داشتند! فرض کنید مثلاً نرم افزار OpenOffice که یک آفیس رایگان است میخواست فایلهای doc را بخواند. باید میرفت از برنامهنویس Word میپرسید آقا این اعداد که نوشتهاید هر کدام چه ویژگیای از این فایل ورد است؟ تعداد صفحاتش؟ تعداد لغاتش؟ برنامهنویس مثل من ممکن بود یادش برود اعداد هر خط نماد چیست... حالا فکر کنید میخواست پسوند xls (اکسل) را هم پشتیبانی کند! باید میرفت سراغ برنامهنویس Excel میپرسید: آقا! این اعداد در فایل شما چه معنیای دارد؟ او هم احتمالاً یادش نمیآمد و باید میرفت کدها را تحلیل میکرد...
این شد که XML که زبان مشترک برای فایلهای پایگاهدادهای قابل حمل است به وجود آمد.
برای درک تفاوت فایل قبلی با فایلی که با XML نوشته شده، به خروجی تستا ۳ نگاه کنید. این همان آزمون بالاست، اما ببینید همه چیز چقدر قشنگ با تگی که آنرا معنا میبخشد احاطه شدهاند! حالا آن عدد ۱ که در خط چهارم است را شما هم میتوانید بفهمید که چیست! احسنت، نماد رندوم بودن سؤالات آزمون است...
حالا میفهمید این x در انتهای docx نماد چیست... بله، نماد XML. یعنی خروجیهای آفیس هم از آن نسخه به بعد با XML نوشته شد تا درک و کار با آن بسیار بسیار آسانتر از یک فایل با قوانین نامشخص باشد.
مثال: جداول موجود در پایگاه دادهی یک کتابخانه به شکل زیر است، از دادههای آن یک خروجی XML بگیرید.
Books
bid | Code | ISBN | title | author | publisher | pubDate |
1 | 1001 | 978-964-531-102-3 | Learn Internet | Hamid Reza Niroomand | Aftabgardan | 2015 |
2 | 1002 | 978-964-531-302-1 | C# in 24 Hours | Qomi | Naqous | 2010 |
Members
mid | Code | FirstName | LastName |
1 | 100 | Ali | Hasani |
2 | 101 | Hojjat | Rahimi |
1001
< publisher >Aftabgardan publisher >
1002
< publisher >Naqous publisher >
به همین صورت، مانند بالا ادامه دهید...
…
URI چیست؟
مخفف Uniform Resource Identifier و به معنی «شناسه یکشکل منابع» و شناسه یا آدرسی است که از روی اجزای آن میتوان اطلاعات کافی در مورد آن منبع از جمله رده یک شی و ردههای بالاتر آن به دست آورد.
مثالی از یک URL بدون بهکارگیری مفاهیم وب معنایی:
http://aftab.cc/linkestan/showlink.php?id=1400
از روی این آدرس نمیتوان فهمید که این لینک در مورد چه چیزی است.
همان لینک با بهکارگیری مفاهیم وب معنایی:
http://aftab.cc/linkestan/link/pdf/learn-c-sharp-in-24-hours
از روی این لینک میتوان فهمید که لینک به یک pdf در مورد آموزش C# است.
URL چیست؟
مخفف Uniform Resource Locator و به معنی «مشخصکنندهی موقعیت منبع به صورت یکشکل» است که یک نوع URI به شمار میآید. منظور از URL همان آدرس عکسها و ویدئوها و صفحات (منابع) روی اینترنت است.RDF چیست؟
مخفف Resource Description Framework و به معنی «چهارچوب توصیف منابع» است.
زبانی است که به لغات یک صفحه برای موتورهای جستجو معنا میبخشد و ارتباط بین لغات را مشخص میکند.
با استفاده از XML میتوانیم موجودیتهای مختلف و صفات آنها را تگگذاری کنیم اما معنای آنها را نمیتوانیم بیان کنیم به عنوان مثال: اگر کسی برچسب قیمت را با PRICE نشانهگذاری کند و شخص دیگری با COST نشانهگذاری کند هیچ راهی برای فهم مترادف بودن این دو عبارت به وسیله XML وجود ندارد، اینجاست که RDF به کار میآید.
هر عبارت RDF به صورت یک سه-تایی (Tripple) بیان میشود: فاعل،گزاره، مفعول.
۳ موضوع اصلی در RDF
1- Subjects: فاعل جمله
2- Predicates: گزاره یا فعلی که فاعل انجام میدهد.
3- Objects: مفعول یا اسمی که جانشین مفعول شده است و کار، روی آن انجام میشود.
مثال:
مزایای RDF نسبت بهXML :
1- RDF یک فهم مشترک از یک مفهوم واحد را ارائه میدهد زیرا گاهی اوقات ما برای یک مفهوم از دو لغت متمایز استفاده میکنیم یا بلعکس از یک لغت برای دو مفهوم متفاوت استفاده میکنیم.
2-RDF بین مفاهیم در وب و دنیای واقعی ارتباط برقرار میکند.
مثال: جمله «آقای تیم برنزلی، وب را اختراع کرد» را به صورت RDF نمایش دهید.
<وب><اختراع کرد><آقای تیم برنزلی>
روش اعمال RDF به یک صفحه با HTML5
مثال: عبارت [نام من حمید رضا نیرومند است. من ایران را دوست دارم. کتاب مورد علاقه من «آینده خود را خلق کنید» نوشته «برایان تریسی» است] را به صورت HTML5+RDFa بنویسید؟
1- در تگ html با استفاده از صفت prefix نسخه rdf ای که استفاده میکنید را تعیین کنید. (این آدرس در حقیقت آدرس یک Vocabulary است و به موتور جستجو میفهماند که کلماتی که شما برای معنا بخشیدن به عبارات استفاده کردهاید از آن «فرهنگ لغات» یا «فضای نام» انتخاب شده. مثلاً وقتی میخواهید بگویید «ایران»، یک علاقهمندی برای «حمید رضا نیرومند» است، از چه کلمهای استفاده کردهاید و کجا تعریف شده که این کلمه به معنی علاقهمندی است؟ مثلاً دیکشنری که من در کد بالا معرفی کردهام را ببینید)
2- در تگ body (یا هر تگ کلیِ دیگر) یک صفت about اضافه کرده و نام فاعل (یا یک آدرس اینترنتی در مورد فاعل) که این صفحه در مورد آن است را بیان کنید.
3- در صفحه، کلمات مهم مانند نام شخصیت، نام کتاب، .. که با فاعل رابطهای دارند را با تگی مانند احاطه کنید و به این تگ یک صفت rel (مخفف relation به معنی رابطه) اضافه کنید و در مقدارِ آن، رابطهی آن کلمه با فاعل را بنویسید. (مثلاً «کتاب آینده خود را خلق کنید» به عنوان interest یعنی علاقه مندی برای صاحب این صفحه معرفی شده)
4- اگر کلمهای در صفحه بود که صفت فاعل بود، آنرا با تگ span احاطه کنید و یک صفت property به آن اضافه کرده و بگویید که این کلمه چه صفتی برای فاعل است. (مثلاً «حمید رضا نیرومند» یک nickname یا اسم و فامیل برای فاعل به حساب میآید)
نکته: توجه کنید که نام صفات و ارتباطات باید حتماً در vocabulary که در ابتدای صفحه به آن آدرس دادهاید وجود داشته باشد.حمید رضا نیرومند