0

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

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

非常感谢任何帮助..谢谢

4

1 回答 1

2

没错-您正在查询,Category:Actor因此您收到的是演员页面而不是电影页面。SMW 查询语法中没有“连接”,因此实现它的唯一方法是使用子查询和template结果格式。

这个想法是将子查询封装到模板中,这样您就可以首先查询特定的演员,然后查询结果(例如显示电影列表及其每个演员的预算)。

像这样修改您的查询:

{{#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模板中您将查询每个演员的电影列表及其预算。

于 2016-11-06T11:22:44.253 回答