Исключение определенных значений свойств во встроенном запросе

Я использую три значения (=страницы) A, B, C для свойства is of type.

Некоторые страницы имеют только одно значение для is of type, некоторые страницы имеют все три значения.

Я хочу #ask для страниц типа A без типов B и C.

Я попробовал следующий встроенный запрос:

{{#ask: [[Is of type::A]] [[Is of type::!B]] [[Is of type::!C]]}}

Но работает он не так, как задумано: выводит список всех страниц типа A, в том числе и страниц типа B/C вдобавок.


person unor    schedule 17.07.2013    source источник


Ответы (1)


Semantic Mediawiki плохо справляется с вычитающими запросами. Ваш запрос переводится на английский как:

Найди мне каждую страницу, на которой есть все это: - Экземпляр свойства "Is of type", равный A - Экземпляр свойства "Is of type", не равный B - Экземпляр свойства "Is of type", не равный B С

Теперь вот "загвоздка": Предположим, у вас есть страница "типа" A, B и C. - Типа A. - Типа, отличного от B, а именно A и C. - Это тип, который не C, а именно A и B.

Он подходит под все ваши условия и идет в итоге.

Я часто сталкиваюсь с такими проблемами. В моей вики на самом деле есть несколько шаблонов для вычитания результатов запроса.

person user1258361    schedule 13.02.2015
comment
Понятно, спасибо. Не могли бы вы показать пример такого шаблона вычитания, который помогает в примере (A без B/C), или он будет слишком сложным? - person unor; 14.02.2015