在Semantic MediaWiki中查询属性

时间:2016-11-02 22:51:05

标签: semantic-mediawiki

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

  1. 城镇(物业:名称,在分区)
  2. 街道(物业:名称,地区)
  3. 所以:一个街区的许多城镇,一个区内的许多分区。

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

    然后我们有另一个实体,让我们称之为"服务",它有一个"在城里::"属性。这实际上是一个多值属性。

    因为我尝试使用子对象,"在城里::"对应于Town.name,而不是Town(因为Town将是一个子对象,说" Towns#HaHotrim")。

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

    My Town子对象全部驻留在一个页面上(" Towns"),看起来像这样:

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

    然后我将我的分区放在另一页(" Sub subtricts")上,如下所示:

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

1 个答案:

答案 0 :(得分: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}}}中的城镇创建一个名称列表,以|分隔,这将是外部查询的条件。

PS

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

包含错字:is in sub district: Hadera应该是is in sub district = Hadera