在 Semantic MediaWiki API 中使用 属性 OR 在 askargs 动作的 "conditions" 参数中
Using property OR in "conditions" parameter of askargs action with Semantic MediaWiki API
我正在尝试使用模块 askargs 通过 API 获取结果。当我只有一个条件或多个条件与运算符聚合并且我使用竖线字符分隔它们时(如文档中所写),我可以毫无问题地获得结果。
例如
[[Category:+]] AND [[Jurisdiction::A]] AND [[Type::B]]
Category:+ | Jurisdiction::A | Type::B
但是竖线字符不适用于 OR。
我需要能够在同一个查询中使用带有多个参数的两个逻辑条件。
我是不是漏掉了什么?
Am I missing something?
没有。由于查询参数格式化程序中的代码过于简单,API 不处理 OR 条件。
参见文件 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
由于我是通过网站搜索来到这里的,所以我将添加另一种巧妙的可能性:
如果您使用 Alternative separator,您可以使用双竖线作为逻辑或连词。
示例:
%1FCategory:+%1FJurisdiction::A%1FType::B||C
应该这样理解
Category:+ AND Jurisdiction::A AND (Type::B OR Type::C)
我正在尝试使用模块 askargs 通过 API 获取结果。当我只有一个条件或多个条件与运算符聚合并且我使用竖线字符分隔它们时(如文档中所写),我可以毫无问题地获得结果。
例如
[[Category:+]] AND [[Jurisdiction::A]] AND [[Type::B]]
Category:+ | Jurisdiction::A | Type::B
但是竖线字符不适用于 OR。
我需要能够在同一个查询中使用带有多个参数的两个逻辑条件。
我是不是漏掉了什么?
Am I missing something?
没有。由于查询参数格式化程序中的代码过于简单,API 不处理 OR 条件。
参见文件 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
由于我是通过网站搜索来到这里的,所以我将添加另一种巧妙的可能性:
如果您使用 Alternative separator,您可以使用双竖线作为逻辑或连词。 示例:
%1FCategory:+%1FJurisdiction::A%1FType::B||C
应该这样理解
Category:+ AND Jurisdiction::A AND (Type::B OR Type::C)