在Semantic MediaWiki中按属性查询



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

  1. 城镇(属性:名称,分区)
  2. 小区(物业:名称,小区内)
  3. 地区

所以:一个街道有许多城镇,一个地区有许多街道。

约束:我希望将这些创建为子对象/记录或类似的东西,因为为每个城镇创建一个页面(大约有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

相关内容

  • 没有找到相关文章

最新更新