我有一个叫做演员的类别,另一个叫做电影。类别电影的属性为“hasBudget”和“hasActor”。每个演员都拥有“hasNationality”属性。
我需要一张能够显示在预算超过4000万的电影中具有特色的澳大利亚演员名单。
我使用以下查询列出演员以及相应的电影和预算。
{{#ask:[[Category:Actor]] [[hasNationality::Australia]] [[-hasActor::<q>
[[Category:Film]] [[hasBudget::>40000000]]</q>]]
|?#
|?-HasActor
|?HasBudget
|format=broadtable
|link=all
|headers=show
|searchlabel=... further results
|class=sortable wikitable smwtable
}}
但是,无法从子查询中选择预算。如何提取预算属性?
非常感谢任何帮助。谢谢
答案 0 :(得分:2)
没错 - 您正在查询Category:Actor
,因此您接收的是Actor页面,而不是电影页面。没有&#34;加入&#34;在SMW查询语法中,只有实现它的方法是使用子查询和template
结果格式。
我们的想法是将子查询封装到模板中,这样您就可以先查询特定的Actors,然后查询结果(如显示Films列表及其每个Actor的预算)。
修改您的查询:
{{#ask:[[Category:Actor]] [[hasNationality::Australia]] [[-hasActor::<q>
[[Category:Film]] [[hasBudget::>40000000]]</q>]]
|?=title
|format=template
|link=none
|searchlabel=... further results
|named args=yes
|template=Actor result
}}
创建一个名为Actor result
的模板:
Actor: {{{?title}}}
Actors films: {{#ask: [[Category:Film]] [[hasActor::{{{?title}}}]] |?hasBudget }}
因此,通过这种方式,您将收到以> 40000000预算制作电影的演员列表,然后在Actor result
模板中查询电影列表&amp;每个演员的预算。