子查询和属性链

来自semantic-mediawiki.org
跳转到:航行,搜索

枚举属性的多个页面非常繁琐,并且很难维护。例如,要选择出生在意大利城市的所有演员,可以写下:

[[类别:演员]][[出生于:罗马||米兰||都灵||佛罗伦萨||…]]

要生成所有这些意大利城市的列表,可以运行另一个查询

[[类别:城市]][[位于:意大利]]

并将结果复制并粘贴到第一个查询中。我们希望使用城市查询作为子查询以直接获得期望的结果。在属性条件中插入<q>和</q>中包含的新查询,而不是属性值的固定页面名称列表。在这个例子中,可以这样写:

[[类别:演员]][[出生于::

(限制:您不能在<q>和</q>之间添加多个类别,除非是析取)

可以进行任意级别的嵌套,但为了确保性能,可能会限制特定站点的嵌套。例如,要选择欧盟的所有城市,您可以写下:

[[类别:城市]][[位于::<q>[[欧盟成员国]]</q>]]

(查看结果)

在上面的示例中,我们基本上构造了一个“位于”和“成员国”的房产,以查找位于欧盟成员国的房产。对于这种常见情况,可以使用较短的格式编写查询:

[[类别:城市]][[位于:欧盟成员国]]

此查询的含义与上述相同,但所需的特殊符号少得多。通常,属性链是通过列出由点分隔的所有属性来创建的。在属性名称中应包含点的罕见情况下,可以使用空格开始查询,以防止SMW以特殊方式解释此点。

注释:无法使用子查询获取随后在查询中使用的属性列表。有关的限制和注意事项,请参阅属性的子查询.

另请参见[编辑]