- PVSM.RU - https://www.pvsm.ru -
Semantic MediaWiki [1] — это расширение, ради которого стоит ставить MediaWiki: оно помогает бороться с бардаком и хаосом, который рано или поздно воцаряется в любой вики-системе.
SMW позволяет использовать вики как составную часть системы управления знаниями, с его помощью можно создавать коммерческие системы, которые сочетают простоту вики, четкость коллаборативных баз данных, и лучшее из мира Semantic Web. В общем, это вещь, более чем достойная пристального внимания и подробного обзора.
Cемантических вики-движков [2] существует довольно много. Многие из них были созданы учёными из Европы во времена, когда употребление слова «семантический» гарантировало субсидии, гранты, контракты с крупными компаниями, каждая из которых старалась быть семантичнее остальных, и публикацию в солидных журналах. Так и жили эти движки от гранта до гранта, а как только деньги на разработку заканчивались, репозитории тут же зарастали вереском и хвощом, и только стоны случайных пользователей нарушали тишину их багтрекеров. Насколько мне известно, лишь Semantic MediaWiki [1], OntoWiki [3] и Information Workbench [4] избежали этой участи, всё благодаря созданному пользовательскому сообществу и участию в разработке коммерческих компаний.
Семантические вики позволяют добавлять к вики-страницам кусочки структурированной информации, а затем дают возможность с этой информацией работать: строить запросы, выводить данные в виде различных визуализаций и даже осуществлять логический вывод (reasoning, inference). Конкретно Semantic MediaWiki (SMW) для связывания текста страницы со структурированными данными использует механизм, похожий на тэгирование, а для запросов вводит специальный язык, который будет нетрудно освоить медиавикоиду.
В основу SMW положена концепция семантических свойств [5] (для создания данных) и семантических запросов [6] (для использования данных). Пользователи аннотируют (тэгируют) статьи категориями и свойствами для того, чтобы информация становилась доступной для запросов. Рассмотрим пример: возьмем вики, посвященную путешествиям: в ней будут описаны некоторые города с их достопримечательностями и ресторанами. Страницы этой вики, соединенные гиперссылками, изобразим вот таким графом:
С помощью категорий MediaWiki [7], мы можем объединить статьи из нашего пример в несколько множеств. Категории могут вкладываться друг в друга, образуя иерархии. Для того чтобы отнести страницу к определенной категории мы добавим следующий код в текст статьи:
[[Категория:Название_категории]]
Например, в нашей вики можно выделить объекты, относящиеся к категориям Город, Страна, Населенная область, Ресторан, Достопримечательность
.
Категории являются базовым механизмом структурирования контента в MediaWiki. После установки SMW, то вы можете делать динамические выборки по категориям, например, вывести все рестораны, которые также являются достопримечательностями. Такие выборки делаются с помощью #ask-запросов
. Просто вставьте следующий код в любое место какой-нибудь вики статьи:
Запрос | Результат |
---|---|
|
Некоторые рестораны могут интересовать туристов и как достопримечательности: Le Chateaubriand, Curry 36. |
Внутренние ссылки в любой вики создаются очень просто, например в MediaWiki для этого используются двойные квадратные скобки: [[Страница1]], [[Страница2]]
. Проблема ссылок заключается в том, что они несут крайне скудную информацию: один объект связан с другим объектом, вот и всё. SMW позволяет именовать ссылки. Ссылка между рестораном и городом, в котором он находится, будет называться "Находится в
", а ссылку, ведущую со страницы ресторана на описание кухни, которую в оном подают, хорошо бы назвать "Кухня
". В терминологии SMW такие именованные ссылки называются семантическими свойствами
страницы.
Отредактируем статью, посвященную ресторану Le Chateaubriand из нашего примера и добавим туда следующий текст
Вики-разметка | Результат |
---|---|
|
Ресторан Le Chateaubriand находится в самом центре Парижа. Кухня, разумеется, французская. |
Общая формула задания свойства в Semantic MediaWiki выглядит так:
[[Название свойства::значение свойства | что выводить в тексте статьи]]
Посмотрим на наш граф связей. Если мы используем свойства для наших статей между собой, то картинка приобретает такой вид:
Теперь ссылки различимы, а значит мы можем формировать довольно интересные выборки. Например, давайте выберем все рестораны, которые находятся в Париже. Для этого в SMW используются #ask-запросы [8], а выглядят они примерно так:
Запрос | Результат |
---|---|
|
|
Обратите внимание, что условия поиска в запросе пишутся точно так же, как соответствующие свойства задавались в тексте вики-статьи. Технически запрос реализован как функция парсера [9], а немного неприятный синтаксис унаследован от MediaWiki:
{{#название функции:парам1|парам2|парам3}}
Все, что касается отбора страниц записываются в первый параметр функции.
Свойство "Находится в
" указывает на вики-страницу, иными словами, это свойство типа “Страница
". В SMW есть и другие типы. Например, тип "Дата
" пригодится нам, когда мы будем указывать время возникновения той или иной достопримечательности, тип Географические координаты
применяется для разметки геоинформации. Конечно же, нам доступен и тип “Число
", он пригодится при указании населения городов и среднесуточного количества драк в ресторанах. Обновим нашу картинку, добавив туда два свойства городов: Координаты
и Население
.
Можно написать несколько запросов, связанных с городами. Через прямую черту добавим еще пару параметров:
Запрос | Результат |
---|---|
|
У нас есть маленькие города, например Туусниеми, Калуга, Веезе, Винчи. |
|
У нас есть средние города, например
|
|
А вот наш список городов-миллионеров, возраста более пятисот лет:
|
Вот еще пример — простенький pattern-matching:
Многие города в Мексике начинаются со слова Сан:
{{#ask: [[Категория:Город]] [[Страна::Мексика]] [[Название::~Сан-*]] }}
Порой нас интересуют не столько названия страниц, отвечающих условиям запросов, сколько информация, на этих страницах представленная. Иными словами, нам хочется узнать значения каких-то семантических свойств этих страниц. Для этого можно использовать принтауты [10] (printout statements, буду рад вариантам перевода): после тела запроса перечислять интересующие нас свойства, предваряя их вопросительным знаком:
{{#ask: [[Категория:Ресторан]] | ?Количество мест | ?Время создания |?Кухня }}
Это выдаст нам симпатичную таблицу примерно такого вида:
Количество мест | Время создания | Кухня | |
---|---|---|---|
Le Chateaubriand | 100 | 1792 | Французская |
Curry 36 | 50 | 1955 | Интернациональная |
Пир.О.Г.И | 60 | 2001 | Интернациональная |
С принтаутами можно делать много разных интересностей, например выводить с учетом единиц измерения, на ходу конвертируя дюймы в сантиметры, а литры в галлоны. В нашем примере каждый принтаут выводится в виде отдельного столбца, но ведь результатом запроса может быть не только таблица…
Данные — они и есть данные, а как их выводить пользователю — решать вам. По умолчанию SMW выводит данные в виде таблиц и списков, но у вас в арсенале есть еще несколько десятков других форматов вывода [11]. Так, численные данные можно представлять графиками [12]и диаграммами [13].
Данные типа “Дата" можно выводить в виде календарей [14] и таймлайнов [15]:
Геоданные можно отображать в виде карт [16], а во всплывающих подсказках показывать значения свойств. Более того, семантически помечать можно не только точки, но и полигоны:
Некоторые форматы вывода интерактивны, например filtered
позволяет пользователям фильтровать результаты [17] по значениям семантических свойств.
Существует еще много форматов, да и написать свой не так уж сложно самому.
Кто же захочет заставлять своих пользователей учить лишнюю вики-разметку, сколь проста бы она ни была? К счастью, это не обязательно, и вполне можно получить все плюшки семантической вики так, чтобы пользователи даже и не знали, что в конфигурации вики что-то поменялось. Для этого применяются семантические шаблоны и семантические формы. Пожалуй, расскажем о них в следующей статье.
Автор: ganqqwerty
Источник [18]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/upravlenie-znaniyami/32554
Ссылки в тексте:
[1] Semantic MediaWiki: http://semantic-mediawiki.org
[2] Cемантических вики-движков: http://ru.wikipedia.org/wiki/Семантическая_вики
[3] OntoWiki: http://ontowiki.net/Projects/OntoWiki
[4] Information Workbench: https://www.fluidops.com/information-workbench/
[5] семантических свойств: http://semantic-mediawiki.org/wiki/Help:%D0%A1%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D1%82%D0%B8%D0%BF%D1%8B
[6] семантических запросов: http://semantic-mediawiki.org/wiki/Help:%D0%92%D1%8B%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86
[7] категорий MediaWiki: http://www.mediawiki.org/wiki/Help:Categories/ru
[8] #ask-запросы: http://semantic-mediawiki.org/wiki/Help:%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B
[9] функция парсера: http://www.mediawiki.org/wiki/Manual:Parser_functions/ru
[10] принтауты: http://semantic-mediawiki.org/wiki/Help:%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8
[11] форматов вывода: http://semantic-mediawiki.org/wiki/Help:%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B_%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0
[12] графиками : http://semantic-mediawiki.org/wiki/Help:Dygraphs_format
[13] диаграммами: http://semantic-mediawiki.org/wiki/Help:D3_chart_format
[14] календарей: http://semantic-mediawiki.org/wiki/Help:Calendar_format
[15] таймлайнов: http://semantic-mediawiki.org/wiki/Help:Timeline_format
[16] карт: http://www.mediawiki.org/wiki/Extension:Semantic_Maps
[17] фильтровать результаты: http://semantic-mediawiki.org/wiki/Help:Filtered_format
[18] Источник: http://habrahabr.ru/post/173877/
Нажмите здесь для печати.