گوگل آنالیزر::تنها سرویس نمایش همزمان کلمات جستجو شده کاربران

خیلی از ویژگی های جدید گوگل ما را هیجان زده و خوشحال کرده است اما این یک چیز دیگری است
گوگل چند ماه پیش خبر راه اندازی یکی دیگه از ویژگی های جدیدش را داد یعنی Recipe View! یانمایش دستور العمل!
جالب است که Menzel یکی از مدیران گوگل در اهمیت آن اینطور گفته
ما جهانی را که در آن XML حاکم باشد را دوستداریم
اما دیدیم که در عمل به دلیل قابل فهم نبودنش برای آدم این امر محقق نشد
بله از این پس اگر ما کدهای html خود را بصورت معنایی بنویسیم برای گوگل قابل فهم است
حتما شما هم کلمه میکروفیلم را (مخصوصا در فیلمهای با موضوع جاسوسی) شنیده اید
میکروفیلم چیزی نیست جز عکسبرداری ذره بینی بصورت نگاتیو یامعمولی روی فیلم
و به خاطر همین کوچک بودنش جابجایی آن به راحتی صورت می گیرد
شاید تعجب می کنید چرا بحث را یک دفعه به میکرو فیلم کشیدم
قصد دارم از میکروفیلمی صحبت کنم که در وب وجود دارد یعنی حدود 6 سال از قدمت آن می گذرد
البته با اسم دیگری یعنی میکروفرمت که با عنوان این مقاله یعنی وب معنایی پیوند خورده است
از این پس گوگل هم میکروفرمت را پشتیبانی می کند  پس باید منتظر باشیم تا  میکروفرمت هم  جایگاه خودش را پیدا کند


اما اهمیت آن در چیست


میکروفرمت یک رابطه درک متقابل جملات انسان و ماشین است


اگر بخواهیم اطلاعات را روی وب برای ماشین قابل فهم کنیم (مثلا رباتهای جستجوگر مثل گوگل بات) ما میایم فرمت را xml می گیریم  مثلا یک نمونه آن را شما میتوانید در آدرس زیر ببینید


 http://mihanagahi.com/sitemap.xml


که اگر در IE باز کرده باشید بصورت زیر خواهد بود


همانطور که می بینید برای آدم اصلا قابل فهم نیست



چرا که سایت مپ  تنها  برای گوگل بات و بصورت معنایی و به زبان نزدیک ماشین تعریف شده
در حالیکه میکروفرمت  زبان ماشین را با زبان قابل فهم ما ترکیب می کند
بنابراین در آینده و  با توسعه آن  نیازی به نوشتن فایل جداگانه به نام sitemap.xml برای گوگل و یک صفحه جدا html ای به نام نقشه سایت برای کاربران نداریم
و با تلفیق آن در کد به وب معنایی می رسیم (تقریبا مشابهRSS چرا که گوگل اعلام کرده RSS یا فیدخوان  برایش حکم sitemap را دارد)


در اینجا می خواهم بطور مختصر در مورد میکروفرمت ها صحبت کنم. فقط در حد یک معرفی اولیه.
خوب موضوع مربوط می شود به بحث وب معنایی.
می دانیم که در وب معمولی، داده ها در قالب مستنداتی که برای انسان قابل فهم هستند ارائه شده اند، اما در وب معنایی بحث این هست که می خواهیم یک وبی از داده ها داشته باشیم که این داده ها برای ماشین قابل فهم باشد.
در وب معنایی، اساس بیان اطلاعات بر مدل داده RDF می باشد. یعنی بعنوان مثال، همانطور که در سیستم های اطلاعاتی رایج، مدل داده رایج، مدل رابطه ای می باشد و نهایتا همه داده ها (البته منظور داده های persistent است) در جداول بانک اطلاعاتی ذخیره می شوند، در وب معنایی هم مدل داده استاندارد، مدل RDF است که یک مدل داده گرافیکی ساده است. عناصر اصلی این مدل داده هم که سه گانه یا همان triple می باشند.
 
