服务链接

From semantic-mediawiki.org
目录

Semantic MediaWiki可在事实框当中以及属性页面上打印输出某些数据的时候,提供指向在线服务的链接。 例如,当文章当中含有地理坐标时,有用的做法就是提供指向在线地图服务的链接,从而用户通过一次点击即可获取相应位置的地图。 另一个例子就是,针对货币金额提供指向在线货币转换程序的链接。 本页面旨在阐述如何才能为语义维基站点添加此类功能特性(无须通过编写PHP代码来支持新数据类型的情况下)。

针对属性的服务链接[edit]

关于事实框之中指向在线服务的额外链接的信息,与所采用的属性相关联。 例如,本维基站点的坐标属性Property:Has coordinates当其出现在事实框当中的时候,将显示各种各样指向在线地图的链接, 而同样采用数据类型Geographic coordinate(地理坐标型)的其他属性则可能并不显示此类链接。 这在许多应用当中都是至关重要的,因为数据类型本身通常并不会表达太多关于链接类型的信息。 例如,属性"IMDb number"可能用于表示IMDb上的电影的标识号,但并不是每个数据类型为Number(数值型)的属性都应当显示指向IMDb的链接。

要让属性显示服务链接,请在其相应的页面上添加特殊属性provides service。例如,坐标属性文章Property:Has coordinates可能会包含如下标注:

[[provides service::online maps]]

其中,"online maps"乃是维基站点所提供的一套服务链接的名称。下一节将阐述如何说明这些服务链接。

在您规定了一个属性提供若干的服务链接之后,其在事实框当中以及在该属性自身页面之上的属性取值,将显示出一个服务链接图标Service links icon.png,用于在点击它时显示相应的服务链接。

服务链接的提供[edit]

简而言之,维基网站管理员负责给出相应的文本,用来说明位于名为MediaWiki:Smw service service name的"MediaWiki"命名空间当中的某个特定的消息文章里面的那些服务链接的外观形式。继续上述我们关于coordinates的例子,适用于[[provides service::online maps]]的文本就位于消息文章MediaWiki:Smw service online maps当中。

通常,在维基站点里面,只有那些具有sysop(管理员)权限的用户才能添加或编辑MediaWiki命名空间当中的页面,因此只有他们才能修改服务链接。 对于大多数维基站点来说,这是一项合情合理的限制:因为服务链接可能出现在成千上万的事实框当中,它们需要值得信任才行。 在管理员将此类变更付诸实际之前,通常应当在许多用户当中对服务的添加与修改加以讨论。

不过,所有的用户均可如上所述自由地将属性与现成可用的服务关联起来。

Mediawiki:Smw_service_service_name格式[edit]

假如您查看MediaWiki:Smw service online maps的话,尽管其消息可能会因为长长的代码行而显得难以阅读,但其基本上为如下格式:

 label|http://someurl.com
 label text2|http://anotherurl.org
 ...

每行分别都包含一个服务链接。其中,label是用户将在相应的服务链接弹出框当中看到的文字。 在通道符'|'之后,乃是该链接所要指向的URL

在大多数情况下,您都会希望利用该链接之中的属性取值来提供信息。 例如,一条指向在线地图服务的链接必须要包含所要显示的那些坐标,而指向电影网站的链接则必须包含相应电影的ID。 确切的数据取值事先并不知道,所以要在URL当中使用$1$2$3、…之类形式的占位符。 例如,指向IMDb的服务链接的消息文本可能是:

IMDb|http://www.imdb.com/title/tt$1/

当SMW为某个属性取值显示相应的服务链接时, 它将会采用该属性取值的信息来替换这些占位符。 在上述这个关于IMDb的示例中, Type:Number(数值型)的电影ID将采用其数值来取代$1,那也就是,电影的服务链接链接到它在IMDB上的信息!

