Часто задаваемые вопросы

Здесь находятся некоторые часто задаваемые вопросы о Semantic MediaWiki и ответы на них.

Что такое Semantic MediaWiki?
Semantic MediaWiki (или сокращенно SMW) — это расширение популярного вики-движка MediaWiki, известного тем, что на нем работает Википедия. SMW позволяет пользователям сохранять структурированные данные на вики страницах и осуществлять запросы к этим данным из любого места вики. Таким образом, MediaWiki превращается в семантическую вики. Кроме того, есть довольно много расширений MediaWiki, которые были задуманы для совместного использование с SMW, поэтому иногда термин "Semantic MediaWiki" обозначает всю эту большую группу т.н. семантических расширений. Вам стоит попробовать эти плагины, ведь они покрывают целый ряд задач: помогают пользователям вводить данные, создают красивые визуализации данных, осуществляют импорт и экспорт данных SMW в различные форматы и даже помогают использовать Semantic MediaWiki в рамках корпоративных процессов.

Semantic MediaWiki полностью свободна и предоставляется со всем исходными кодами.

Если вы хотите узнать больше о Semantic MediaWiki, вы можете ознакомиться со справочными страницами на этом сайте или почитать Википедию (русская страничка на Википедии готовится к обогащению и пополнению).

Кто разрабатывает Semantic MediaWiki?
Первая версия SMW была сделана несколькими разработчиками из Технологического института в Карслуэ, однако затем к разработке присоединились люди со всего мира (см. Help:SMW Project). Семантические расширения разрабатываются независимо самыми разными людьми.

Насколько SMW популярна?
На данный момент на базе SMW существует около 350 живых активных вики-проектов. Невозможно узнать, сколько личных и корпоративных вики используют SMW, но, судя по количеству отзывов и багрепортов, можно понять, что это количество не меньше, чем число публичных проектов.

Есть несколько довольно известных проектов, работающих на SMW, например, SNPedia, Chickipedia, OpenEI, Wikicafe. Из русских проектов можно назвать детскую вики Летописи, а также вики «Традиция».

Как обстоят дела с производительностью SMW?
При внедрении SMW в крупные проекты всегда проводится ряд нагрузочных тестов. К сожалению, до сих пор мало кто удосужился записать результаты этих тестов. Есть две статьи на эту тему: раз, два. Несмотря на это, можно с уверенностью сказать, что уже сейчас SMW используется на многих вики, включающих в себя миллионы семантических свойств. Оптимизации иногда требуют сложные запросы и запросы, содержащие выборку картинок. Для ускорения SMW хорошо зарекомендовали себя стандартные средства кэширования для MediaWiki, такие как APC и memcached и меры, касающиеся производительности MySQL в целом, такие как увеличение размера буфера и вынос сервера БД на отдельную машину.

Как хранятся данные в SMW?
По умолчанию, Semantic MediaWiki хранит данные при помощи примерно 10 дополнительных таблиц в пределах БД MediaMiki (которая обычно является базой данных MySQL). Структура этих таблиц была спроектирована с тем расчетом, чтобы запросы к базе выполнялись максимально быстро — поэтому таблиц так много.

Начиная с версии 1.6 SMW также умеет хранить свои данные в RDF-хранилище, таком как 4store и Virtuoso. См. Help:Using SPARQL and RDF stores с руководством о том, как использовать этот функционал.

Почему в SMW не используется SPARQL в качестве языка запросов?
SPARQL является основным языком запросов, используемым в семантическом вебе, в нём огромное количество возможностей, позволяющих удобно и гибко запрашивать данные из SMW. Вдобавок он гораздо более гибкий, чем язык запросов в Semantic MediaWiki, а, кроме того, с помощью SPARQL можно было бы запрашивать данные как из вики, так и из других источников. Ну и, наконец, будь в SMW поддержан SPARQL, пользователям не пришлось бы учить еще один язык. Почему же он не используется?

Данные в SMW хранятся в структуре SQL-таблиц и было решено, что использовать SPARQL для запросов к этим таблицам было бы не лучшим решением. В первую очередь виной тому бесчисленное количество возможностей SPARQL, которые пришлось бы очень долго реализовывать в подсистеме запросов SMW.

