我有一个存储在语义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
属性的页面列表?
谢谢您的任何建议!
答案 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
}列表的每个值。
来源: