根据用户对于文章的语义标注,Semantic MediaWiki能够采用OWL/RDF格式生成机读型文档,从而可以采用特殊页面Special:ExportRDF来访问这些文档。 而且,还有一个维护脚本,可以自动生成所有语义数据的完整导出。本文旨在阐述如何采用OWL本体语言对标注加以形式化的解释,以及如何生成合适的RDF序列化。
导出功能的使用[edit]
借助于Special:ExportRDF页面,通过在输入栏当中输入文章列表,用户可以轻松地访问所生成的RDF。 这种导出结果当中将包含一份OWL/RDF规范(specification),其中备有所导出元素的各种描述块(description blocks)。 除了所请求的文章,导出结果当中还包括对于任何其他元素(如所提到过的实例、属性以及类)的基本声明。 有两项设置可以进一步影响所导出的那套文章:
- 递归式导出(Recursive export): 每篇文章通常都会与其他各种各样的文章之间存在着不同的关系。正常情况下,对于其他这些文章只是进行简要的声明,从而在需要的时候各种工具可以找出进一步的RDF规范。通过启用递归式导出功能,将会立即导出关于所遇到对象的全部信息。这一过程将会针对所有进一步的对象而继续进行下去,因而此选项可能导致庞大的结果。
- 反向链接(Backlinks): RDF数据模型是建立在有向图(directed graphs)的基础之上。 当导出一篇文章的时候,我们通常导出的仅仅是相应元素在其中以主语(subject)出现的那些声明,而所导出的文档之中并不包括链入式链接(incoming links)。这就对RDF浏览器形成了限制,因为在没有首先获取整个RDF之前,这些浏览器就无法访问所有与某事物存在某种关系的元素。有鉴于此,我们可以启用反向链接(backlinks)的导出。这样,也将导出所有与任何所导出的文章存在关系的文章。
服务器管理员可以对上述这些选项的可用性加以限制,并且可以为无法提供任何参数的情况设置默认取值(参见下文)。原因就是,上述这些选项,尤其是组合起来的时候,可以轻松地造成以RDF格式导出维基站点的主要组成部分,而这可能会过度损害大型网站的性能。
除了Special:ExportRDF页面上的表单外,亦可通过直接调用合适的URLs来获取RDF。 这种办法适合于直接链接到RDF规范。就其基本形式而言,可以通过在导出服务URL的后面追加一个(URL编码型)文章名称来实现。 例如,可以通过链接到:
http://wiki.ontoworld.org/index.php/Special:ExportRDF/ESWC2006
来直接获取该RDF。或者,亦可将该文章名称指定为该URL当中的一个GET参数"page"(页面),比如:
http://wiki.ontoworld.org/index.php?title=Special:ExportRDF&page=ESWC2006
额外的GET参数[edit]
除了标题(title)和页面(page)外,ExportRDF还有额外的GET(查询字符串)参数。
- 可以通过把"backlinks"设置为1或0,分别来启用或禁用反向链接。
- 可以通过把"recursive"设置为1或0,分别来启用或禁用递归式导出。
如果管理员禁用了这两项设置的话,则将会忽略二者。如果未提供任何设置,则适用的将是站点级的默认取值。例如,维基站点ontoworld.org就始终采用反向链接来导出RDF。
ExportRDF输出的默认内容类型(Content-Type)为application/xml(且charset=UTF-8)。可以通过添加"xmlmime=rdf" GET参数来设置内容类型application/rdf+xml。一些处理工具处理结果输出时需要这种RDF MIMEType【注:多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)】。
导出全部数据[edit]
除了维基站点的Special:ExportRDF功能,还有一个维护脚本,可让您导出一次性导出维基站点的全部语义数据。该脚本称为SMW_dumpRDF.php,并且可在SMW的维护目录当中找到它。该目录当中还包含一份README自述文件,其中描述了在您本地的MediaWiki安装当中如何安装维护脚本。
维护脚本SMW_dumpRDF.php可以生成完整的导出,亦可将其限制到schema(方案、架构)的某些元素。比如,仅仅导出类别层级结构或者仅仅是那些特征属性(attributes)及其类型。该脚本自身当中对细节情况进行了描述。
可以轻松地将该脚本作为一项cronjob加以自动运行,从而定期生成RDF转储形式(dumps)。对于ontoworld.org,可以从 http://ontoworld.org/RDF/ 那里获得所产生的这种转储形式。
所导出数据的详情[edit]
维基页面到本体元素的映射[edit]
导出会将维基站点当中的页面与页面当中所讨论的"事物"区别对待。……
可以向Semantic MediaWiki当中导入外部词表(如foaf或Dublin Core),并且将SMW当中的特征属性(attributes)和关系(relations)与外部词表关联起来,从而在RDF导出结果当中,SMW特征属性和关系将导出为外部词表当中的属性(properties)(比如,foaf:knows或skos:concept)。
类别[edit]
MediaWiki类别关系是利用已有的RDF/RDFS属性来导出的。简而言之:
- 普通文章里面的类别指定(category assignment)将导出为rdf:type,而这表明“是某个类的一个实例”。因此,MediaWiki类别的运用就好比是,就"圣地亚哥是城市类的一个实例"而言的"is a"("是一个……",类属关系)。
- 类别文章当中的类别指定将导出为rdfs:subClassOf,而这表明"一个类的所有实例也都是另一个类的实例"。因此,在类别文章里面运用MediaWiki类别就好比是,就"直辖市的所有实例都是城市"而言的"is a"("是一种……",类属关系)。
目前,MediaWiki类别的很多用法都与这些语义相冲突。 例如,文章Urban decay(城市衰退)可能就在城市类别Cities当中,但其并非城市。 同样,Category:City museums(城市博物馆)也可能就在城市类别Cities当中,但城市博物馆也不属于是城市。
有关OWL DL的限制[edit]
...TODO