我仍在尝试使我的 wiki 更加“动态”,以消除重复数据。在我之前的问题中,我问我如何绑定多个页面并通过绑定页面检索属性。由于这个问题已经在简单的情况下得到解决(但是我不太喜欢我的解决方案),我想让它适用于表格。让我们再次考虑我在问题中提到的相同页面和属性结构,因此以下代码
{{#ask: [[Category:Venues]] [[Self name::Heineken Music Hall]]}}
{{#ask: [[Category:Cities]] [[-Ref city.Self name::Heineken Music Hall]]}}
{{#ask: [[Category:Countries]] [[-Ref country.-Ref city.Self name::Heineken Music Hall]]}}
使用内联查询检索地点、城市(阿姆斯特丹)和国家(荷兰)。但是我不确定这种方法是否适用于表格。据我所知,#ask
可以从直接属性中生成一个生成列的表:
{{#ask: [[Category:Live events]]
| ?Self date = Date
| ?Ref venue = Venue
| mainlabel = -
}}
输出:
+-----------------+---------------------+
| Date | Venue |
+-----------------+---------------------+
| 3 December 2012 | Heineken Music Hall |
+-----------------+---------------------+
我还想添加City和Country列。问题是,正如我上面提到的,城市和国家属性没有直接放入Venue页面,因此该#ask
函数可能使用内联子查询。但我不能让它工作:
{{#ask: [[Category:Live events]]
| ?Self date = Date
| ?Ref venue = Venue
| ?WHAT_EXPRESSION_HERE? = City
| ?EVEN_MORE_COMPLEX_EXPRESSION_HERE? = Country
| mainlabel = -
}}
我首先想到的是使用模板使用format = template
and template = TEMPLATE_NAME
。我设法通过创建所需的模板并解析{{{1}}}
...参数来使用这种方法提取绑定的城市,但我似乎无法提取国家(提取简单:日期、地点;复杂:城市;不能:国家)。同样使用模板方法似乎很脆弱,对我来说不是很一致。
是否可以指定子查询/表达式而不是表的属性以从 Semantic MediaWiki 中的间接绑定页面中提取属性(可能从不使用模板)?