【问题标题】:Semantic mediawiki #ask query: Displaying nested properties on the same querySemantic mediawiki #ask 查询:在同一查询中显示嵌套属性
【发布时间】:2013-03-07 14:03:38
【问题描述】:

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

假设我想查询位于德国的城市类别中的所有页面,并且我想显示页面的标题,而且我想显示德国的表面数据,例如。

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

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

【问题讨论】:

    标签: mediawiki semantic-web semantic-mediawiki


    【解决方案1】:

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

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

    &lt;includeonly&gt; 标签之所以重要,是因为我不太了解,如果您将它们排除在外,有时会产生错误。然后您只需使用format = template 运行#ask 查询。 (您可以将标头构建到查询中,但我发现将其放在外面更简单。)

    {| class="wikitable smwtable sortable"
    |- valign="bottom"
    ! [[City]]
    ! [[Surface]]
    
    {{#ask: [[Category:City]] [[location::Germany]]
      | format   = template
      | template = tablerow
      | link     = none
    }}
    
    |}
    

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

    【讨论】:

    • Includeonly 标记指定模板中仅由调用模板的页面呈现的部分。与 noinlude 标签相反,它包含仅由模板页面呈现的内容,而不是调用它的页面。这些标签之外的所有内容都将由两者呈现。使用示例见:openei.org/wiki/Template:SampleTemplate
    • 嗯,是的,我知道标签的一般作用。我的意思是,在语义媒体wiki {{#ask}} 函数的帮助模板的特定情况下,我不知道为什么它们是必要的。即使模板中唯一的文本是要嵌入的部分,但有时除非您将整个模板包装在 &lt;includeonly&gt; 标记中,否则它不会起作用。我没有遇到过任何其他情况。
    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2023-04-06
    • 2020-01-28
    相关资源
    最近更新 更多