Семантическая паутина — что мы можем делать уже сейчас
Буквально только что в топе проскочила замечательная статья "Элементы семантической паутины". Начал писать на нее ответ, но он получился слишком большим, поэтому выделяю его в отдельный топик.
Итак, большинство комментариев делится на две категории: «Да ну, рядовому юзеру семантическая разметка информации непонятна, недоступна, и соответственно, он не будет ей заниматься» и «Да ладно, все будет хорошо, как-нибудь добредем то этого светлого будущего».
Я считаю, что правы и те, и те, и у нас, у тех, кто считает «семантическую паутину» желанным будущим, есть возможности ускорить его приход.
Достижение критической массы
ПМСМ, нельзя ставить целью повсеместный переход на использование семантических технологий одномоментно, или за какое-то короткое время. Но мне кажется, что энтузиастам имеет смысл обратить свое внимание на разработчиков и используемые ими инструменты. Как только возможность (полу-)автоматического добавления семантической разметки к выдаваемой информации станет дешевой (по затратам труда, умственных усилий и времени), очень многие разработчики начнут это делать, даже не ожидая немедленной отдачи. Что, в теории, должно привести к образованию критической массы семантической информации в Сети и породить бум в написании обработчиков такой информации, агентов, и т.п. Посмотрите на мир веб-сервисов. Когда-то Microsoft натужно продвигал свой SOAP, а сейчас с тобой нигде разговаривать не станут, если ты никогда не писал SOAP или REST сервисы. Кстати, тоже попытка упорядочения информации, и не совсем безуспешная.
Какие такие инструменты?
Очень многие хабралюди так или иначе причастны к созданию и публикации информации в Сети. Вопрос о том, насколько это уникальная и значимая информация, пока оставляем в стороне. Скажем, к созданию и публикации контента. Вопрос: сколько людей делают это по-старинке, вручную? Т.е. открывают vim, emacs, или, не приведи Боже, notepad.exe и тупо пишут HTML страницы, а потом закачивают их по FTP на сайты? Немного, правда?
Уже довольно давно подавляющее большинство контента перед публикацией проходит через тот или иной вид CMS — Content Management System. Сюда же относятся движки блогов и прочего. Или же, если мы сами пишем «движки сайтов», то мы сами создаем такие системы.
CMS
Большинство популярных CMS — продукты с открытым кодом. В принципе, нет никаких препятствий для написания расширений для них, которые облегчат их пользователям создание семантической разметки для публикуемой информации. Более того, очень многие системы уже так или иначе этим занимаются. Самый примитивный пример — тэг <lj-user> в ЖЖ. Очень многие календарные системы используют микроформат hCalendar (см. статью "Элементы семантической паутины").
Ради интереса поставьте себе расширение к Огнелису Operator и погуляйте по сети — увидите много интересного.
А теперь представьте, что в ЖЖ, WordPress, Drupal, и т.д. есть код, который может реагировать на некие спец-тэги (person, event, location), и т.д. Выгоды для пользователей — облегчение форматирования их текстов. Выгоды для семантической связности сети — огромные. Я сейчас набираю этот текст в Хабраредакторе, и для ссылок использую простые тэги <a>. А если бы кнопка "<a>" в Хабраредакторе сразу же вставляла микроформат ссылки (есть специальная онтология на эту тему, забыл, как называется, и лень искать сейчас), то семантический агент, читающий эту страницу, смог бы связать меня, эту статью, статью, на которую я отвечаю, ссылки на литературу, и т.д., тем самым создавая основу для машинного анализа этой информации.
Для разработчиков
Тут размахнуться можно еще шире, возможностей очень много. Попробую описать один пример, который я придумал в процессе написания этой статьи.
Я за свою жизнь написал много веб-приложений на связке технологий Spring MVC (или WebFlow) + Spring Framework + Hibernate + база данных. Достаточно стандартный набор в мире Джавы. Общая идея стандартна — доменные объекты каким-либо образом доставляются до уровня презентации, где и трансформируются в HTML. Придумалась идея семантического расширения для Spring, которая будет состоять из следующих частей:
- @Аннотации, позволяющие поставить доменные классы и их поля в соответствие с элементами некой онтологии
- Репозитарий используемых онтологий (не совсем уверен пока для чего это нужно, но инстинкт подсказывает, что нужно)
- Библиотека JSP-тэгов, которая бы отрисовывала нужные значения в нужном (семантическом) виде
- Может, еще какое-то расширение стандартного Spring-овского класса ModelAndView, которое бы автоматически распознавало сущности в модели и что-то семантическое с ними делало
Просьба громко не смеяться, я уже писал, что идея возникла буквально только что, тут еще думать и думать.
Рядовой Итого, или «а зачем мне это нужно»
Итак, я предлагаю энтузиастам сосредоточить усилия не на конечных пользователях, а на средствах разработки и публикации. Цель — создание некой критической массы сематической информации в Сети. Выгоды — самые огромные, и совсем не только для монстров типа Гугла. Для нас, разработчиков, это — возможность оказаться в струе новой революции в Сети и все связанные с этим коврижки — самореализация, гарантированные рабочие места, широкое поле для стартапов, и т.д. По-моему, оно того стоит.