Семантические шаблоны
Template:Interlanguagelink: en
Семантические шаблоны представляют собой отличный метод аннотирования страниц семантическими свойствами с помощью шаблонов MediaWiki. Вкратце, это обычные шаблоны, в которых используются семантические свойства и функции, предоставляемые SMW. Такой подход имеет целый ряд преимуществ:
- пользователи могут продолжать работать только с шаблонами, и не заниматься изучением новой разметки;
- содержимое страниц будет размечаться согласованно, поскольку в шаблон будет включен один набор используемых семантических свойств и категорий;
- шаблоны в виде инфобоксов (такие часто встречаются, например, в Википедии) помогают читателю статьи быстро понять основные сведения об объекте, в статье описываемом;
- при наличии прямых рук и знания html/css, шаблоны можно сделать довольно красивыми, при это не загромождая текст вики-статьи.
- использование шаблонов позволяет вам использовать формы для ввода данных, см. расширение Semantic Forms.
По этим причинам семантические шаблоны завоевали большую популярность среди вики-владельцев. На многих вики свойства присваиваются страницам исключительно посредством шаблонов. Даже расширения, которые предполагают свободный ввод семантических аннотаций, например Halo, все же не забывают, что источником данныхм могут быть и шаблоны.
Шаблоны-инфобоксы в стиле Википедии
Многие сайты на MediaWiki, с SMW или без, используют шаблоны-инфобоксы для того, чтобы выводить в сжатом виде самую важную информацию о статье. Например, в Википедии все города описываются шаблоном Город. Вот таким образом описан город Санкт-Петербург: FIXME
Обычно подобного рода шаблон выводит на страницу симпатично выглядящую табличку. Вики, в которой активно используются шаблоны очень просто семантифицируется: каждое поле шаблона можно сохранять как значение семантического свойства, и затем пользоваться всеми возможностями SMW.
Для иллюстрации того, как создаются семантические шаблоны, мы создали на этой вики страницу California, в которой вызван шаблон Template:Infobox U.S. state. Посмотрите в текст шаблона - там вы увидите семантические аннотации.
Семантические шаблоны внутри текста
Инфобокс-шаблоны обычно вставляются непосредственно перед основным текстом страницы. Однако вы можете также использовать шаблоны и внутри текста, например для того, чтобы отображать какую-то информацию особенным образом, не загромождая при этом текст вики-страницы сложной разметкой и html/css элементами. К примеру, на вашей астрономической вики вам может захотеться выводить площадь поверхности астрономического объекта в следующем виде:
- 6.088 × 1018 m²
в вики-разметке это будет выглядеть вот так:
6.088 × 10<sup>18</sup> m²
Это выглядит несколько запутанным, поэтому лучше вынести эту сложную разметку в шаблон Шаблон:Площадь поверхности, и вики-редакторы смогут написать просто:
{{Площадь поверхности|6.088|18}}
и шаблон отформатирует все числа самостоятельно. Шаблон Площадь поверхности может быть устроен следующим образом:
[[Площадь поверхности::{{{1}}}e{{{2}}} m²|{{{1}}} × 10<sup>{{{2}}}</sup> m²]]
Обратите внимание, что этот шаблон не только красиво форматирует площадь поверхности, но и хранит её значение в виде семантического свойства. Вы можете поковыряться в страничке Sol, чтобы посмотреть, как шаблон Template:Surface area применяется для форматирования и семантификации площадей.
Правильное использование шаблонов
В MediaWiki можно создавать шаблоны любого уровня сложности, однако вам стоит помнить несколько важных моментов.
Автоматическое аннотирование требует четких форматов
Если вы устанавливаете SMW на вики, с большим количеством шаблонов, вы, наверное, столкнетесь с проблемой того, что люди не используют одинаковые форматы данных при заполнении шаблонов. Например, на первый взгляд кажется логичным, что пользователи всегда будут использовать только числа при заполнении поля "Население" шаблона город. Однако, некоторые пользователи будут писать не "20000000", а "20 млн" или даже "ок. 20 млн" и "20 млн (по состоянию на 2013 год) <ref name="perepis"></ref>". Взгляните на вики-педию, вы увидите ворох таких исключений, где в поле шаблона люди кроме собственно значений пишут комментарии, проставляют ссылки на источники данных и пр. Эти проблемы затруднят семантификацию шаблонов, однако даже если некоторые значения будут заданы в неправильном формате, вы сразу же почувствуете, что преимущества от использования SMW с лихвой покрывают усилия, потраченные на модификацию шаблонов.
Опциональные поля
Многие поля шаблонов могут быть необязательными для заполнения и, если речь идет о шаблонах-инфобоксах, вы, пожалуй, не хотите выводить пустые строки для незаполненных полей. Для того, чтобы справиться с этой проблемой, в MediaWiki обычно используется расширение Parser Functions, в котором есть функция #if. Эта функция позволяет проверить, было ли передано значение в параметр шаблона. В Википедиях есть много примеров использования функции #if, см. например Taxobox. Использование функций парсера обычно приводит к плохо читаемому коду в шаблонах, поэтому старайтесь аккуратно форматировать ваш код в шаблонах и выносить повторяющиеся элементы в отдельные шаблоны.
Использование запросов в шаблонах
Часто в шаблонах встречаются также и встраиваемые запросы, и почти все они используют волшебное слово {{PAGENAME}}. Такого рода запросы обычно показывают страницы, которые тем или иным образом связаны с данной, например те страницы, с которых на данную указывает некоторое свойство. Например, в шаблоне Шаблон:Страна может встретиться примерно такой фрагмент:
{{#ask: [[Категория:Город]] [[Находится в::{{PAGENAME}}]]
Когда вы вызовите в статье Россия этот шаблон, выполнится семантический запрос, который выведет все города, находящиеся в России.
Аннотирование самих шаблонов
Вы также можете привязывать семантические аннотации к самим шаблонам, хоть это и не рекомендуется.
Семантические формы
Для того, чтобы сделать вашу семантическую вики, использующю шаблоны, более дружественной к пользователю. можно поставить популярное расширение Semantic Forms, которое позволит заполнять шаблоны с помощью форм, содержащих флажки, радиокнопки, текстовые и строковые поля и т.д. Использование Semantic Forms также уменьшает риск некорректного заполнения шаблона: мощный функционал расширения можно настроить для того, чтобы подсказывать пользованелям возможные значения и направлять их в случае ошибки. Очень стоит также взгянуть на расширение Semantic Forms Inputs, да и на все остальные семантические расширения.