حالا وقتی در عمل می خواهیم داده های روی وب را بصورت قابل فهم برای ماشین عرضه کنیم دو روش کلی وجود دارد:


  •  روش اول: داده ها را به دو شکل، یکی قابل فهم برای انسان (مثلا در فایلهای XHTML) و دیگری قابل فهم برای ماشین (مثلا فایلهای RDF) منتشر کنیم.



  • روش دوم: داده ها را به شکلی ارائه کنیم که هم برای انسان قابل فهم باشد و هم برای ماشین. مثلا به نوعی XHTML را با RDF ترکیب کنیم.



 در واقع میکروفرمت ها، یکی از راه کارهای مبتنی بر روش دوم هستند. حسن این راهکار آن است که منتشر کنندگان داده، فقط یک نسخه از داده خود را منتشر می کنند.  در روش اول، از آنجا که داده ها به  دو شکل ارائه می شدند طبیعتا هزینه انتشار، بروزرسانی و حفظ جامعیت و صحت داده ها بیشتر است. اما در روش دوم این هزینه ها به مراتب کمتر است.
یکی دیگر از راهکارهای مبتنی بر روش دوم، که بر ایده تعبیه عبارات RDF در داخل کدهای XHTML استوار است، استفاده از RDFa می باشد. انشالله در آینده، در مورد RDFa هم صحبت خواهم کرد.


میکروفرمت ها چه می باشند؟

میکرو فرمت ها در واقع یکسری مدل داده ساده هستند که هر کدام برای بیان داده های یک موضوع خاص ارائه شده اند. بعنوان مثال، موضوع رزومه کاری را در نظر بگیرید. طبیعتا بر روی وب داده های زیادی وجود دارد که مربوط به رزومه افراد مختلف می باشد. طبیعتا هر کس در نحوه انتشار داده های رزومه خودش کاملا مستقل عمل کرده و هیچ قاعده خاصی رعایت نشده است. ممکن است افراد مختلف برای بیان تحصیلات، تجربیات، مهارت ها و اطلاعات تماس خود از عبارت ها و کلمات متفاوتی استفاده کنند و این داده ها را به شکلهای مختلفی ارائه کنند. ما انسانها، به راحتی می توانیم این تنوع عناوین و مفاهیم را مدیریت کنیم و اطلاعات مورد نظر خود را از آنها استخراج کنیم. اما اگر می خواهیم ماشین هم این داده ها را بخوبی بفهمد و بتواند اطلاعات مختلفی را از آنها استخراج کند، طبیعتا باید به شکلی این تنوع و تعدد را مهار کنیم. میکروفرمت ها در واقع همین کار را می کنند. 

میکروفرمت های مختلفی وجود دارند (توسط یک community خاص از متخصصان وب معرفی می شوند) که برای مقاصد مختلف تعریف شده اند. بعنوان مثال:



  • hCalendar: برای بیان داده های مربوط به رویدادها (مثلا می خواهیم برنامه زمانی یک کنفرانس را بیان کنیم. اینکه کنفرانس از چه تاریخی تا چه تاریخی برگزار می گردد. هر جلسه از چه ساعتی تا چه ساعتی؟ ...) 





  • hCard: برای بیان اطلاعات تماس (Contact Information) نظیر نام و نام خانوادگی، آدرس، ایمیل، شماره تلفن، صندوق پستی 





  • hResume: برای بیان داده های مربوط به رزومه کاری و CV





  • hReview: برای بیان review ها. مثلا یک سایت که به ارائه اطلاعات گوشی های تلفن همراه می پردازد، ممکن است این امکان را برای کاربرانش فراهم کند که به review گوشی های مختلف بپردازند و نظرات خود را در مورد گوشی ها اعلام کنند. خوب این اطلاعات می تواند در قالب میکروفرمت hReview در صفحات آن سایت نمایش داده شود.



هر کدام از این میکروفرمت ها یک مجموعه مشخص و استاندارد از کلمات یا بهتر بگویم، یک مجموعه از کلاسها را برای بیان اجزای مختلف داده ارائه می کنند.

 

یک مثال:

قطعه کد XHTML زیر را در نظر بگیرید

 

<h1>
<img class="photo" src="http://google724.com/google-analysts.com.gif">
<a title="google724.com" href="http://google724.com/">
google724.com
</a>
</h1>



این کد در داخل مرورگر بدین شکل نمایش داده می شود:(با کلیک بر روی آن می توانید خود سایت را بصورت همزمان ببینید)

 


