如何在语义媒体wiki中显示嵌套查询的属性?

时间:2016-11-05 19:29:21

标签: semantic-mediawiki

我有一个叫做演员的类别,另一个叫做电影。类别电影的属性为“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
}}

但是,无法从子查询中选择预算。如何提取预算属性?

非常感谢任何帮助。谢谢

1 个答案:

答案 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;每个演员的预算。