排序

来自semantic-mediawiki.org
跳转到:航行,搜索
排序
此帮助页通知如何对查询结果进行排序。
关键词
目录

Semantic MediaWiki通常会尝试分类结果由自然秩序选定属性的值可能具有:

因此,顺序与<> 比较器在查询中。如果没有提供特定的排序条件,结果将按其页面名称排序。

可以提供多个排序条件。如果第一个排序条件的多个结果相等,则使用下一个条件对它们进行排序,依此类推。例如,我们可以通过以下查询,按城市每年的平均雨天数获得城市列表,但可以按城市所在的国家进行分组:

{{#提问:[[类别:城市]]|?位于=国家|?平均雨天|sort=位于,平均雨天|顺序=asc,desc}}

导致

 国家平均雨天
悉尼澳大利亚143.7
维也纳奥地利88
卡尔斯鲁厄巴登-符腾堡124
斯图加特巴登-符腾堡
德国
112.4
圣地亚哥加利福尼亚
美利坚合众国
29.4
伦敦英格兰145
巴黎法国111.5
瓦茨堡德国156
科隆德国132.5
慕尼黑德国129.4
法兰克福德国108.9
柏林德国106.3
罗马意大利84.5
阿姆斯特丹荷兰234
华沙波兰159
波尔图葡萄牙140

对查询进行排序也会影响查询的结果,因为只能按页面实际具有的属性值进行排序(另请参阅下面的信息框)。因此,如果查询是按属性排序的(例如«填充»),则SMW通常会将查询结果限制为该属性至少有一个值的页面(即只显示具有指定填充的页面)。因此,如果查询还不要求属性存在于每个查询结果中,那么SMW将自动添加此条件。但SMW总是首先尝试在给定查询中查找排序属性,甚至可以按子属性对查询结果排序。一些示例应说明这一点:

  • [[类别:城市]][[人口::+]]按“人口”排序将按人口升序显示城市。查询结果与没有排序的结果相同。
  • [[类别:城市]]按“人口”排序将再次按升序显示人口所在的城市。查询结果可能会因排序条件而被修改:如果存在未提供人口的城市,则这些城市将不再出现在结果中。
  • [[类别:城市]][[有所在国家。人口::+]]按“人口”排序将显示按所在国家的人口排序的城市。查询结果没有更改,但“人口”现在指的是子查询中使用的属性。同样,必须为国家标注人口,以避免因排序条件而被忽略。

通过单击每个列的表标题中的小排序图标,也可以对结果表中显示的查询结果进行动态排序。此函数要求在浏览器中启用JavaScript,并且只对显示的结果进行排序。因此,例如,如果一个查询已按人口检索到20个世界上最大的城市,则可以按字母顺序或人口的相反顺序对这20个城市进行排序,但当反转人口列的顺序时,查询肯定不会显示20个世界最小的城市。表的动态排序尝试使用与SMW查询中使用的顺序相同的顺序,尤其是自然的顺序数字和日期。然而,字符串和页面名称的字母顺序可能与wiki的字母顺序略有不同,因为有许多国际字母可以根据语言偏好以不同的方式排序。

从开始语义媒体Wiki 3.0.02018年10月11日发布,与MW 1.27.0-1.31.x兼容。和名为SMW_QSORT_UNCONDITIONAL公司配置参数$smwgQSport功能设置的排序功能的行为语义搜索是可用的,它将使按属性排序无条件工作,即使相应的属性未设置为所有页面挑选出来的,即显示所有页面。

默认排序[编辑]

查询结果通常是页面,子对象和/或数据类型的值“第页[1]如果没有提供特定的排序条件,则按字母顺序升序对其进行排序。

字母排序顺序,或者更准确地说是排序规则,是由MediaWiki的$wg类别排序设置,如果设置为大写身份.语义MediaWiki支持uca-默认以及自3.0.0版以来的特定于语言的调整(#1383). 有关详细信息,请参阅$smwgEntityCollation($smwg实体排序规则).

可能不支持现成的页面自然排序。例如,字母数字类型将页面标题的数字部分视为数字,例如,b9位于b1000之前而不是之后。[2]作为一种可能的中途解决方案,请注意,可以使用{{默认排序:}}神奇的单词。如果使用添加排序键{{默认排序:}}您不需要在查询中指定额外的排序,因为Semantic MediaWiki将遵循这样设置的值。1

例子

自然排序顺序/结果(对于美国地标)可能是:

*自由塔*自由女神像*五角大楼*美国国会大厦*白宫

您要做的是转到相应的页面,并使用神奇的单词{{DEFAULTSORT:}}将默认值更改为以下内容:

  • {{DEFAULTSORT:五角大楼,}}
  • {{DEFAULTSORT:美国国会大厦}}
  • {{DEFAULTSORT:白宫,}}

那么结果是:

*美国国会大厦*自由塔*五角大楼*自由女神像*白宫

子对象的名称通常由声明它们的页面的标题组成,后跟哈希标记(#)和自定义标识符或自动生成的数字序列(哈希编号)。从SMW 2.0开始,还可以为子对象分配自定义排序键:请参阅帮助:添加子对象#指定排序键.

提供排序条件:使用参数[编辑]

使用以下查询参数可以指定查询的排序条件。

参数 可能的值 描述
分类
  1. 属性名(不带名称空间前缀)
  2. 财产链
  3. 类别名称(自SMW 2.5起-请看这里的演示).
  4. 空白,它被解释为主结果列(默认行为)
用于排序查询的属性、属性链或类别的名称。可以使用逗号分隔的值列表来支持二级(和三级,等等)排序顺序。为提供的值秩序然后将遵循相同的顺序。


秩序

提升(简称:asc公司)
下降(简称:描述)或颠倒
随机的(简称:兰特)
或者如果使用多个属性进行排序,则为以逗号分隔的列表

定义结果应按升序、降序还是随机顺序排序。违约:提升.
抵消 从哪里开始

这个分类参数采用属性名或以逗号分隔的属性名列表。它允许您按照任何选定属性的值“自然”排序的顺序对结果进行排序。“自然”排序意味着:

等等。。。

(使用查询中的<和>比较器遵循相同的“自然”排序顺序)

例子

你有关于城市的页面,你想展示一个按人口规模排序的城市列表。这个分类参数将采用用于存储总体大小的属性。如果此列表按人口大小的相反顺序显示,则从人口最多的城市向下秩序参数将设置为下降。这样的查询如下所示:

{{#提问:[[类别:城市]]|?人口规模|sort=人口规模|order=降序}}

提供多种分拣条件[编辑]

可以提供多个分拣条件。如果多个结果在第一个排序条件下相等,则使用下一个条件对其进行排序,依此类推。

例子

我们希望获得一份按平均每年雨天数排列的城市列表,但要按所在国家进行分组,并提供以下查询:

{{#提问:[[类别:城市]]|?位于=国家|?平均雨天|sort=位于,平均雨天|顺序=升序,降序}}
导致
 国家平均雨天
悉尼澳大利亚143.7
维也纳奥地利88
卡尔斯鲁厄巴登-符腾堡124
斯图加特巴登-符腾堡
德国
112.4
圣地亚哥加利福尼亚
美利坚合众国
29.4
伦敦英格兰145
巴黎法国111.5
瓦茨堡德国156
科隆德国132.5
慕尼黑德国129.4
法兰克福德国108.9
柏林德国106.3
罗马意大利84.5
阿姆斯特丹荷兰234
华沙波兰159
波尔图葡萄牙140

使用的限制性影响分类[编辑]

对查询进行排序也会影响查询的结果,因为默认情况下,只能根据页面实际具有的属性值进行排序。因此,如果查询是按属性排序的(例如人口)那么,SMW通常会将查询结果限制为那些对此属性至少有一个值的页面(即只显示具有指定填充的页面)。因此,如果查询还不要求属性存在于每个查询结果中,那么SMW将静默地添加此条件。查看选项SMW_QSORT_UNCONDITIONAL公司属于配置参数$smwgQSport功能设置的排序功能的行为语义搜索改变这种行为。3

如果每页有多个属性值怎么办?[编辑]

如果用于排序的属性每页有多个值,则此页仍将在结果列表中只显示一次。在这种情况下,页面所处的位置不是由SMW定义的,可能对应于任一属性值。在上述示例中,如果一个城市指定了多个人口数量,或者一个城市位于多个国家,每个国家都有一个人口,就会出现这种情况。最好避免出现这种情况。

对主列进行排序[编辑]

如果排序应该同时包含主标签和属性,则可以将主标签视为空字符串(因为它没有标识符)。因此,这是可行的,它首先按主标签排序,然后按平均雨天排序

{{#提问:[[类别:城市]]|?位于=国家|?平均雨天|sort=,平均雨天|顺序=asc,desc}}

导致

 国家平均雨天
阿姆斯特丹荷兰234
柏林德国106.3
科隆德国132.5
法兰克福德国108.9
卡尔斯鲁厄巴登-符腾堡124
伦敦英格兰145
慕尼黑德国129.4
巴黎法国111.5
波尔图葡萄牙140
罗马意大利84.5
圣地亚哥加利福尼亚
美利坚合众国
29.4
斯图加特巴登-符腾堡
德国
112.4
悉尼澳大利亚143.7
维也纳奥地利88
华沙波兰159
瓦茨堡德国156


提供分拣条件:备选方案[编辑]

可排序表[编辑]

通过单击每个列的表标题中的小排序图标,也可以对结果表中显示的查询结果进行动态排序。此函数要求在浏览器中启用JavaScript,并且只对显示的结果进行排序。因此,例如,如果一个查询已按人口检索到20个世界上最大的城市,则可以按字母顺序或人口的相反顺序对这20个城市进行排序,但当反转人口列的顺序时,查询肯定不会显示20个世界最小的城市。表的动态排序尝试使用与SMW查询中使用的顺序相同的顺序,尤其是自然的顺序数字和日期。然而,字符串和页面名称的字母顺序可能与wiki的字母顺序略有不同,因为有许多国际字母可以根据语言偏好以不同的方式排序。

演示[编辑]

特殊页面“询问”有一个简单的接口,用于向查询添加一个或多个排序条件。将排序依据的属性的名称输入到文本输入中,可以选择升序或降序。

笔记[编辑]

  1. 如果逆特性即使页面不存在,也会使用。
  2. 参见Bugzilla,例如。#T8948电话

另请参见[编辑]

邮件列表
  • 维护属性值的顺序4