我有以下实体,它们创建了一个层次结构:
- 城镇(属性:名称,分区)
- 小区(物业:名称,小区内) 地区
所以:一个街道有许多城镇,一个地区有许多街道。
约束:我希望将这些创建为子对象/记录或类似的东西,因为为每个城镇创建一个页面(大约有1400个)是没有意义的(也不会被接受)。"Districts"可以是实际的页面,因为只有6个这样的页面,但可能会在不同的命名空间("Data:")中。
然后我们有另一个实体,我们称它为"Service",它有一个"In town::"属性。这实际上是一个多值属性
因为我尝试使用子对象,"In town::"对应的是town .name,而不是town(因为town将是一个子对象,说"Towns#HaHotrim")。
我希望能够做的是检索某个地区的所有服务;我根本没能做到这一点。
我的城镇子对象都位于一个页面上("城镇"),看起来像这样:
{{#subobject:HaHotrim
| Name = HaHotrim
| is in sub district: Hadera
|@category=Towns
}}
然后我在另一个页面("Sub districts")上有我的分区,看起来像这样:
{{#subobject:Hadera
| name = Hadera
| is in district = Haifa
|@category=sub districts
}}
但是我仍然不知道如何对某个地区(甚至一个分区)的所有服务进行查询。我错过了什么?
指出
我认为如果我直接在分区/区内创建城镇列表作为属性,通过在子对象中添加这样的属性,可能会有所帮助:| towns in sub district: {{#ASK:[[is in sub district::Hadera]] |?name | mainlabel=- | link = none | format=list | headers=hide}}|+sep=,
要查找分区中的所有服务,假设查询是在具有{{{sub-district}}}
参数的模板中,仅使用SMW,尝试:
{{#ask:
[[In town::{{#ask:
[[is in sub district::{{{sub-district|none}}}]]
| ?Name#-
| mainlabel = -
| headers = hide
| format = list
| sep = {{!}}
| limit = 100
| searchlabel =
}}]]
| ?Service name
| format = ul
}}
内部查询将为{{{sub-district}}}
中的城镇创建一个名称列表,与|
分隔,这将是外部查询的一个条件。
注:
{{#subobject:HaHotrim
| Name = HaHotrim
| is in sub district: Hadera
|@category=Towns
}}
包含一个错别字:is in sub district: Hadera
应该是is in sub district = Hadera