Help:Логический вывод

С помощью семантического поиска  можно легко находить нужные страницы, задавая определенные критерии. Заметим, однако, что вся информация об этих страницах должна быть предварительная вручную введена в систему. Часто хочется, чтобы вики вики была чуть «умнее» и автоматически выводила новые факты из уже имеющихся. И в некоторых случаях SMW умеет осуществлять такого рода логический вывод! Этому и посвящена данная статья.

Вывод по иерархии категорий
В MediaWiki есть возможность создавать вложенные категории, для того, чтобы облегчить пользователям классификацию статей. Рассмотрим пример: пусть в нашей вики есть категории Категория:Мужчина, Категория:Женщина и Категория:Персона. Понятно, что всякая страница, помеченная категорией «Женщина», обязательно должна быть также в категории «Персона». Однако категория «Женщина» более специфична, и во многих вики (наример в Википедии) действует соглашение, по которому принято помечать страницы только наиболее точными и специфичными категориями. Чтобы обозначить, что одна категория является частной по отношению к другой, в MediaWiki –системах используется т.н. иерархия категорий. На странице Категория:Женщина мы просто помещаем текст

и отныне категория «Женщина» вложена в категорию «Персона</tt>». Для дальнейших подробностей вы можете обратиться к справочнику по MediaWiki.

Semantic MediaWiki может использовать информацию о вложенности категорий для улучшения семантического поиска. Если вы запросите список страниц, относящихся к категории «Персона», на самом деле этот запрос будет интерпретирован как «выдай мне страницы, относящиеся к Категория:Персона</tt> ИЛИ Категория:Мужчина</tt> ИЛИ Категория:Женщина</tt>».

В случае более глубокой иерархии категорий, SMW продолжит вывод и будет учитывать также категории, вложенные в категории, которые вложены в запрашиваемую категорию и т.д. В нашем примере если категория Категория:Женщина</tt> содержит вложенную категорию Мать</tt>, наш запрос на все персоны выдаст также и странички матерей.

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

