Использование свойства OR в параметре «condition» действия askargs с Semantic MediaWiki API - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь получить результаты через API, используя модуль askargs. У меня нет проблем с получением результатов, когда у меня есть только одно условие или несколько условий, агрегированных с оператором И где я использую символ канала для их разделения (как написано в документации).

* 1003 Е.Г. *

[[Category:+]] AND [[Jurisdiction::A]] AND [[Type::B]]

Category:+ | Jurisdiction::A | Type::B

Но символ канала не работает с OR.

Мне нужно иметь возможность использовать оба логических условия с несколькими аргументами в одном запросе.

Я что-то упустил?

1 Ответ

0 голосов
/ 11 июля 2019

Я что-то упустил?

Нет.API не обрабатывает условие ИЛИ из-за упрощенного кода в формататоре параметров запроса.

См. Файл SemanticMediaWiki / src / MediaWiki / Api / ApiRequestParameterFormatter.php в строке 132:

protected function formatConditions( $condition ) {
        return "[[$condition]]";  
    }

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

Альтернативой является использование Special:Ask с запросом в кодировке URL и jsonформат:

https://www.semantic-mediawiki.org/wiki/Special:Ask/-5B-5BHas-20keyword::askargs-5D-5DOR-5B-5BHas-20keyword::ask-5D-5D/-3F%3Dhelp-20page/-3FHas-20description%3Ddescription/format%3Djson
...