SMW
阅读
2025-07-05更新
最新编辑:庄森
阅读:
更新日期:2025-07-05
最新编辑:庄森
SMW简介
Semantic MediaWiki(SMW)是一个免费、开源的MediaWiki扩展。它可以帮助wiki进行搜索、组织、标记、浏览、计算和共享数据。传统wiki只包含文本信息,计算机无法对其进行理解和计算。SMW为wiki添加了语义注释(Semantic Annotations)数据,从而使wiki具有数据库的功能。
SMW首次发布于2005年,目前有超过十名开发者,数以百计的站点使用了SMW。另外,目前已有许多相关扩展可以扩充SMW的编辑、显示和浏览数据的功能。Semantic MediaWiki有时也指整个SMW和其相关扩展系列。
关于本页面
本页面仅针对SMW常用语义进行简要说明,详细的机制和更深一层次的说明可以参见:Semantic MediaWiki和THBWiki中的帮助:SMW说明。
简单机制介绍
- 语义注释函数:通过语义注释,给页面定义属性,给属性赋值。例如:#set等(其他略)
- 行内查询函数:主要用途为检索所需的页面,并显示所需的属性值。例如:#ask,#show
- 其他功能性函数:提供一些便利功能的,例如:#info等(其他略)
- 主要使用逻辑:使用语义注释函数(#set)在页面上储存数据,然后使用行内查询函数(#ask、#show)按照一定的定义和分类进行行内查询,最后输出结果。分页面储存便于多人协作,但同时也增加了维护的总量。
说明
- BWIKI提倡大家多使用SMW语义来处理一些数据向的内容。
- 另外一本正经教程详见旧教程存档
如何使用SMW
首先:要为想被查询的页面声明想要被查询的属性
这就需要一个SMW中很重要的函数:#set
- 语法格式
 {{#set:
 |属性名1=值1,值2|+sep=,
 |属性名2=值1;值2;值3;|+sep=;
 |属性名3=值1
 |属性名3=值2
 |属性名4=值1|值2|值3
 |属性名5=值1
 …
 }}
- 语法解释:
- 允许单行声明单个属性名的单个属性值或多个属性值。例如例子中的属性名5和属性名1/2/4的写法
- 允许多行声明单个属性名的多个属性值。例如例子中过的属性名3的写法
- |+sep=用来声明单行属性名多个属性值中间的分隔符。如果不通过- |+sep=来声明,默认使用- |为分隔符。例如例子中的属性名1用- |+sep=声明了多个属性值之间的分隔符为- ,;属性名2中用- |+sep=声明了多个属性值之间的分隔符为- ;;而属性名4直接使用了默认分隔符- |来分割多个属性值。
- 查看声明是否生效
- BWIKI页面上的"WIKI功能按钮"中点击浏览属性按钮,就可以看到该页面已经声明的属性有哪些。
然后:我们需要了解如何进行查询和展现效果
这里涉及SMW另外一个核心函数:#ask
- 我们通常在页面上这样使用:
{{#ask:[[分类:游戏WIKI]][[列表显示::显示]]
|?游戏名
|?WIKI域名
|?创建时间
|?创建人UID
|?创建人昵称
|link=none
|sort=创建时间
|template=游戏WIKI申请列表
|headers=hide
|order=desc
|format=template
|limit=1000
}}
- 简单归纳下
{{#ask:[[>>查询条件<<]]
|?>>展示信息<<
|>>输出结果式<<
}}
如何写查询条件
- 通过分类进行查询:[[分类:载具]]
- 通过属性进行查询:[[载具名称::汽车]]
- 组合查询:[[分类:载具]][[载具名称::汽车]]。这种写法其实是逻辑and(代码相关概念,初学者可以理解要同时满足所有查询条件)的写法。另外,逻辑or的写法为[[分类:载具]]or[[分类:交通工具]]当前版本失效[[分类:载具||交通工具]]
如何写展示信息
- 仅展示值:|?>>展示的属性名<<
如何写输出结果式
SMW为我们提供了非常多的参数来控制输出结果,具体参数可以见下表:
| 参数 | 值 | 说明 | 
|---|---|---|
| format | 详见format说明 | 选择结果展示出来的格式,可不填。常用的值为template,以模板进行输出结果。如果不配置,会默认以表格输出查询结果。 | 
| limit | 1~1000的整数 | 输出的结果的最大数量 (在table下是行数),BWIKI为了方便用户已将该值上限调整到 1000。 | 
| offset | 数值 | 输出查询结果的起始位置,表示从第几个开始,从 0 开始计数。例如 offset=2 limit=10 表示从总查询的结果的第 3 个到第 12 个结果。如果不填则默认为 0。 | 
| sort | 属性名 | 指定一个查询页面中存在的属性(可以不展示),所有结果会按照这个属性值来排序。如果某个被查询的对象无此属性,则返回的结果中不会有这个对象。 | 
| order | 升序: asc降序: desc随机: random | 查询结果的输出排序规则,默认为升序。如果未指定sort,则不会生效。 | 
| headers | show,plain,hide | 控制输出结果表头第一行的样式,show是默认值。hide隐藏,plain是不带链接的纯文本 | 
| mainlabel | 纯文本 | 定义表格第一行第一个单元格的文字内容,如果配置为“-”,则会隐藏第一列标题 | 
| link | none,subject,all | 控制结果中的值是否带链接, all 为全部带链接,subject只有第一列带链接,none则是全部不带链接。 | 
| default | 纯文本 | 当查询的返回结果为空值时所显示的文字 | 
| searchlabel | 纯文本 | 当查询的结果超过了limit的限制后,会出现一个点击查看更多的链接,可以通过searchlabel来定义链接的文字。配置为空时,则不会显示点击查看更多的链接。由于BWIKI该功能有缺陷,请直接设置为不显示。 | 
更多的结果式
通过控制 format 对应的参数,可以输出非常多的结果式。详见:format说明
其他
- 属性名称、输出字段中不可使用“+”符号
 
                
 沪公网安备 31011002002714 号
                    沪公网安备 31011002002714 号