طبیعتا وقتی یک انسان این صفحه را مشاهده می کند می تواند مفهوم اطلاعات ارائه شده را درک کند. مثلا شما براحتی توجه میشوید که این لینک یک سایت است همراه با لوگوی آن

اما ماشین چنین توانایی ندارد.(گوگل با انجام کلی آنالیز به این امر می رسد)

 

حالا اگر بخواهیم همان اطلاعات را با استفاده از میکروفرمت ها نمایش دهیم می توانیم کد فوق را با استفاده از میکروفرمت hCalendar بدین صورت بیان کنیم:

 

<h1><span class="author vcard">
<img class="photo" src="http://google724.com/google-analysts.com.gif">
<a class="url fn org" title="google724.com" href="http://google724.com/">
google724.com
</a>
</span>
</h1>



همانطور که می بینید کدهای مربوط به میکروفرمت در لابلای کدهای XHTML تعبیه شده اند. این کدها در واقع همان کدها هستند که البته شکلشان کمی فرق کرده است. اما چیزی بیش از Subject-Property-Value نیستند.

اگرچه کد کمی پیچیده شده است اما با کمی دقت می توانید مفهوم آن را درک کنید. در اینجا کل اطلاعات در داخل یک المنت بیان شده که این المنت از کلاس author vcard می باشد. در داخل این المنت، باز هم اطلاعات در قالب المنتهایی بیان شده اند که هر یک دارای یک خصیصه class می باشند که مقدار آن یک کلمه کلیدی است که از میکروفرمت مورد استفاده استخراج شده است. بعنوان مثال در نسخه قبلی کد، لینک سایت به شکل کاملا ساده و بی ساختار ارائه شده بود اما در این نسخه در داخل این  لینک کلاسی قرار دارد که  این خصیصه class مقدار  برابر url fn org دارد که مشخص کننده این است

که در این لینک آدرس اینترنی و نام  یک سازمان قرار دارد

 گوگل آن را بصورت یک آرایه با پارامترهای زیر می بیند



Array
(
[0] => Array
(
[fn] => google 724.com
[photo] => http://google724.com/google-analysts.com.gif
[org] => google 724.com
[url] => http://google724.com/
)

)



بنابراین در واقع در نسخه دوم، اجزای مختلف داده توسط کلاسهای مختلفی نشانه گذاری شده اند. این کلاس ها در داخل میکروفرمت مورد استفاده، تعریف شده اند. 

کد فوق، در داخل مرورگر بدین شکل نمایش داده میشود که مشابه حالت قبل است:

 


بنابراین باز هم انسان می تواند این صفحه را مشاهده و اطلاعات آن را درک کند.

 اما علاوه بر انسان، حالا ماشین هم می تواند اطلاعات این صفحه را بفهمد چرا که این بار این اطلاعات دارای ساختار و همچنین syntax مشخص و استانداردی هستند.

 

میکروفرمت ها چه کاربردی دارند؟

کاربرد اصلی میکروفرمت ها همان است که در ابتدای بحث به آن اشاره کردم. یعنی داده ها را برای ماشین قابل فهم کردن. طبیعتا وقتی داده ها با استفاده از میکروفرمت ها برای ماشین قابل فهم شوند، امکان بازیابی و جستجوی معنایی آنها نیز فراهم می گردد. موتورهای جستجو می توانند صفحات وب را جستجو کرده و اطلاعات معنایی را از آنها استخراج کنند. یعنی سه گانه های RDF را که در قال میکروفرمت بیان شده اند استخراج کنند و آنها در مخازن خود ذخیره کنند و برای پاسخگویی به تقاضاهای کاربران از این اطلاعات استفاده کنند. بعنوان مثال اگر اطلاعات در مثال فوق با استفاده از میکروفرمت ارائه نشده بود، موتور جستجو برای استخراج آن اطلاعات، باید پردازش متن پیچیده ای انجام می داد. اما با استفاده از میکروفرمت ها، استخراج اطلاعات توسط ماشین و برنامه های کاربردی خیلی ساده می شود. در حال حاضر موتورهای جستجوی نظیر Yahoo و Google عملا از میکروفرمتها استفاده می کنند و اطلاعاتی را که توسط این قالب در صفحات وب تعبیه شده اند استخراج کرده و برای عمل جستجو مورد استفاده قرار می دهند.

