Semantic MediaWiki
Комментариев нет 27 февраля 2011, 17:38 • CMEngines, Работа
Я уже неоднократно рассказывал о своих боевых действиях на полях сражений с MediaWiki и на этот раз речь пойдёт о ней же, но теперь с семантическими наклонностями. Вчера я целых полдня убил на то, чтобы понять, почему возникает ошибка экспорта семантических данных в RDF и как исправить эту проблему. Причина бага оказалась в одном из расширений, которое я выкинул — всё равно его весьма мало кто использовал бы.
Теперь о самой семантической вики — в принципе всё описано в руководстве пользователя, но русский перевод там не очень полный, так что приведу примеры использования прямо здесь.
Почему я вообще этим озаботился? Ответ прост — благодаря профессору А. А. Веряеву. Анатолий Алексеевич — он доктор наук — часто изучает со студентами всякие «новомодные штучки» и одно время они сообща разбирались с вики-технологией. После же миграции данных с WackoWiki, в которой и содержались наработки его студентов, я лично поставил его в известность об этом и обрисовал возможности нового движка и его расширений. Семантической частью он заинтересовался — ибо он как раз начал со студентами разбираться с семантическим вебом. Он спросил о примерах и в ответ я мог на тот момент показать только те, что находились на официальных сайтах, посвященных семантической вики. Этим я не удовлетворился — мне же теперь и самому стало интересно, насколько просто и качественно можно сделать настоящие работающие примеры использования семантических связей между вики-статьями. Для примера в качестве базовых я взял статьи о Stellarium, Celestia и KStars.
Итак, начнём со статьи о Stellarium'е — если не обращать внимание на копию устаревших данных из большой Википедии, то сразу становится понятным, где можно ввести характерные свойства-описания данной программы. Сами свойства можно задавать в двух форматах: «видимом» и «невидимом». Во втором случае читателю ничего не выводится, в первом — выводится значение свойства.
Пример задания свойства и его значения в «видимом» формате:
[[Название программы::Stellarium]]
Если нужно еще и поставить разные ссылку и название, то запись слегка изменится (GNU GPL в этом примере будет являться ссылкой):
[[Лицензия:GNU GPL|GNU General Public Licence]]
Теперь тоже самое, но в невидимом формате:
{{#set:Название программы=Stellarium}}
{{#set:Лицензия=GNU GPL}}
Как видно, свойства-описания, или лучше будет сказать факты, о Stellarium'е заполнять довольно просто. Аналогично всё заполняется и для статей о Celestia и KStars в нашем случае. В общем случае нужно аккуратно описать все факты о каждой статье в базе знаний.
Я поставил в настройках вики показ фактов о статье, если они есть, поэтому после определения оных в конце статьи я вижу такую картинку:
Если заглянуть в свойства статьи, то увидим похожую картину:
После определения фактов можно двигаться дальше — создавать запросы на SPARQL.
Приведу пример: нам нужно получить основные характеристики всех виртуальных планетариев из раздела «Свободное ПО» (категория — в нотации MediaWiki). Тогда запрос будет вида:
{{#ask: [[Category:Свободное]] [[Тип программы::виртуальный планетарий]]
| ?Последняя версия
| ?Операционная система
| ?Написана на
| ?Используемая технология
| ?Лицензия
}}
На выходе мы получим такую картинку:
Удобно, не правда ли? А что будет, если описать факты о двух других — весьма разных статьях, но при этом имеющим связь? Как пример: факты о Джоне Бэкусе и созданном им языке программирования ФОРТРАН.
Если теперь заглянуть в свойства статьи о Джоне Бэкусе, то можно увидеть семантические связи:
P.S. Сдаётся мне, что самому написать семантический движок будет весьма трудным.