在带有语义MediaWiki API的askargs操作的“条件”参数中使用属性OR

时间:2019-06-13 15:20:19

标签: mediawiki mediawiki-api semantic-mediawiki

我正在尝试使用模块Askargs通过API获取结果。当我只有一个或多个条件与运算符聚合在一起并且我在其中使用竖线字符将它们分开时(如文档中所写),我毫无问题地获得结果。

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

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

但是管道字符不能与OR一起使用。我想念什么吗?

2 个答案:

答案 0 :(得分:0)

  

我想念什么吗?

不。由于查询参数格式程序中的代码过于简单,因此该API无法处理“或”条件。

因此,可以很容易地修改代码以允许使用OR

在第132行查看文件SemanticMediaWiki/src/MediaWiki/Api/ApiRequestParameterFormatter.php

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

查询中的所有条件都用括号括起来,导致OR被解释为页面标题。

使用以下方法进行更改:

protected function formatConditions( $condition ) {
    if($condition!="OR")
    return "[[$condition]]";
    return $condition;
}

现在,将查询的格式设置为:

Category:+|Type::A|OR|Type::B

有效!

答案 1 :(得分:0)

自从我通过网站搜索来到这里后,我将添加另一种巧妙的可能性:

如果您使用 Alternative separator,您可以使用双管道作为逻辑 OR 连接。 示例:

%1FCategory:+%1FJurisdiction::A%1FType::B||C

应阅读如下

Category:+ AND Jurisdiction::A AND (Type::B OR Type::C)