Help:Логический вывод
С помощью семантического поиска можно легко находить нужные страницы, задавая определенные критерии. Заметим, однако, что вся информация об этих страницах должна быть предварительная вручную введена в систему. Часто хочется, чтобы вики вики была чуть «умнее» и автоматически выводила новые факты из уже имеющихся. И в некоторых случаях SMW умеет осуществлять такого рода логический вывод! Этому и посвящена данная статья.
Вывод по иерархии категорий
В MediaWiki есть возможность создавать вложенные категории, для того, чтобы облегчить пользователям классификацию статей. Рассмотрим пример: пусть в нашей вики есть категории Категория:Мужчина, Категория:Женщина и Категория:Персона. Понятно, что всякая страница, помеченная категорией «Женщина», обязательно должна быть также в категории «Персона». Однако категория «Женщина» более специфична, и во многих вики (наример в Википедии) действует соглашение, по которому принято помечать страницы только наиболее точными и специфичными категориями. Чтобы обозначить, что одна категория является частной по отношению к другой, в MediaWiki –системах используется т.н. иерархия категорий. На странице Категория:Женщина мы просто помещаем текст
[[Категория:Персона]]
и отныне категория «Женщина» вложена в категорию «Персона». Для дальнейших подробностей вы можете обратиться к справочнику по MediaWiki.
Semantic MediaWiki может использовать информацию о вложенности категорий для улучшения семантического поиска. Если вы запросите список страниц, относящихся к категории «Персона», на самом деле этот запрос будет интерпретирован как «выдай мне страницы, относящиеся к Категория:Персона ИЛИ Категория:Мужчина ИЛИ Категория:Женщина».
В случае более глубокой иерархии категорий, SMW продолжит вывод и будет учитывать также категории, вложенные в категории, которые вложены в запрашиваемую категорию и т.д. В нашем примере если категория Категория:Женщина содержит вложенную категорию Мать, наш запрос на все персоны выдаст также и странички матерей.
Механизм вывода по категориям может быть ограничен администратором вики или же его можно отключить. Обычно задана глубина иерархии, в пределах которой производится логический вывод, поэтому в случае очень глубоких иерархий некоторые страницы могут быть не учтены. В руководстве по настройке SMW вы можете найти подробную справку о том, как сконфигурировать вывод по категориям.
Заметим, что не всегда нам выгодно описанное выше поведение. Порой категории используются несколько иначе: к примеру в Википедии в категорию [[wp:ru:Категория:Город|Город] входят не только статьи о городах, но и статьи об объектах, так или иначе связанных с городом. Внутри категории Город могут быть вложены категории «Жилищно-коммунальное хозяйство», «Улицы» и т.п. Если вам кажется, что запросы работают не интуитивно, вам следует либо реорганизовать иерархию категорий, либо отключить вывод по категориям.
Другая серьёзная проблема заключается в том, что при отсутствующем или неполном описании категории, разные вики-авторы могут интерпретировать её по-разному. Это тесно связано с омонимией и многозначными словами в языке. Предположим, в вики есть категория «Церковь». Один пользователь может создать подкатегорию «Римская католическая церковь», рассматривая слово «церковь» в значении религиозного течения. Однако в отсутствии пояснений и подробного описания вполне может возникнуть ситуация, когда категорию «Церковь» включат в качестве подкатегории «Культового сооружения», и тогда запрос таких сооружений будет включать в себя римскую католическую, православную и протестантскую церкви, что никак не соответствует нашим ожиданиям. В этой связи обязательно документируйте ваши категории. Та же рекомендация относится и к создаваемым семантическим свойствам, которые тоже могут участвовать в логическом выводе.
Иерархия семантических свойств
Между семантическими свойствами также могут существовать отношения спецификации (иными словами, отношения «более общее-более частное»). К примеру, между свойствами «является столицей» и «находится в» определенно существует связь «общее-частное». Если город является столицей страны, то он с необходимостью в этой стране находится. В этих случаях говорят, что свойство «является столицей» является подсвойством свойства «находится в» и на странице Свойство:является столицей пишут следующее
[[subproperty of::Property:находится в]]
Как только мы организуем семантические свойства в иерархию, SMW начнет использовать её при ответе на запросы. Рассмотри, например, следующий запрос страниц о городах, расположенных на территории России:
[[находится в::Россия]]
Он выдаст нам в качестве результата в том числе и Москву, на странице которой написано, что она является столицей России. Свойства также обязательно подробно документировать, чтобы избежать неправильных интерпретаций.
Учет эквивалентных страниц. Перенаправления
Часто бывает, что предмет называется разными именами. Например, в русскоязычной Википедии нет двух отдельных страниц для Родинки и Папилломы, однако если попытаться зайти на страницу Родинка, нас немедленно перенаправят на Папиллому. Это осуществляется при помощи механизма перенаправлений (также называемых редиректами, от англ. redirect), имеющегося в MediaWiki. В семантических вики очень важно правильно работать с такими синонимами, а потому SMW учитывает перенаправления между страницами при выдаче ответов на запросы.
Приведем пример. Пусть требуется получить все страницы о людях, родившихся на территории СССР. Соответствующий запрос будет включать [[место рождения::СССР]]. Если одна из страниц СССР или Союз Советских Социалистических Республик является перенаправлением, то в результате запроса будут учтены как страницы с аннотацией [[место рождения::СССР]], так и [[место рождения:: Союз Советских Социалистических Республик]].
Этот механизм обладает большой мощью – отныне сокращение и наименование страны считаются полностью эквивалентными страницами. SMW поддерживает также эквивалентность категорий и семантических свойств, начиная версии 1.2.
Обратите внимание на следующие ограничения вывода по перенаправлениям:
- не перенаправляйте на страницы перенаправлений! Перенаправление в SMW не транзитивно – если страница А имеет перенаправление на Б, а Б имеет перенаправление на В, то из этого не следует, что А перенаправляет на В.
- перенаправления, идущие со страниц категорий на страницы вики-статей, со страниц статей на страницы свойств – иными словами любые перенаправления между разными пространствами имен – никак не обрабатываются SMW и не учитываются при вычислении ответов на семантические запросы. Создать подобные редиректы можно, однако обрабытываться они будут только движком MediaWiki.
Логический вывод и параметры выдачи результатов
Параметры выдачи результатов не участвуют в процессе логического вывода, то есть они лишь возвращают поля, указанные в запросе явным образом и явно заданные на страницах. Это поведение может быть желательным в одних ситуациях и может казаться недостаточным в других. Проиллюстрируем это на нашем примере с Москвой как столицей России. Пусть мы задали запрос:
[[Категория:Город]] ?находится в
Увы, несмотря на то, что свойство столица является подчиненным по отношению к находится в, мы не увидим России в столбце Находится в . Можно обойти это поведение, прибегнув к помощи шаблонов для явной аннотации. В нашем случае можно использовать такой шаблон:
[[является столицей::находится в::Россия]]
Этот шаблон назначит значение Россия сразу двум свойствам ([[является столицей::Россия]] и [[находится в::Россия]]), однако при сохранении страницы пользователям, просматривающим статью будет видна только одна надпись Россия.
На данный момент Semantic MediaWiki поддерживает только перечисленные выше возможности логического вывода. SMW не поддерживает:
- транзитивность, рефлексивность, инверсию свойств
- ограничения на область определения и область значения семантических свойств
- численные ограничения, функциональные свойства
Даже если какие-то участники вики вводят семантические свойства, которые ссылаются на ресурсы RDFS, OWL, SKOS и т.п. Semantic MediaWiki не использует эти метаданные для логического вывода. Есть тем не менее пути обхода этих ограничений. На данной вики страницы Germany и California содержат свойства, ведущие себя как инверсные. Транзитивность тоже можно до некоторой степени симулировать вложенными запросами – на странице Germany есть такой пример.
Property "Namespace" has a restricted application area and cannot be used as annotation property by a user.Property "Docinfo editor" (as page type) with input value "User:>Kghbln" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process.