1

我有以下实体,它们创建了一个层次结构:

  1. 镇(属性:名称,在分区)
  2. 分区(属性:名称,在分区内)

所以:一个街道很多镇,一个区有很多街道。

约束:我希望将这些创建为子对象/记录或类似的东西,因为为每个城镇创建一个页面(其中大约有 1,400 个)没有意义(也不可接受)。“区域”可以是实际页面,因为其中只有 6 个,但可能位于不同的命名空间(“数据:”)中。

然后我们有另一个实体,我们称它为“Service”,它有一个“In town::”属性。这实际上是一个多值属性。

因为我尝试使用子对象,所以“In town::”对应于 Town.name,而不是 Town(因为 Town 将是一个子对象,比如“Towns#HaHotrim”)。

我希望能够做的是检索某个地区的所有服务;我根本无法这样做。

My Town 子对象都位于一页(“Towns”)上,如下所示:

{{#subobject:HaHotrim
 | Name = HaHotrim
 | is in sub district: Hadera
 |@category=Towns
}}

然后我在另一个页面(“子区”)上有我的分区,如下所示:

{{#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=,

4

1 回答 1

0

要查找分区中的所有服务,假设查询在带有{{{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.

于 2020-09-22T09:13:06.470 回答