结合语义MediaWiki中的#ask子查询的结果

时间:2019-10-10 15:28:41

标签: mediawiki semantic-mediawiki

我有一个存储在语义mediawiki中的科学论文集。该页面始终是论文的标题。每篇论文都具有citekey属性[[Has citekey::someauthor2019]]形式的唯一ID。

现在,我想将其链接到其他出版物,并自动显示所有参考论文的表格。为此,我在每个页面上保留了多个属性,其中包含引用属性[[Has reference::authorX2017]][[Has reference::authorY2018]]等。

要实现这一点,我想通过#ask查询获取所有引用,并在新的#ask查询中使用这些结果以获取所有具有引用作为其citekey属性的结果。

要获取引用,我使用以下#ask查询的组合:

{{#ask: [[Has citekey::someauthor2019]]
 |?Has reference
 |format=template
 |template=Query Result
}}

具有此查询结果格式模板:

{{{2}}}

例如,这将导致输出:authorX2017,authorY2018

如何在新的#ask查询中自动使用它来获取以这些引用中的任何一个作为其citekey属性的页面列表?

谢谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

  

如何在新的#ask查询中使用它来获取以这些引用作为citekey属性的页面列表?

您应该只将result参数用作模板内部内部Ask查询的新参数。这样有麻烦吗?

尝试使用

 |link=none

(请参阅源1)

这会将{{{{#ask: [[Has citekey::someauthor2019]] |?Has reference |format=template |template=Query Result |link=none }} }和{

{{#arraymaptemplate:value|template|delimiter|new_delimiter}}
}结果作为原始文本传递到您的模板

您的请求将变为:

$c = array_unique(array_merge($a,$b), SORT_REGULAR);
print_r( $c )

然后,您可以将{Array ( [0] => Array ( [id] => 5 [name] => bruce ) [1] => Array ( [id] => 7 [name] => wayne ) [2] => Array ( [id] => 6 [name] => chuck ) [3] => Array ( [id] => 8 [name] => norris ) ) 和{

split
}用作新查询的参数。

但是,您说{{{has reference}}}结果参数可能有多个结果。因此,您应该使用类似于arraymaptemplate的东西(请参见源2)。

arr = ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII']
dict = {}

for i in range(0, len(arr)):
    key, value = arr[i].split(": ")
    dict[key] = value

print(dict)

其中“模板”将在其自己的请求中使用{


January 2019    1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31
Shift A         1   1   1   0   0   0   2   2   0   0   1   1   1   1   0   2   2   0   0   0   0   0   0   0   2   2   2   0   1   1   1
Shift B         0   2   2   0   0   0   0   0   0   0   2   2   2   0   1   1   1   0   0   0   2   2   0   0   1   1   1   1   0   2   2
Shift C         0   0   0   2   2   2   0   1   1   1   0   0   0   2   2   0   0   1   1   1   1   0   2   2   0   0   0   0   0   0   0
Shift D         2   0   0   1   1   1   1   0   2   2   0   0   0   0   0   0   0   2   2   2   0   1   1   1   0   0   0   2   2   0   0
February 2019   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  nan nan nan
Shift A         0   0   0   2   2   0   0   1   1   1   1   0   2   2   0   0   0   0   0   0   0   2   2   2   0   1   1   1   nan nan nan
Shift B         0   0   0   0   0   0   0   2   2   2   0   1   1   1   0   0   0   2   2   0   0   1   1   1   1   0   2   2   nan nan nan
Shift C         2   2   2   0   1   1   1   0   0   0   2   2   0   0   1   1   1   1   0   2   2   0   0   0   0   0   0   0   nan nan nan
Shift D         1   1   1   1   0   2   2   0   0   0   0   0   0   0   2   2   2   0   1   1   1   0   0   0   2   2   0   0   nan nan nan

}列表的每个值。

来源:

  1. https://www.semantic-mediawiki.org/wiki/Help:Inline_queries#Standard_parameters_for_inline_queries

  2. https://www.mediawiki.org/wiki/Extension:Page_Forms/Page_Forms_and_templates#arraymaptemplate