Semantic mediawiki #ask query:在同一查询上显示嵌套属性

时间:2013-03-07 14:03:38

标签: mediawiki semantic-web semantic-mediawiki

我想在与查询页面相关的页面的相同查询属性中显示。

假设我想查询位于德国的City类别中的所有页面,并且我想显示页面的标题,但我也想显示德国的表面数据。

这样的事情:{{#ask: [[Category:City]] [[location::Germany]] |?mainlabel |?Location.surface }}

我知道这不起作用,但你可以看到我想要实现的目标。

1 个答案:

答案 0 :(得分:3)

我不确定是否有办法直接在其他查询中嵌套查询。这样做的常用方法是使用模板。因此,您可以定义一个名为{{tablerow}}的模板(或模板的子页面,如果它进入模板),其中包含:

<includeonly>
|- valign="top"
| [[{{{1|}}}]]
| {{#show: {{{1|}}} | ?surface }}</includeonly>

<includeonly>标签很重要,原因我并不理解,如果你把它们遗漏,它会产生错误。然后,您只需使用#ask运行format = template查询。 (您可以在查询中构建标题,但我发现将其放在外面更简单。)

{| class="wikitable smwtable sortable"
|- valign="bottom"
! [[City]]
! [[Surface]]

{{#ask: [[Category:City]] [[location::Germany]]
  | format   = template
  | template = tablerow
  | link     = none
}}

|}

这将通过模板将查询返回的每个结果打为{| ?population},并根据它生成一行。如果您要从主查询中返回其他数据,则您要求的其他属性将作为连续的未命名参数出现(因此,如果您包含{{{2}}},那么它将作为{{1}}进入模板,并且需要添加到行结构中,否则它将被删除)。