服务链接通常被视为"可信资源(trusted resources,受信任的资源)",管理员们在构建这些链接时必须倍加小心,谨记用户可能会意外地或者恶意地向占位符当中的服务链接URLs传送任意的URL编码型字符串。

为每个占位符所传递的信息[edit]

那些取代$1$2$3、…的参数的数量和内容,取决于相应属性的数据类型。 例如,简单的整数属性将采用其数值取代$1,而地理坐标则会提供经度、纬度、方向等等方面的参数。 在大多数情况下,$1是最合适的参数,其提供的是一种URL安全版的属性取值。

页面型Help:Datatype "Page"
$1:URL编码型文章名称(无命名空间),且采用空格替换了下划线
数值型Help:Datatype "Number"(以及带有自定义计量单位的类型)
$1:采用英文标点符号的数值
$2:整数值,采用英文标点符号
$3:从SMW 1.1版起的计量单位,如果有的话
字符串型Help:Datatype "String"(但并不是文本型Help:Datatype "Text"
$1:URL编码型字符串
URL型Help:Datatype "URL"、标注URI型Help:Datatype "Annotation URI"以及电子邮件(地址)型Help:Datatype "Email"
$1:URL的URL编码型取值(包括针对Help:Datatype "Email"mailto:
地理坐标型Help:Datatype "Geographic coordinates"
注意:对此,您需要语义地图扩展Maps (formerly Semantic Maps) 0.6.5版以及SMW 1.5.1版及其以上版本。
$1:采用非定向浮点表示法(non-directional float notation)的位置
$2:采用定向DMS表示法(directional DMS notation)的位置
$3:采用非定向浮点表示法的纬度
$4:采用非定向浮点表示法的经度

地理坐标非常复杂,因而SMW包括了一条关于MediaWiki:Smw service online maps的默认消息 — 只需向您所拥有的任何Help:Datatype "Geographic coordinates"(地理坐标型)属性添加[[Provides service:online maps]]即可。

其他数据类型并不支持服务链接。 在SMW 1.1版中,多值型属性可以但并不支持服务链接(Task T16426)。

属性Property:Provides_service的显示[edit]

当向具有特殊属性"provides service"的属性添加服务链接时, 属性页面的事实框应当显示一条指向该服务的消息文章的链接。 然而,该功能在SMW 1.0版当中不起作用(Task T14438)。

经过拓展的示例[edit]

为了演示创建和使用新服务的整个过程,我们提供了一个同时也在semanticweb.org上实现了的,经过拓展的示例。 关于semweb:FOAF之类语义网词表的文章当中含有关于相应词表"命名空间"的信息,而在线服务semweb:Swoogle则允许用户此类命名空间上的背景信息。 我们的目标因而就是,为词表文章上所使用的命名空间属性semweb:Property:Namespace添加一项新的"Swoogle服务"。

第一步,我们首先编辑文章semweb:Property:Namespace,并在其中添加下列行:

As an additional service, this property provides a 
[[provides service::Swoogle lookup]] of the entered namespace.

该行文字的意思是:作为一项附加的服务,本属性将提供对于所输入命名空间的Swoogle查找服务。 在保存之后,其事实框将显示出一条连接,指向(尚不存在的)Swoogle查找服务Swoogle lookup。 单击该链接,管理员即可在其所输入的内容里面获得一个新的编辑栏

Swoogle lookup|http://swoogle.umbc.edu/index.php?option=com_frontpage&service=digest&queryType=digest_ns&searchString=$1

通过使用Swoogle并采用参数"$1"替换其搜索字符串(位于链接尾部),即可获得该链接。

在保存了这些变更之后,这项新的服务也就具备了完全的功能,而每个使用semweb:Property:Namespace的页面之上都将显示出一条指向Swoogle的合适链接。某些页面如果是获取自高速缓存的话,则仍会显示旧的版本,但在下次编辑或清洗之后,所有的文章都将如期望的那样显示这些链接。