Однако, если вы хотите использовать SPARQL в вашей вики, это возможно, если хранить данные не в SQL-таблицах, а в RDF-хранилище.

Какие знания могут быть автоматически получены с помощью логического вывода в SMW?
Одной из сильных сторон семантических систем является то, что не все знания должны вноситься вручную пользователями: некоторые могут быть выведены автоматически. Сейчас SMW поддерживает логический вывод четырёх типов:
 * вывод по иерархии категорий (если вы запрашиваете страницы, относящиеся к какой-то категории, будут выведены все страницы из её подкатегорий),
 * вывод по иерархии семантических свойств (свойства могут иметь родителей и детей, то есть являться разновидностью других свойств),
 * вывод по эквивалентности свойств (если некоторое свойство указывает на страницу-редирект, то это отслеживается и учитывается при запросах),
 * вывод по обратным свойствам (можно производить запросы в обратном порядке: не "куда указывает такое-то свойство", а "откуда оно указывает"). На странице Help:Inferencing рассказано гораздо больше про возможности логического вывода.

Вы можете добиться большей выразительности запросов несколькими способами. Во-первых, можно использовать мощь шаблонов и функций парсера MediaWiki, комбинируя их с семантическими запросами: с помощью функции #if вы, например, можете проверить, есть ли у данной страницы свойство "иметь детей" со значением больше одного и, если да, привязать эту страницу к категории "Родители". Другой способ добиться более выразительного логического вывода — это использовать для хранения семантических данных RDF-хранилище.

Почему данные, которые я только что добавил, не отображаются в результатах запросов?
Из-за внутренних механизмов кэширования MediaWiki порой происходит задержка между добавлением данных и моментом, когда они высвечиваются в результатах запросов. Некоторые пользователи просто наживают кнопку "Править" и пересохраняют статью. Есть и более удобный способ. Если вы администратор вики, то вы всегда можете нажать на вкладку Обновить, либо добавить после URL статьи &action=purge.

Если у вас есть страницы, на которых выполняются очень динамичные запросы, вам может захотеться вовсе отключить кэширование на них. Можете попробовать установить расширение MagicNoCache и добавить на страницу магическое слово " __NOCACHE__ ".

Наконец, если ваша вики совсем небольшая, возможно, вы захотите вовсе отключить кэширование. Вот здесь объясняется как это сделать. Заметим, что это довольно радикальное решение: убедитесь, что это не сказалось на производительности.

Semantic MediaWiki клёвая! Когда её уже установят на Википедию?
В Википедии есть огромное количество структурированных данных, скрытых в инфобоксах, шаблонах и категориях, и было бы очень интересно выполнять разнообразные запросы к этим данным. На самом деле, идея создания "Семантической Википедии" и была изначальным источником вдохновения создателей SMW.

Многие разработчики MediaWiki знают о существовании SMW, и некоторые отзываются довольно восторженно о её возможностях и потенциальных применениях.

А что насчет того, чтобы применить SMW на других проектах Викимедиа, например, на Викисловаре?
У фонда Викимедиа есть много проектов, которые могли бы стать намного интереснее и проще в поддержке благодаря Semantic MediaWiki, например, Викисклад, Викисловарь, Викивиды и MediaWiki.org. По разным причинам идея использовать SMW в этих проектах пока не встречает интереса со стороны фонда, в отличие от использования на Википедии.

В апреле 2012 был запущен проект Wikidata. Целью этого проекта является создание глобального хранилища структурированных данных, которое могло бы использоваться всеми Википедиями при создании инфобоксов, а также внешними агентами для собственных нужд. Проект координируется Wikimedia Deutchland. Предполагается, что Wikidata будет использовать Semantic MediaWiki в качестве бэк-энда для хранения данных. Однако синтаксис заполнения и запросов к данным в Wikidata сильно отличается от того, что имеется в SMW.

SMW уже используется на Wikimedia wiki, Wikimedia Labs, а также на Translatewiki.net (пример использования).

