Help:属性及类型

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

语义模板

服务链接

语义网
RDF导出

外部工具

词表导入

本体导入

SMW 管理员手册

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

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

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


创建属性

将链接转变为属性

首先,就拿关于柏林的Wikipedia文章来说。 此文之中含有许多指向其他文章的链接,如«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::链接]]

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

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

3,396,990 

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

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

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

属性的数据类型

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。

数据类型列表

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

页面数据类型描述提供方
数据类型 URL型URL(URL型)用于保存URIs、URNs和URLs(类似于字符串型,即String型)Semantic MediaWiki
数据类型 代码型Code(代码型)用于保存预先格式编排的技术文本(类似于文本型,即Text型)Semantic MediaWiki
数据类型 地理坐标型Geographic coordinate(地理坐标型)用于保存旨在描述地理位置的坐标Semantic Maps
数据类型 字符串型String(字符串型)用于保存长度最多可达255个字符的字符序列Semantic MediaWiki
数据类型 布尔型Boolean(布尔型)用于保存布尔逻辑值(true/false)Semantic MediaWiki
数据类型 数值型Number(数值型)用于保存整数和小数,且可带有可选的指数Semantic MediaWiki
数据类型 数量型Quantity(数量型)用于保存那些描述数量的取值,其中同时含有一个数值和一个计量单位Semantic MediaWiki
数据类型 文本型Text(文本型)用于保存任意长度的文本Semantic MediaWiki
数据类型 日期型Date(日期型)用于保存特定的时间点(points in time,时刻)Semantic MediaWiki
数据类型 标注URI型Annotation URI(标注URI型)用于保存URIs,但与"URL"类型相比,在导出过程中还是有些技术上的差别Semantic MediaWiki
数据类型 温度型Temperature(温度型)用于保存温度值(类似于数量型,即Quantity型)Semantic MediaWiki
数据类型 电子邮件地址型Email(电子邮件地址型)用于保存电子邮件地址(类似于字符串型,即String型)Semantic MediaWiki
数据类型 电话号码型Telephone number(电话号码型)用于保存基于RFC 3966标准的国际电话号码Semantic MediaWiki
数据类型 记录型Record(记录型)允许保存采用由类型与次序固定的取值所组成的简短列表构成的复合属性取值Semantic MediaWiki
数据类型 页面型Page(页面型)用于保存维基页面名称并将其显示为链接Semantic MediaWiki

枚举与"允许取值"

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

计量单位

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

逆向属性

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

特殊属性

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

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

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

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

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

定义反复出现性事件

另一种类型的复杂数据就是反复出现性事件(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}}

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

早期版本之中的处理

一直到SMW 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版到最新版本的所有版本。
      其他语言: enfrruuk

Help:Properties and types zh-hans 1.6.0