自定义单位

来自semantic-mediawiki.org
用户手册编辑自定义单位
跳转到:航行,搜索
目录

本页解释了页面可以对单位的显示和转换,尤其是对于数据类型的属性数量。此功能使注释更加灵活:每个人都可以在他或她的首选单位中查看和输入数据,而不限制相互理解。例如,有些人可能更喜欢以“英里”表示的距离,而不是以“公里”表示的。在其他情况下,如果“微米”更合适,则可能不适合以“km”为单位显示距离。

具有单位转换的数据类型和属性[编辑]

SMW内置支持一些可以处理单元的类型(例如。温度). 支持单位的类型可以接受、转换和显示几个不同单位的值。你可以在事实箱的文章,如“柏林”,其中面积以多个单位表示。

为了支持这些功能,SMW需要知道如何将值从一个单元转换为另一个单元。这在许多情况下相当容易,但在其他情况下也可能涉及更复杂的计算。我们区分了两种情况:

  1. 所需单位之间的转换为成比例的也就是说,您只需将一个值乘以一个固定的转换因子,即可得到另一个单位的值。例如,这是在公里和英里之间进行转换的情况。
  2. 单位之间的转换为不成比例需要进行更复杂的计算。例如,发生这种情况的原因是温度,因为你需要加法和乘法才能从°C到°F。

对于第一类的所有单位转换,数据类型数量可以用于定义wiki中属性的单位和转换因子。对于第二种情况,我们在下面讨论了一些可能性。

在比例单位之间转换[编辑]

SMW提供数据类型数量用于声明其值由数字和度量单位组成的属性。“单位”可以是任何不以数字开头的文本标签,例如“英里”、“公里²”或“米/秒”。要使一个单元(或单元的替代书写)可用,它必须首先宣布在属性页上,如下所述。只能使用声明的单位,所有其他单位将被视为输入错误而拒绝。因此,在声明至少一个单位之前,Quantity类型的属性几乎没有用处。这种严格系统的优点是,即使使用不同的单位来编写属性值,SMW也可以相互比较属性值。每个输入值都明确指定了一个可以理解的“数量”(如时间量或距离),即使是以各种方式书写。属性值实际上是这样一个数量(这是存储的内容),而不是用于在某些wiki页面上写入它的特定文本(此文本或其原始单位未存储)。我们已经看到了其他数据类型的类似行为,例如SMW不存储数字是写为“2”还是“2.0”,但始终将其视为相同的数字。

要在SMW中使用单位转换,首先需要创建合适的属性。像往常一样,您可能首先想使用wiki搜索,然后特殊:属性检查是否已经有适合您用途的物业。如果没有,请在属性命名空间中创建一个新项目。例如,假设我们想引入一个属性:Power测量…的物理量权力在新文章中,你应该先写一些句子,说明这个新属性的用途和用法。在我们的例子中,这意味着我们指的是通常以瓦特。这也有助于其他人在搜索关键字时查找和重用您的类型。要指定数据类型,可以添加注释

[[具有类型::数量]]

页面上的某个地方(最好是在句子中)。要声明支持的单位,可以使用一个特殊属性对应于。例如,要指定主机对于power的新数据类型,我们添加了

[[对应::1 W]]

值“1W”表示两件事:(1)类型理解单位“W”,(2)单位“W“是它的主要单位(这就是“1”的含义)。主单位是显示此数据类型值的默认选择,只要用户输入了一个纯数字而没有给出任何单位,就会假定使用主单位。很容易指定其他单位,例如。

[[对应::0.001 kW]][[对应::0.0013410220 hp]]。

这说明该型号也能理解单位“kW”和“hp”。现在,阅读注释更有意义:1 W对应0.001 kW,而0.0013410220 hp对应。通过这种方式,您可以支持任意单元,只要它们与主单元的关系可以用这种简单的方式描述即可。

在许多情况下,指代一个单位有多种方式。例如,我们希望允许用户编写“W”和“Watt”,甚至“Watts”。这样做的一个简单方法是用“,”分隔额外的单元,而不是用相同的因子生成多个“对应于”语句。例如,我们可以写:

[[对应:1 W,Watt,Watts]][[对应:0.0013410220 hp,bhp,马力]]