بنابراین اگر شما هم می خواهید اطلاعاتی نظیر اطلاعات تماس یا رزومه کاری خود را بر روی وب منتشر کنید، خوب است که از میکروفرمت ها (یا راهکارهای مشابه نظیر RDFa) استفاده کنید تا آنها را قابل دسترس تر نمایید.

بعنوان یک مثال دیگر، شبکه اجتماعی LinkedIn که یکی از شبکه های اجتماعی معتبر است برای بیان اطلاعات پروفایل افراد از میکروفرمت hResume استفاده می کند.

 

بنابراین میکروفرمت ها راهکار مناسبی برای نمایش داده ها بر روی وب به شکل قابل فهم برای ماشین، می باشند. اما دو نکته را نباید از یاد برد:


  1. میکرو فرمت ها از نظر open بودن وضعیت خیلی مطلوبی ندارند. یعنی اینطور نیست که هرکسی بتواند از vocabulary دلخواه خودش استفاده کند. بلکه یکسری میکروفرمت مشخص با vocabulary مشخص توسط یک community تعریف می شوند و دیگران محدود به استفاده از همانها می شوند. خوب این موضوع با توجه به دیدگاهی که در Linked Data مطرح است، مساله مثبتی نیست.

  2. نکته دیگر آنکه همانطور که از توجه به نمونه کد فوق مشخص می شود در میکروفرمت ها، اجزای داده اگرچه توسط تگها و خصیصه ها جدا شده و به هر یک یک کلاس تعلق می گیرد اما خبری از URI ها نیست و اینطور نیست که هر جزء داده دارای یک URI باشد. در نتیه این داده ها از بیرون، قابل ارجاع نمی باشند. در نتیجه میکروفرمت ها قابلیت Linking ندارند. این موضوع، یعنی قابلیت متصل کردن داده های مختلف به یکدیگر، یکی از اساسی ترین مفاهیم در بحث Linked Data است. بنابراین می توان این را یکی از کاستی های میکروفرمت ها در نظر گرفت.


 یک نکته: 

شاید برایتان این ابهام پیش آید که نام میکروفرمت ها چیزهایی شبیه hCalendar و hCard است (با حرف h شروع می شوند) اما در داخل کدها بجای حرف h از  v استفاده می شود. مثلا در داخل کدهای مربوط به میکروفرمت hCard از کلاسی با نام vCard استفاده می شود. چرا؟

این پرسش را بطور موردی در مورد hCard  جواب می دهم در موارد مشابه هم پاسخ به همین ترتیب است.

پیش از آنکه اصلا میکروفرمت ها ارائه شوند (با این مفهومی که امروزه دارند و کاربردشان در بستر وب معنا پیدا می کند)، استانداردهای مختلفی برای بیان داده های حوزه های مختلف وجود داشته است. بعنوان مثال استاندارد vCard که در RFC 2426 توصیف شده است، برای بیان اطلاعات تماس  استفاده می شده است. همین الان هم بسیاری از گوشی های موبایل برای ذخیره و انتقال اطلاعات تماس از vCard استفاده می کنند. مثلا وقتی شما اسمس هایتان را از روی گوشی نوکیای خود بر روی کامپیوتر منتل می کنید این اسمس ها در قالب فایلهایی ذخیره می شوند که در داخل آنها از قالب vCard استفاده شده است.

پس این از vCard. حالا hCard در واقع صرفا یک نگاشت از عناصر vCard به عناصر HTML می باشد. بهمین خاطر در سطح کد، از حرف v و نه حرف h استفاده شده است. البته قبول دارم که به نظر می رسد اگر از حرف h استفاده می شد بهتر و خواناتر بود و ابهامی هم پیش نمی آمد.

 

اگر صفحه ای دارید که فکر می کنید میکروفرمت در آن ‌لحاظ شده می توانید خروجی آن را در آدرس زیر ببینید

http://google-analysts.com/microformats

مثلا می توانید برای تست همین آدرس http://google724.com را در آن وارد کنید و خروجی گفته شده را در آن ببینید

 اگر هم می خواهید با میکرو فرمت ها بطور دقیقتر آشنا شوید می توانید به سایت رسمی آن مراجعه کنید.

اگر هم حوصله کتاب خواندن دارید می توانید کتاب زیر را مطالعه کنید:

Microformats, empowering your markup for Web 2.0

by: John Allsopp

2007