Какие новые функциональные возможности планируются для Semantic MediaWiki
На странице Roadmap написан план разработки Semantic MediaWiki и семантических расширений. Не стесняйтесь писать в список рассылки, если вы хотите видеть какой-то функционал в новой версии.

Как мне можно сообщить о баге/предложить фичу для SMW?
Во-первых, мы очень рады любой помощи, большое спасибо! Очень многие пользователи создают запросы на баги и фичи, реализуют небольшой функционал: на самом деле каждый разработчик начинал свою карьеру, добавляя маленькие кусочки кода, исправляющие маленькие ошибки.

Если вы хотите сообщить об ошибке или добавить патч, исправляющий какой-то баг, воспользуйтесь Bugzilla.

Если вы хотите предложить новый функционал, очень советуем сначала написать в список рассылки semediawiki-user — мы обсудим, стоит ли включать ваш функционал в ядро или лучше выделить его в отдельное расширение и посоветуем как можно улучшить ваш код.

Если вы хотите стать разработчиком, прочитайте руководство программиста.

Как еще я могу помочь проекту?
Даже если вы не разработчик, вы в состоянии помочь нашему проекту. Например, если вы используете SMW в вашей фирме, вы можете отправить нам отзыв на testimonials@semantic-mediawiki.org — мы с радостью процитируем его. Присоединяйтесь к спискам рассылки semediawiki-user и к нашему каналу #semantic-mediawiki в IRC и участвуйте в жизни SMW-сообщества, задавая вопросы и отвечая на них.

Если у вас есть блог, напишите про SMW, если у вас есть Твиттер — дайте ссылку на наш проект. Можете присоединиться к нашей группе в Facebook и LinkedIn и рассказать своим друзьям о проекте.

Какие альтернативы есть у SMW?
Мы искренне полагаем, что на сегодняшний момент не существует ни свободного, ни проприетарного решения, которое бы обладало гибкостью и функциональностью, сравнимой с SMW. Иногда Microsoft Sharepoint позиционируется как альтернатива, но вот тут вы можете ознакомиться с небольшим сравнительным анализом на эту тему.

Существуют другие проекты семантических вики, однако до сегодняшнего дня мы слышали, что только Wikidsmart — расширение для движка Confluence может рассматриваться как более или менее полноценная замена SMW.

Semantic MediaWiki немного похожа на документ-ориентированные базы данных вроде MongoDB, однако обычно они применяются в разных областях (SMW больше похожа на конструктор веб-приложений, в то время как MongoDB — это система управления базами данных в первоначальном значении этого слова).

В мире MediaWiki есть расширение DynamicPageList, которое, в принципе, похоже на SMW.

Проводятся ли какие-то конференции и мероприятия, посвящённые SMW?
Да! Дважды в годы мы проводим SMWCon, конференцию разработчиков и пользователей SMW. Мы проводим её поочерёдно в Европе и США. На конференции мы обсуждаем план развития проекта и делимся друг с другом опытом использования Semantic MediaWiki.

Есть и другие конференции, на которых часто можно услышать доклады по SMW. Ежегодная конференция Wikimania — традиционное место сбора разработчиков SMW (вообще, первое упоминание о системы было на первой викимании в 2005 году), конференция Semantic Technology Conference (SemTech) и WikiSym — тоже неплохие события, на которых обсуждается SMW и иногда семантическим вики посвящаются целые секции.

Так много документации! С чего же начать?
Во-первых, попробуйте просто поиграться с данными, потихоньку читая Руководство пользователя — оно меньше, чем кажется. Затем советуем вам четко осознать вашу задачу и понять, какие расширения помимо SMW понадобятся для её решения. Существует целый класс семантических расширений, позволяющих делать удивительные вещи с данными.

Для начала советуем воспользоваться стандартными семантическими сборками, в которых есть большинство расширений, которые могут вам понадобиться:
 * Semantic Bundle
 * SMW+ — включает в себя пропатченную версию MediaWiki

Для вдохновения можете использовать конкурс Вики месяца, соревнование-выставку, на которой владельцы сайтов на SMW демонстрируют то, как они приспособили Semantic MediaWiki для решения своих, подчас очень непростых, задач.