Help:属性及类型

From semantic-mediawiki.org
SMW 用户手册
入门
浏览界面
Special:Ask
Special:Browse
语义搜索
页面选择
严格的比较操作符
显示信息
结果格式
嵌入式查询
概念
推理
编辑
属性及类型
特殊属性
自定义计量单位

语义模板

服务链接

语义网
RDF导出

外部工具

词表导入

本体导入

SMW 管理员手册

属性(properties )及类型(types)Semantic MediaWiki之中输入语义数据的基本方式。 可将属性视为«维基页面之中取值的类别»。这些属性是供一种与MediaWiki之中的链接语法相类似的简单置标(mark-up)来使用的:

[[属性名称::取值]]

该语句规定的是给定属性名称的属性的一个取值。 使用该语句的页面将仅仅显示取值的文本,但并不显示属性赋值(property assignment)部分。


创建属性[edit]

将链接转变为属性[edit]

首先,就拿关于柏林的维基百科文章来说,此文之中含有许多指向其他文章的链接,如“Germany”、“European Union”和“United States”。然而,指向«Germany»的链接具有特殊的含义:之所以在那里放置该链接,是因为柏林是德国首都。要让这一知识可供计算机程序使用,我们会想在该文章的正文当中对该链接加以如下«标签(tag)»:

[[Germany]]

从而,将其确定为一条描述«首都属性(capital property)»的链接。在采用Semantic MediaWiki的情况下,在方括号里将属性名称和双冒号::放在该链接之前,也就是:

[[Is capital of::Germany]]

在文章当中,该文本依然显示为一条简单的,指向“Germany”的超链接。其中,附加文本capital of(是……的首都)乃是属性名称,用于对这条指向Germany(德国)的链接加以分类。就像类别那样,属性名称是人为设定的,但用户们还是应当尽量重复利用别处早已存在的那些属性。

为了简化这种重复利用,就像每个类别都有各自的文章一样,每个属性在维基站点当中也有着各自的文章。利用特殊页面Special:Properties,可查看当前维基站点之中正在使用着的所有属性。就像类别文章以Category:为前缀那样,所有的属性文章也以Property:为前缀,从而将其与其他的文章区别开来。因此,亦可利用特殊页面Special:Search来查找已有的属性。与类别一样,属性的文章可以为空,但还是强烈建议为其添加一定的描述,用于解释该属性的意图以及正确使用方法。

有多种多样为页面添加属性的方法:

实际效果 您的输入
利用属性"示例属性"对链接加以分类。
利用属性"示例属性"对[[示例属性::链接]]加以分类。
在链接的位置上显示替代文字
在链接的位置上显示[[示例属性::链接|替代文字]]。
要使属性 隐藏起来,彻底不显示,请以一个空格作为替代文字。
要使属性[[示例属性::链接| ]]隐藏起来,彻底不显示,请以一个空格作为替代文字。

注意:通道符 | 后面的空格必不可少。如果将其遗漏,MediaWiki的通道符特技(pipe trick)就会适用,但要获得希望的效果却罕见。即使是输入一个空格,SMW也不会打印输出任何东西,而这应当是大多数情况下所希望的结果(要让正文中显示空格,请以 为空格符)。

要在不创建属性的情况下建立带有双冒号 :: 的普通链接,请在其前面采用一个英文冒号来实现该置标的转义。比如,C++ :: 操作符
要在不创建属性的情况下建立带有双冒号 :: 的普通链接,请在其前面采用一个英文冒号来实现该置标的转义。比如,[[:C++ :: 操作符]]
要将一个取值,比如"链接",赋予多个属性,请在属性名称之间插入双冒号 :: 。
比如,链接
要将一个取值,比如"链接",赋予多个属性,请在属性名称之间插入双冒号 ::。 <br />比如,[[属性1::属性2::链接]]

将文字当中的取值转变为属性[edit]

除了指向其他文章的链接之外,维基站点文章里还存在着其他应用的信息。 例如,在Berlin这篇文章当中,有个数值给出了柏林的人口数量。 要让这一知识为计算机程序可用,我们希望在该文章之中对该数值的文字加以"标记":

3,396,990 

从而将其确定为"人口数量属性"的一个取值。 利用Semantic MediaWiki,我们可以在其文字之前插入属性名称和双冒号::,并使用方括号[[ ]]将其括起来,因而得到如下形式:

[[population::3,396,990]].

这种方式是有效的。 然而,这会创建出一条指向页面3,396,990的链接,而为每个人口数量取值都设立一篇文章也许并不合理。 而且,如果您希望创建一张按人口数量排序的包含所有德国城市的列表,就您所期望的文章名称而言,其数值顺序有别于其字母顺序。 例如,采用字母顺序时,"1,000,000"居于"345"之前。我们希望能够告诉Semantic MediaWiki,在此维基站点当中,人口数量"population"是数值,而不是页面。 实现这一点的方法就是,为人口数量属性"population"指定类型(type)。详情请参见下一节。

属性的数据类型[edit]

Semantic MediaWiki备有几种可供我们为属性选用的内置数据类型。 对于我们之前关于人口数量的示例,其合适的类型称为Number(数值型)。 我们希望为人口数量属性"population"赋予一种特殊的属性,规定其拥有的数据类型为"number"。为此,Semantic MediaWiki备有一种内置的特殊属性(special properties),称为Property:Has type(具有类型……)。像对待任何其他属性一样,对于这个特殊属性,我们采用的是同样的语法,因此,在关于人口数量属性"population"的文章Property:Population里面,我们写道:

[[Has type::number]]