在这种情况下,在我们的示例“W”中,主单元是1的“对应”语句中的第一个单元。属性将理解“对应”语句中定义的所有单位,并显示它们之间的转换(没有重复项,即SMW不显示“W”和“Watt”)。

在内部,这些值将全部转换为主单位RDF导出将只显示此单位中的值。完全不包括单位的输入始终被理解为主单位中的值从这个角度来看,单位转换只是一种预处理(用户输入)和后处理(显示),使用户更容易处理单位。wiki中的单位显示具有高度的可定制性,无需涉及主单位,请参阅下文。

提示:如果许多属性使用相同的单位声明(例如“属性:宽度”和“属性:高度”),那么最好将单位声明放入一个可以包含在所有属性页中的模板中。这样可以确保测量相同数量的属性始终支持相同的单位。

注:在属性值中,单位必须始终写在数字之后。不支持“$100”这样的前缀单位。

不成比例的单位转换[编辑]

对于数据类型Quantity,您只能指定比例转换因子,即乘数。因此,不同单位不能有不同的基数,对数刻度转换等。例如,不能为应将温度从摄氏度转换为华氏度的属性定义自定义转换(这种转换不仅涉及乘法,还涉及加法)。然而,在温度方面,SMW已经提供了内置的数据类型温度它处理这个转换,但在其他情况下可能不是这样。

SMW不允许在wiki中指定自定义的非比例单位。一种解决方法是使用数据类型编号并在注释中省略单位,只将其写入wiki文本。这消除了单元支持的方便的预处理和后处理功能,但在大多数其他功能(查询、导出等)方面提供了相同的功能。也可以使用带有解析器函数的模板来实现某些单元转换,但这通常会导致复杂的wiki文本和效率较低的处理。

如果确实需要新的单元,更好的解决方案是编写一个小PHP脚本来实现所需的转换。以这种方式扩展SMW并不困难,您可以简单地复制和调整类型代码:温度(包括评论在内,仅略长于100行)。在实现这样一个自定义类型后,type:Number的现有属性可以更改为新类型,而不会对现有项目产生任何负面影响。当遇到不支持的单位时,自定义类型的行为仍将类似于简单的数字数据类型。

自定义单位显示[编辑]

单个属性可以支持多种单元。例如,单个长度属性可以轻松支持光年和纳米。即使在特定属性中只需要其中一些单位,如上所述在模板中声明所有相关单位仍然可能有用。然而,如果有人使用属性“海拔”来指定山的高度,那么以光年或纳米为单位显示该值几乎没有用处。

因此,SMW允许您从属性支持的所有单位中指定属性应显示的单位。如果没有显示首选项,属性将显示其所有单位,首先显示主单位(换算系数为1的单位)。

要指定自定义显示单位,请添加特殊属性显示单位在属性的页面中,指出要用逗号分隔显示的每个单位。例如,文章属性:高度可以包含以下语句:

[[显示单位::公里、英尺、英里]]

这导致factbox仅显示属性Height值的这三个单位,尽管它可能支持十几个其他单位。类似地,每个此类值的工具提示将显示这些转换。此自定义适用于使用带有单元支持的类型的所有属性。

如果更改第一个显示单元,请考虑将主单元作为其他显示单元之一显示给用户,因为SMW在存储值时仍会将值转换为主单元。

另请参见帮助:Displaying_information对于特定打印输出,以便在ask查询中指定单位:

?高度#cm

单位标签[编辑]

语义媒体Wiki 2.5.02017年3月14日发布,与MW 1.23.0-1.29.x兼容。自定义单位标签可以使用空格1例如

[[显示单位::km²]]

早期版本SMW中的自定义单位[编辑]

高达语义媒体Wiki 1.5.62011年2月24日发布,与MW 1.14.x-1.17.x兼容。,数据类型有自己的wiki页面,自定义单位在数据类型页面上声明,而不是在属性页面上声明。此外,还可以定义自定义数据类型。数据类型Quantity不存在,数据类型Number和所有自定义单位转换类型都将接受未知单位作为输入。为了简化整个过程(减少一个名称空间、更少的页面、更少的特殊情况),已经将其更改为当前系统。要像在旧系统中一样重用许多属性页上的单元声明,只需将单元声明放入模板包含在许多属性页中。

请参见帮助:自定义单位1.5获取旧系统的文档。

工具书类

  1. ^ | 语义MediaWiki:GitHub拉取请求高:轻:1718