Заметим, что не всегда нам выгодно описанное выше поведение. Порой категории используются несколько иначе: к примеру в Википедии в категорию [[wp:ru:Категория:Город|Город]</tt> входят не только статьи о городах, но и статьи об объектах, так или иначе связанных с городом. Внутри категории Город</tt> могут быть вложены категории «Жилищно-коммунальное хозяйство</tt>», «Улицы</tt>» и т.п. Если вам кажется, что запросы работают не интуитивно, вам следует либо реорганизовать иерархию категорий, либо отключить вывод по категориям.

Другая серьёзная проблема заключается в том, что при отсутствующем или неполном описании категории, разные вики-авторы могут интерпретировать её по-разному. Это тесно связано с омонимией и многозначными словами в языке. Предположим, в вики есть категория «Церковь</tt>». Один пользователь может создать подкатегорию «Римская католическая церковь</tt>», рассматривая слово «церковь» в значении религиозного течения. Однако в отсутствии пояснений и подробного описания вполне может возникнуть ситуация, когда категорию «Церковь</tt>» включат в качестве подкатегории «Культового сооружения</tt>», и тогда запрос таких сооружений будет включать в себя римскую католическую, православную и протестантскую церкви, что никак не соответствует нашим ожиданиям. В этой связи обязательно документируйте ваши категории. Та же рекомендация относится и к создаваемым семантическим свойствам, которые тоже могут участвовать в логическом выводе.

Иерархия семантических свойств
Между семантическими свойствами также могут существовать отношения спецификации (иными словами, отношения «более общее-более частное»). К примеру, между свойствами «является столицей</tt>» и «находится в</tt>» определенно существует связь «общее-частное». Если город является столицей страны, то он с необходимостью в этой стране находится. В этих случаях говорят, что свойство «<tt>является столицей</tt>» является подсвойством свойства «<tt>находится в</tt>» и на странице <tt>Свойство:является столицей</tt> пишут следующее

subproperty of::Property:находится в

Как только мы организуем семантические свойства в иерархию, SMW начнет использовать её при ответе на запросы. Рассмотри, например, следующий запрос страниц о городах, расположенных на территории России:

находится в::Россия

Он выдаст нам в качестве результата в том числе и Москву, на странице которой написано, что она является столицей России. Свойства также обязательно подробно документировать, чтобы избежать неправильных интерпретаций.

Учет эквивалентных страниц. Перенаправления
Часто бывает, что предмет называется разными именами. Например, в русскоязычной Википедии нет двух отдельных страниц для Родинки и Папилломы, однако если попытаться зайти на страницу Родинка, нас немедленно перенаправят на Папиллому. Это осуществляется при помощи механизма перенаправлений (также называемых редиректами, от англ. redirect), имеющегося в MediaWiki. В семантических вики очень важно правильно работать с такими синонимами, а потому SMW учитывает перенаправления между страницами при выдаче ответов на запросы.

Приведем пример. Пусть требуется получить все страницы о людях, родившихся на территории СССР. Соответствующий запрос будет включать <tt> место рождения::СССР </tt>. Если одна из страниц СССР или Союз Советских Социалистических Республик является перенаправлением, то в результате запроса будут учтены как страницы с аннотацией <tt> место рождения::СССР </tt>, так и  <tt> место рождения:: Союз Советских Социалистических Республик </tt>.

Этот механизм обладает большой мощью – отныне сокращение и наименование страны считаются полностью эквивалентными страницами. SMW поддерживает также эквивалентность категорий и семантических свойств, начиная версии 1.2.

Обратите внимание на следующие ограничения вывода по перенаправлениям:
 * 1) не перенаправляйте на страницы перенаправлений! Перенаправление в SMW не транзитивно – если страница <tt>А</tt> имеет перенаправление на <tt>Б</tt>, а <tt></tt>Б имеет перенаправление на <tt>В</tt>, то из этого не следует, что <tt>А</tt> перенаправляет на <tt>В</tt>.
 * 2) перенаправления, идущие со страниц категорий на страницы вики-статей, со страниц статей на страницы свойств – иными словами любые перенаправления между разными пространствами имен – никак не обрабатываются SMW и не учитываются при вычислении ответов на семантические запросы. Создать подобные редиректы можно, однако обрабытываться они будут только движком MediaWiki.

Логический вывод и параметры выдачи результатов
Параметры выдачи результатов не участвуют в процессе логического вывода, то есть они лишь возвращают поля, указанные в запросе явным образом и явно заданные на страницах. Это поведение может быть желательным в одних ситуациях и может казаться недостаточным в других. Проиллюстрируем это на нашем примере с Москвой как столицей России. Пусть мы задали запрос:

?находится в

Увы, несмотря на то, что свойство <tt>столица</tt> является подчиненным по отношению к <tt>находится в</tt>, мы не увидим России в столбце <tt>Находится в</tt>. Можно обойти это поведение, прибегнув к помощи шаблонов для явной аннотации. В нашем случае можно использовать такой шаблон:

является столицей::находится в::Россия

Этот шаблон назначит значение Россия сразу двум свойствам (<tt> является столицей::Россия </tt> и <tt> находится в::Россия </tt>), однако при сохранении страницы пользователям, просматривающим статью будет видна только одна надпись <tt>Россия</tt>.

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

Даже если какие-то участники вики вводят семантические свойства, которые ссылаются на ресурсы RDFS, OWL, SKOS и т.п. Semantic MediaWiki не использует эти метаданные для логического вывода. Есть тем не менее пути обхода этих ограничений. На данной вики страницы Germany и California содержат свойства, ведущие себя как инверсные. Транзитивность тоже можно до некоторой степени симулировать вложенными запросами – на странице Germany есть такой пример.