Semantic MediaWiki知晓许多像Property:has type这样的特殊属性。 无论这些属性是否在本维基站点之中拥有各自的文章,它们依然分别具有某种内置的含义,并且在计算处理上也不同于其他属性。

数据类型对于属性的计算处理非常重要。首先,数据类型决定着各种工具应当如何处理给定的取值,比如,在搜索结果当中对于取值的显示以及排序。 其次,数据类型对于理解哪些取值具有相同的含义必不可少,比如,取值"1532"、"1,532"和"1.532e3"全都编码的是同一数值。 最后,如下文所述,一些数据类型还具有特殊的行为。鉴于这些原因,对于每个属性,都应当采用某种数据类型加以定义。

我们当时不必为上述的首都属性"capital of"规定数据类型的原因是,默认数据类型是显示为一条链接的Page(页面型)。尽管数据类型Page是默认的,您也应当为每个属性明确规定一种数据类型,以防止混淆或今后将其重定义成某种意外的类型。 SMW型网站的管理员亦可更改默认数据类型

属于页面链接的属性的置标,同样适合于其他数据类型的属性。如下是一些更多的例子:

效果说明 您的输入
把取值1,234,567赋予属性"Population"。
该国的人口数量为[[Population::1,234,567]]。"
赋予一个数值,但在文章里面显示不同于该数值的文本。
该国的人口数量为[[Population::999,331|大约一百万]]。
在属性的文章里面规定其类型。比如,
This property is a number.
This property is a [[has type::number]].
利用"URL"型属性显示网络链接。
请到[[website::http://example.com]]在线访问我们。
利用"Email"型(电子邮件地址型)属性显示"mailto"(发送至)链接。
您可以采用[[email address::john@example.com]]联系John。

数据类型列表[edit]

利用不同的类型,属性可用来描述种类截然不同的取值。 Special:Types页面提供有一张完整的可用类型列表。 目前,现成可用的类型有:


枚举与"允许取值"[edit]

除了为属性赋予数据类型外,亦可将其允许取值限制到特定的集合(就像适合于属性输入栏的白名单)。其实现方法就是,利用特殊属性Property:Allows value来枚举出相应属性的那些允许取值。这对于每种数据类型均有效。

计量单位[edit]

数据类型Help:Datatype "Quantity"(数量型)允许在数值后面加上计量单位,从而将不同的取值区分开来(比如,"30 miles"与"42 km")。要支持自动转换和多种计量单位格式,需要按照关于惯用计量单位的文档所述,对每个所支持的计量单位加以声明。 属性取值即可在不同的计量单位之间实现自动转换,从而用户就可以自由地在各个文章里面使用各自的首选计量单位,同时又能查询其他文章当中的属性取值并与之比较。

逆向属性[edit]

自从SMW 1.5.0版起,即可逆转数据类型为Page(页面型)的属性的方向。详情请参见相应的帮助页面

特殊属性[edit]

之前,我们提到了用来为属性定义数据类型的特殊属性Property:Has type。 SMW还备有其他若干具有特殊含义的,预定义的特殊属性(即使是您在自己的维基站点当中并不为它们创建属性页面)。您自己的属性无法使用这些名称,但自从SMW 1.4.0版起,您可以在浏览和查询界面之中就像其他属性那样使用这些名称。有关详情,请参见Category:Special property以及具体的属性页面。

利用#set实现静默式标注(silent annotations)[edit]

亦可利用解析器函数#set来定义语义数据,而不是采用标准的双方括号置标(double-brackets markup)。 该函数成对地接受属性名称与取值,并采取语义的方式将其存储起来;但是,该函数并不向屏幕输出任何东西。这样的一个示例调用就是:

{{#set:Has population=3,396,990|Has country=Germany}}

当试图保存一个维基链接(wiki-links)之类其中含有方括号的字符串型(String)或文本型(Text)取值时,这种#set调用尤为有用。此类括号往往无法与常规的SMW标记相兼容。

定义反复出现性事件[edit]

另一种类型的复杂数据就是反复出现性事件(recurring events,反复出现的事件)。此类事件指的是依据预定规则所定义的,具有多个日期的事件(例如,周会或者说每周一次的会议)。 可以采用解析器函数#set_recurring_event为此类事件定义那些相应的日期取值。 与#set类似,这个函数也属于"静默式(silent)",并不打印输出任何东西。 如下为一个示例调用:

{{#set_recurring_event:
property=Has date
|start=January 4, 2010
|end=June 8, 2011
|unit=week
|period=1
|include=March 16, 2010;March 23, 2010
|exclude=March 15, 2010;March 22, 2010}}

详情可参见反复出现性事件

早期版本之中的处理[edit]

一直到Semantic MediaWiki 1.5.6版,数据类型在称为"Type"它们自己的命名空间里面都有着具体的页面。 后来,为了减少额外命名空间的数量,废弃了这种做法。 在本维基站点里面,您仍可找到"Type:Number"之类的表达式在使用。 对于为属性指定数据类型来说,两种写法均可接受。

在SMW非常早期的版本里面, 数据类型为Page(页面型)的属性当时称为relations(关系),且只有这些属性在属性名称与链接文字之间采用双冒号(::)作为分隔符。所有其他的属性(数值型、字符串型等等)当时则称为attributes(特征属性),且必须以冒号等号(colon equals)(:=)作为分隔符。

对于SMW 1.0版当中的其他变更,请参见从SMW 0.7版升级到SMW 1.0版; 如果目前您仍在使用旧版本的SMW,对于0.7版当中标注的文档,请参见semweb:Help:Annotation (SMW0.7)


本文档页面适用于SMW从1.6.0版到最新版本的所有版本。
      其他语言: frruuk

Properties and types zh-hans 1.6.0