科技知识组织体系共享服务平台建设

课题研究内容

1、课题研发背景及目标

为了有效利用“科技知识组织体系(STKOS)”,让“科技知识组织体系”在我国科技界、科技信息服务机构和我国信息处理领域的科技创新中发挥作用,需要建设一个可靠的“科技知识组织体系共享服务平台”。 这一平台能够使我国的科研机构、信息机构、相关系统、相关人员能够方便有效地利用“科技知识组织体系(STKOS)”这一知识成果和相关的软件工具,使“科技知识组织体系(STKOS)”在我国的知识工程、知识组织、知识处理、知识服务的建设中起到重要的支撑作用,真正成为我国知识工程的基础设施。

“科技知识组织体系共享服务平台”的建设目标是基于科技知识组织体系(STKOS),构建支持我国科技界、科技信息服务机构和信息处理领域实现科技知识组织体系(STKOS)有效利用的开放式服务环境。本课题基于本项目其它相关课题构建的科技知识组织体系,开发可以在科技知识组织体系中实现知识点检索、浏览、关联、导航、下载的开放式共享服务平台,构建知识查询和知识推理引擎,提供基于知识组织体系的语义支撑服务和工具体系,通过标准化的检索查询和语义推理接口,支持第三方系统对STKOS的深度开发和利用,支持对第三方知识组织体系的集成,支持科技知识组织体系内容的不断丰富和完善。共享服务平台将为上层的各类应用提供知识服务的语义支撑,使其成为支持国内各类信息机构和科研机构的信息基础设施。第三方信息服务机构可以通过模块化选择、集成方式,灵活地将科技知识组织体系的检索、查询和推理功能嵌入到自己的服务应用中。

2、课题架构与技术路线

课题设计科技知识组织体系共享服务平台的总体框架如图1。


图 1 科技知识组织体系(STKOS)共享服务平台总体框架

基于以上STKOS共享服务平台的总体框架,课题以STKOS知识组织体系中的科技词表、领域本体和科研本体为基础,构建开放知识组织引擎,实现STKOS的发布服务,实现STKOS的工具集成服务,完成STKOS的第三方应用示范。

具体而言,课题将:(1)建立基于STKOS的知识查询和知识推理引擎,将知识组织体系变成一个能够有效对外提供服务的、开放的知识查询和推理引擎,使用户可以通过标准的接口协议,实现知识组织体系的深度开发和利用;(2)建设科技知识组织体系(STKOS)的发布服务系统,对外提供检索查询、浏览、导航、展示、下载服务,让用户可以方便地获取、查阅和利用科技知识组织体系,可以按标准的格式,输出学科领域内的STKOS片段,以促进STKOS的应用;(3)建设科技知识组织体系(STKOS)的相关工具的集成服务系统,一方面让用户可以下载和利用这些软件工具,另一方面,可以通过这些工具,在此平台上组织和定制用户自己的知识组织体系;(4)构建第三方信息服务系统中基于STKOS的语义检索和知识推理应用示范系统,应用示范系统支持第三方系统对STKOS的深度开发和利用,如支持第三方系统用户资源发现中的检索词规范、扩展检索、缩小检索范围和扩大检索范围、检索结果自动分面聚类和关联检索等,使科技知识组织体系(STKOS)成为支撑国内各类信息机构和科研机构开展知识服务的信息基础设施,提升NSTL信息服务系统和国内其他机构信息服务系统的服务效果和服务能力。

课题研究中各个关键研究工作的技术路线分述如下:

(1)基于STKOS的开放知识组织引擎系统建设的技术路线

采用Virtuoso作为知识存储引擎,通过使用物理层和逻辑层两级知识存储结构,设计实现了基于图模式的STKOS RDF存储结构,实现STKOS超级科技词表的四元组图模式存储(G,S,P,O)。在此基础上,设计实现了RDF索引和Solr两级索引。利用Virtuoso构建基于RDF图的语义索引,主要支持SPARQL查询、RDF的定制服务等。此外,在Solr上构建基于文本的多维语义索引,支持满足特定应用需求的词表检索、范畴浏览等,对于某些特定STKOS查询推理结果,通过离线方式计算,写入Solr索引,以实现系统整体性能上的提升。从而实现可以支持基于STKOS大规模数据的高性能可靠的知识存储索引系统的查询、推理等功能的知识存储索引系统。

在基于STKOS的开放知识组织引擎框架结构下,设计实现了以Virtuoso和Solr为基础的STKOS引擎的API,由两个子层构成:STKOS API基本接口封装层根据STKOS提供的元数据Schema,实现对STKOS的数据的基本操作,分为来源术语接口、科技术语接口、STKOS 规范概念接口、范畴类接口、来源词表接口、范畴表接口和元数据描述接口等;STKOS API 上层接口在STKOS API基本接口封装层的基础上,进行功能实现,根据实际应用的需求及特定的功能要求,实现并提供对外服务的API接口。此外,在STKOS基于关键词的查询扩展方面接口的实现过程中,通过整合solr的全文检索功能,实现特定的基于关键词的检索。

开放查询和语义推理接口主要基于Web Service体系架构。在服务体系架构上,针对基于SOA架构的系统中,STKOS的对外开放应用接口由一些松耦合并且具有统一接口定义方式的组件组合构建。利用基于SOA的系统构建方法,STKOS的程序功能可以被封装在功能模块中,利用这些已经封装好的功能模块与第三方系统实现调用关系,这些STKOS功能模块就是SOA架构中不同的服务。该架构在STKOS中作为SOAP处理器,并不依赖于任何Java特定的规范,这样与系统整体的体系结构形成了松耦合的关系。

REST是基于资源的体系结构,它是一种轻量级的Web Service架构风格,其实现和操作比SOAP和XML-RPC更为简洁,可以通过HTTP协议实现STKOS的第三方系统调用,还可以利用缓存Cache来提高响应速度,其性能、效率和易用性上都优于SOAP协议。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,利用REST来实现STKOS接口开发可以降低开发的复杂性,提高系统的可伸缩性。采用REST架构,可以实现开放查询和语义推理界面层和业务逻辑层分离,业务逻辑在业务组件中实现重用,不会因为界面层的变化而引起业务逻辑层面的变化,实现界面层和业务逻辑层的独立升级而不会有大的影响。

(2)科技知识组织体系(STKOS)发布服务系统建设的技术路线

科技知识组织体系(STKOS)的发布服务系统主要是利用开放知识组织引擎系统提供的功能为用户提供和定制各种相关服务,具体包括:STKOS开放发布平台的服务系统、STKOS开放发布平台的知识组织体系定制与集成系统和STKOS开放发布平台的后台管理系统。

STKOS开放发布平台的服务系统可以以多种方式浏览STKOS,如树型方式;为用户提供多途径多角度的STKOS查询;支持知识检索,提供快速的统计、聚类、分面等服务;提供SPARQL 端点查询,支持第三方系统对STKOS进行查询;提供互动和交流工具,以便不断地完善和充实领域知识组织体系。

STKOS开放发布平台的知识组织体系定制与集成系统可以接收本体及实例的导入;可以上载从第三方获取的本体、词表等,并支持对其的查看、编辑、保存等操作;可以在STKOS的基础上进行定制,输出学科领域内的STKOS片段,形成领域知识组织体系子集;支持知识组织体系子集的导出和下载,如XML、RDF等标准格式,形成自己本地化的知识组织体系。

STKOS开放发布平台的后台管理系统提供STKOS的多版本管理,支持本体和实例库维护与更新;用户权限的管理平台,编辑和修改不同用户组对知识组织体系的操作权限;提供知识组织体系的维护工具,以方便编辑、加工、重组和管理知识组织体系;可以显示知识组织体系的统计信息,如类的数量、实例的数量、对象属性的数量、数据属性的数量等。

(3)科技知识组织体系(STKOS)相关工具的集成服务系统建设的技术路线

科技知识组织体系(STKOS)相关工具的集成服务系统建设的技术路线是:首先设计插件型知识组织工具集的系统框架,研制插件注册组件,用于保存可用插件的信息。然后,系统地收集和整理一些重要知识组织工具,形成STKOS相关插件工具的仓储,并进行相关插件的注册。同时,设计基于知识组织体系建设的工作流。最后,在STKOS相关插件工具的仓储的基础上,实现对外发布系统,支持用户按需将所需要的核心插件有机地组合起来。

在科技知识组织体系(STKOS)相关工具的集成服务系统建设课题中需要管理大量本项目其他课题中构建的一些重要知识组织工具,并且用户可以基于知识组织体系建设的工作流程,按要求选择各种知识组织工具的核心插件,将这些核心插件有机地组合起来,完成某项知识组织体系建设的需要。这样就需要构建一个知识组织工具的插件库,以及一个插件型的知识组织体系工具集成系统框架,对这些插件进行有效的管理,使其能够被动态安装、开启、关闭、更新和卸载,同时在集成服务中还要满足用户的在线定制应用。

鉴于课题目标、系统建设需求和OSGi框架具有模块化、动态化、可扩展等优点,课题选用OSGi规范作为知识组织工具集成和组件建设的核心框架。OSGi是一种规范,需要通过具体框架实现。现有Equinox、Knopflerfish、Felix、SpringDM等多种OSGi开源实现框架,其中,Equinox和Felix最为成熟,且具有较为广泛的应用,在实际应用中,Equinox是的Eclipse所使用的OSGi框架,是Eclipse强大的插件体系的基础,Eclipse的稳定可靠性也证明了Equinox的有效性。结合本系统实际构建需要,综合考虑OSGi实现框架的稳定性、可扩展性、服务的全面性等方面,最终选取OSGi实现框架Equinox进行STKOS相关工具集成服务系统开发和建设。

在插件的知识组织工具集成框架和组件建设中,重点是工作流管理引擎的开发,在本系统中工作流管理引擎利用OSGi的插件动态管理机制、工作流规范以及插件与功能之间的映射关系进行构建。在工作流的知识组织工具集成服务系统中,根据用户定制请求利用工作流管理引擎把插件仓储中的相关插件进行有机组合和动态调用形成基于组织体系建设的工作流,以实现相应的应用来满足用户某项知识组织体系建设需要。

(4)第三方信息服务系统中STKOS的检索应用示范系统建设的技术路线

通过对STKOS各层次的知识组织体系的有机组合,通过提供标准的接口(如REST、SPARQL等),为标引工作的规范化、检索系统的优化、服务的知识化提供应用示范。

对于标引工作的应用示范,在中科院成都文献情报中心重要会议开放资源采集与服务系统上进行应用集成和整合。重要会议开放资源采集与服务系统主要是采集网络上与中国科学院基础研究和应用研究领域相关的重点学术会议发布的各类免费会议论文全文或摘要等,实现对重要会议开放资源的采集、标引、组织和保存,并在尊重知识产权的前提下,将重要会议开放资源作为数字知识资源的一部分为院内外的科研人员服务,与其它系统建立数据集成、交换、共享机制,成为数字知识资源集成服务环境的重要组成部分。通过STKOS开放知识组织系统提供的标准接口访问STKOS,在重要会议开放资源采集与服务系统的标引过程中调用STKOS的领域词表,提高会议文献标引系统术语、概念等的标引规范化、有序化,辅助重要会议开放资源采集与服务系统的标引工作。

对于检索系统的应用示范,在中国农业科学院农业信息研究所的科技文献信息平台(NAIS)上进行应用集成和整合。中国农业科技文献信息平台(NAIS)是中国农业科学院农业信息研究所自主开发、拥有独立知识产权的“一站式”农业科技文献信息保障与服务平台,它是新型的以传播知识、信息服务为主导的资源加工、组织、管理和服务模式以及与之配套的网络化平台。平台主要由服务指南、目录检索、资源检索、信息服务和专题信息五个部分构成,此外还设有服务及最新资源公告。通过STKOS开放知识组织系统提供的标准接口访问STKOS,支持扩展检索、缩小检索等相关检索,提高NAIS系统的查全率和查准率。

对于服务系统的应用示范,在中国科学院文献情报中心的集成服务系统上进行应用集成和整合。中国科学院文献情报中心的集成服务系统主要是通过分析用户信息行为梳理服务流程,形成了从资源检索,到资源定位,再到获取原文的数字图书馆的总体服务流程;基于OpenURL的服务互连标准,采用SRU标准对服务系统进行统一接口封装,形成了可嵌入式服务模块接口,实现了各系统间服务传递的无缝链接;融汇使用资源、用户、服务、服务策略等信息,支持用户获取信息过程中的情景敏感和流程驱动的图书馆服务。通过STKOS开放知识组织系统提供的标准接口访问STKOS,在中国科学院文献情报中心的集成服务系统上实现语义检索和关联检索,实现检索结果自动分面、自动聚类等。

3、技术难点与创新点

本课题的主要技术难点和创新点有以下几个方面:

(1)大规模开放知识组织引擎的构建技术

在本课题中,开放知识组织引擎的建设将主要实现科技知识组织体系(STKOS)的知识存储索引系统、科技知识组织体系(STKOS)的知识查询和推理内核、科技知识组织体系(STKOS)的开放查询和推理接口、面向特定领域的知识组织系统定制机制和第三方领域本体的集成嵌入机制。

开放知识组织引擎的存储能力、查询效率、推理能力、接口易用性等都直接影响到语义内容的应用。由于STKOS条目多、数量大、关系复杂,为了适应复杂的知识查询和知识推理的需要,开放知识组织引擎的存储系统应能够提供推理能力以支持应用的语义需求;开放知识组织引擎应能够在短时间内处理查询需求,提供可靠的查询和推理服务;开放知识组织引擎应具有快速的统计、聚类、分面等计算能力,能够支持大规模并发计算的需要。

(2)知识组织体系相关工具的集成服务技术

在本课题的建设中,将实现科技知识组织体系(STKOS)相关工具的集成服务系统建设。本课题将创新性地提出一个插件型的知识组织体系工具集成系统框架,定义知识组织体系建设的工作流程,通过标准的插件规范,将本课题其它课题中构建的一些重要知识组织工具集成到这一服务平台之中,形成知识组织工具的插件库,用户可以按要求选择各种知识组织工具的插件,将这些插件有机地组合起来,完成某项知识组织体系建设的需要。

(3)第三方信息服务系统中STKOS的检索应用技术

本课题将实现第三方信息服务中STKOS检索浏览服务的应用示范。在这方面,需要与第三方信息服务系统密切配合,提出一个完善的嵌入和应用机制,并基于第三方信息服务系统的应用模式,有机嵌入STKOS检索浏览服务,能够在语义检索和知识推理方面,有效地支持第三方信息服务系统的语义检索能力,真正帮助用户更好找到他们所需要的信息资源。

课题成果说明

1、软件系统(8个)

课题建设了8个具有自主知识产权的软件系统,集成系统服务地址为http://stkos.las.ac.cn

(1)STKOS开放知识组织引擎系统

STKOS开放知识组织引擎系统是一个能够有效对外提供服务的、开放的知识查询和推理引擎,可以通过标准的接口协议,实现知识组织体系的深度开发和利用。基于SOAP和Restful两种协议,构建了一系列Web Service接口方法

STKOS开放查询和推理接口在中国科学院重要会议开放资源采集与服务系统和中国农业科学院科技文献信息平台等服务系统进行示范应用。在接口使用过程中,与第三方示范应用系统开发人员进行沟通交流,提供接口使用的技术支持,并且了解使用过程中遇到的问题和新的需求,进一步完善各类接口方法。

在重要会议系统上进行集成和整合标引应用,通过 STKOS 开放知识组织系统提供的标准接口访问 STKOS,在标引过程中调用STKOS 的领域词表,提高会议文献标引系统术语、概念等的标引规范化、有序化,辅助重要会议开放资源采集与服务系统的标引工作。主要的应用包括根据概念进行主题词规范化处理、返回范畴类层级或者概念列表辅助标引、根据范畴类进行自动学科分类。

在科技文献信息平台上实现检索应用,通过STKOS开放知识组织系统提供的标准接口访问STKOS,支持扩展检索、缩小检索等相关检索,提高科技文献信息平台的查全率和查准率。 主要的应用包括根据检索词获取推荐检索词、通过检索词获取STKOS超级词表中的对应上位、下位、相关词实现平台的扩检和缩检。

(2)科技知识组织体系(STKOS)的发布服务系统

STKOS发布服务建设目标是在已经建成的科技知识组织体系STKOS和基于STKOS的知识本体引擎的基础之上,构建STKOS的发布服务系统。对外提供检索查询、浏览导航、展示服务,让用户可以方便地获取、查阅和利用科技知识组织体系。同时,为了促进STKOS更为广泛的应用,提供科技知识组织体系(STKOS)的定制与集成,包括输入、输出、下载和提供第三方知识组织体系的集成功能。服务地址为http://stkos.las.ac.cn

系统主要功能包括:

STKOS交换数据的自动解析与导入;

STKOS术语检索:基于术语词、概念与编码;

STKOS术语浏览:以范畴结构体系为导航,同时提供按首字母进行快速定位的导航;

STKOS术语定制:基于范畴粒度的术语知识服务个性化定制;

STKOS术语统计:基于词表、概念与关系的多维度统计;

STKOS知识组织体系多维可视化分析。


图2 STKOS术语发布服务平台首页

(3)集成化本体发布与服务平台

集成化本体发布与服务平台旨在为已创建的各种本体资源提供一套规范化的管理方式,并通过统一的服务接口供外部用户使用。本体发布与服务平台的构建涉及语义web、RDF/S、OWL、SPARQL等方面的领域知识以及Web Service、动态界面、数据库操作等方面的开发技术。主要功能包括:

本体存储:注册、修改、下载

概念检索:检索表达式生成、Sparql客户端

知识结构展示:可视化关系图、树状结构、属性窗口

Web service 接口:服务功能、使用方法和示例

(4) 科技知识组织体系后台管理系统

STKOS后台管理系统是STKOS发布服务系统的重要组成部分,包括:知识组织体系的多版本管理、知识组织体系的修订管理、用户管理、系统访问管理四部分。它的核心内容是知识组织体系的多版本管理。设计了当前正式服务版本、历史版本、临时版本三种不同类型的版本,可同时对STKOS进行多版本管理和版本内小修订管理,以便及时向用户提供最新STKOS数据。目前,STKOS后台管理系统已正式部署,总体运行良好。其系统网址为:http://stkos.las.ac.cn/stkosmanage/login

(5)科技知识组织体系(STKOS)相关工具的集成服务系统

在STKOS的建设过程中,各课题组开发了大量知识组织相关工具。科技知识组织体系(STKOS)相关工具的集成服务系统,通过标准插件开发规范,将STKOS项目的各课题中构建的一些重要知识组织工具封装为可控、可管理的插件,集成到系统之中,形成知识组织工具插件库,从而避免了工具的重复建设,实现在STKOS课题组下对相关工具进行规范管理、共用共享和有效利用。这些工具主要来自“科技知识组织体系共享服务平台”建设课题各成员单位,除本单位外,还包括有中国科学院文献情报中心、中国农业科学院农业信息研究所以及中国科学技术信息研究所。

本系统用于集成和管理大量本项目其他课题中构建的一些重要知识组织工具,将STKOS其它课题中构建的一些重要知识组织工具集成到科技知识组织体系共享服务平台之中,形成知识组织工具的插件仓储库。包括收集选择与STKOS相关的各种评估、筛选、映射、关联、加工、集成、整合和管理的系统和工具,在“科技知识组织体系共享平台”上进行组织和发布,让用户可以下载和利用软件工具,对STKOS及其他知识组织体系进行编辑、管理、裁剪和利用。系统访问地址为:http://sharestkos.imicams.ac.cn/tools/其主要功能包括:

工具、插件存储、管理、发布、检索、浏览、下载

工具注册、插件封装、工具及插件的在线使用

工作流创建、存储、执行、发布等

系统管理包括用户管理、权限管理、单位管理、分类管理(工具、插件分类管理)、系统监控、日志管理

用户登录、OAuthor统一认证

统计包括按工具提交单位统计、工具分类统计、插件分类统计、插件运行统计、工具下载统计、插件下载统计等

(6)STKOS在第三方标引系统中的应用示范系统

STKOS 在第三方标引系统中的应用示范任务建设是选择特定的领域,进行标引工作的应用示范,帮助第三方系统提高术语、概念等标引工作的规范化、有序化。具体而言,是在中科院成都文献情报中心重要会议开放资源采集与服务系统上进行应用集成和整合,调用STKOS检索推理引擎,完成对重要会议开放资源采集与服务系统中的文献资源和会议资源的深度标引。其访问地址:http://or.clas.ac.cn/indexdemo

(7)STKOS在第三方检索系统中的应用示范

STKOS在农业科技文摘数据检索平台中的应用示范系统,通过STKOS开放的标准接口,支持第三方系统用户资源发现中的扩展检索和缩小检索,提高系统的查全率和查准率,帮助用户更好找到他们所需要的信息资源。其应用场景包括:场景一:STKOS在线检索。支持包含给定检索词的规范概念或术语检索,以及规范概念或术语所属范畴检索、等同词检索、上下位词检索、相关词检索等,并对检索结果进行展示。场景二:基于STKOS本地资源检索。利用STKOS词间的等同关系、上位关系、下位关系和相关关系等分别实现本地资源检索中的扩展检索(同义词扩展、语义外延扩展、语义蕴涵扩展、语义相关扩展)和缩小检索,包括三种方式:推荐检索词、扩检和缩检。

其访问地址为:http://sp.nais.net.cn/ds/Site/Home

(8)STKOS在第三方服务系统中的应用示范

在“STKOS的第三方服务系统中的应用示范框架”下,开发实现了STKOS开放查询推理接口在中科院国家科学图书馆科技文献检索系统中的示范应用,实现了基于STKOS超级词表的语义检索和关联检索,提供用户检索结果的自动分面、自动聚类等,实现了分散的科技文献知识资源的关联整合,为科研人员提供更深层次的知识服务。

其访问地址为:http://stkos.las.ac.cn/nslnew/

2、算法(1个)

2.1、插件自动封装算法

考虑STKOS工具开发用户上传的知识组织工具在功能,粒度,依赖的数据规模及类型等方面可能存在的复杂性,因此,系统选择核心知识组织相关工具进行插件封装及服务提供,将封装过程分为自动封装和后台手动封装。在线自动封装主要解决粒度小,功能独立、单一的知识组织相关工具封装需求,可由工具提交用户在提交工具后由系统自动完成。而一些较为复杂、需要开放特定接口或无法自动封装的知识组织相关工具,由系统管理员进行后台手动封装、检测后再上传到插件库,发布并提供用户服务,以确保插件的可用性和有效性。知识组织用户提交的工具原则上实现单一功能,以jar包形式上传到系统,上传遵循系统向导,按步填写工具相关的描述信息,如工具功能描述、提交机构、开发环境、运行环境、工具类型、开发语言、备注等,这些描述用以进行工具及插件的表示,为多角度发现工具或插件提供有效信息。其中,工具运行调用的类名称、方法名称、调用方法中应输入参数的数量、参数类型、工具版本号以及工具运行所需的第三方jar包的信息最为重要。这些信息有助于系统进行有效的插件封装。当有工具在其实现中引入了第三方jar包,在系统封装过程中原则上不再对其进行拆分,而视为一个完整的工具包。

知识组织工具的插件封装的主要流程如图3所示:


图3封装插件的主要流程

(1)工具jar包结构解析

从工具库加载工具jar包及其相关描述信息,解析工具jar包结构。检测工具描述中记录的工具运行需调用的接口和类是否存在其中,如无误,则封装开始。

(2)定义Bundle接口

插件通过接口提供功能,因此,封装首先要定义Bundle接口,先创建一个包含继承工具jar包接口与实现子类的java文件和Bundle激活器Activator文件,分别放在com文件和searchbundle文件下。在Activator.java文件中写入Bundle启动及停止框架调用的start()和stop()方法,通过BundleContext的registerService方法注册service,其中涉及的三个参数分别是service的接口、实现和属性。实现创建Bundle运行接口的java文件和Activator.java文件的核心方法为createClassFile和createActivatorFile。

private static void createClassFile(String basePath_src, String newClass,
			String extendsClass) {
		try {
			String basePath = "";
			basePath = basePath_src + "\\com\\search\\service";

			File folder = new File(basePath);
			if (newClass == null || "".equals(newClass)) {
				newClass = "SearchService";
			}
			if (extendsClass == null || "".equals(extendsClass)) {
				extendsClass = "UserService";
			}
			boolean b = folder.mkdirs();
			File file = new File(basePath + "\\" + newClass + ".java");
			StringBuilder content = new StringBuilder();
			content.append("package com.search.service;").append("\r\n\r\n");
			content.append("import " + extendsClass + ";").append("\r\n");
			content.append("public class ").append(newClass)
					.append(" extends ").append(extendsClass);
			content.append("{ }");
			writerServiceFiles(file, content.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

private static void createActivatorFile(String basePath_src,
			String classMethod) {

		try {
			String basePath = "";
			basePath = basePath_src + "\\searchbundle";
			File folder = new File(basePath);
			boolean b = folder.mkdirs();
			File file = new File(basePath + "\\Activator.java");
			StringBuilder content = new StringBuilder();
			content.append("package searchbundle;").append("\r\n\r\n");
			content.append("import org.osgi.framework.BundleActivator;")
					.append("\r\n\r\n");
			content.append("import org.osgi.framework.BundleContext;").append(
					"\r\n\r\n");
			content.append("import org.osgi.framework.ServiceRegistration;")
					.append("\r\n\r\n");
			content.append("import com.search.service.SearchService;").append(
					"\r\n\r\n");
			content.append("public class Activator implements BundleActivator {")
					.append("\r\n\r\n");
			content.append("public void start(BundleContext context) throws Exception {")
					.append("\r\n\r\n");
			content.append("context.registerService(SearchService.class.getName(), new SearchService(), null);")
					.append("\r\n\r\n");
			content.append("}").append("\r\n\r\n");
			content.append("public void stop(BundleContext context) throws Exception {")
					.append("\r\n\r\n");
			content.append("}").append("\r\n\r\n");
			content.append("}").append("\r\n\r\n");
			writerServiceFiles(file, content.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

(3)编译打包

STKOS相关工具集成服务系统的插件封装主要采用Apache软件基金会开发的Apache Ant将重写的工具进行编译打包。在Java环境中,Ant可自动化实现软件编译、测试、部署等系列步骤。在(1)操作前先启动Ant打包所需的cmdjar.bat环境并修改build.xml文件。创建打包的路径,放入要打包的文件:com文件夹,包括工具实现接口(实现类和方法)的java文件;searchbundle文件夹,包括Bundle激活器Activator.java文件;lib文件夹,包括工具jar包、工具实现依赖的第三方jar包和必须的org.eclipse.osgi_3.8.1.jar。同时,也需要将配置文件build.xml和Ant打包所需的jar包也放在打包路径下的dist文件夹中。通过语句Runtime.getRuntime().exec("cmd /c start " + projectPathName + "\\cmdJAR.bat")执行打包编译命令。编译后,新生成的jar包中生成新的Manifest.mf文件。工具打包核心方法为projecttoJAR()。

public static Boolean projectToJAR(
            String projectPathName, // 上传jar包的位置。
			String JARName, // 名称_版本号.jar (包的名称)
			String JARPath, // 封装后存放的地址。
			String bundleName, // 新的文件名称(名称为工具原名称)
			String bundleVersion, // 工具原版本号
			String externalPackage, // 第三方文件
			String className, // 接口实现
			String classMothod // 实现类方面名称
	) {
		try {

			if (new File("C:\\SearchBundle\\compile\\libs").isDirectory()) {
				FileUtils.cleanDirectory(new File(
						"C:\\SearchBundle\\compile\\libs"));
			}
			if (new File("C:\\SearchBundle\\libs").isDirectory()) {
				FileUtils.cleanDirectory(new File("C:\\SearchBundle\\libs"));
			}
			if (new File("C:\\SearchBundle\\dist").isDirectory()) {
				FileUtils.cleanDirectory(new File("C:\\SearchBundle\\dist"));
			}

			FileUtils.cleanDirectory(new File(
					"C:\\apache-ant-1.8.4\\config\\libs"));

			String projectJARName = projectPathName + "\\dist\\" + JARName; // 工具包存放地址的全地址。
			String JARPathName = JARPath + "\\" + JARName; // 将来打包后bundle的存放全路径。

			createClassFile(projectPathName + "\\src", "SearchService",
					className);
			createActivatorFile(projectPathName + "\\src", classMothod);

			FileUtils.copyFileToDirectory(new File("C:\\root\\" + JARName),
					new File("C:\\apache-ant-1.8.4\\config\\libs"));
			FileUtils
					.copyFileToDirectory(
							new File(
									"C:\\apache-ant-1.8.4\\config\\osgi\\org.eclipse.osgi_3.8.1.jar"),
							new File("C:\\apache-ant-1.8.4\\config\\libs"));

……
				stringBuffer.append("libs/" + JARName + ",");
				String strJar = stringBuffer.toString();
				File file = writeJar(jarProjectFile, bundleName, bundleVersion, JARName, strJar);
				FileUtils.copyFile(file, original);
				file.delete();
				jarProjectFile.delete();
			}
		} catch (Exception exception) {
			return false;
		}
		return true;

	}
    

(4)修改Mainfest.mf文档

STKOS相关工具集成服务系统重写位于jar内部META- INF路径下的Mainfest.mf文档,该文档提供了框架需要安装和激活Bundle所需的必要信息,同时说明Bundle对外提供服务的功能以及允许外部对其引用的包。在STKOS相关工具集成服务系统中工具封装时必需写入Mainfest.mf文档的信息项见表1。其中,Import-Package和Export-Package记录了重要的插件交互接口,揭示了当前插件要引用及依赖的包。

表1Mainfest.mf文档中的信息项

信息项 说明
Manifest-Version: 1.0 Manifest版本号
Bundle-ManifestVersion: 2 OSGi R4的Bundle的Manifest必须是2
Bundle-Name Bundle的名称
Bundle-SymbolicName Bundle的文本标识符
Bundle-Version: 1.0.0 指定绑定package的版本号
Bundle-Activator: 用于启动和停止绑定package
Bundle-Vendor: OSGi Bundle的开发商
Import-Package: Bundle导入的所有package
Export-Package: Bundle导出的所有公共暴露给其他插件的package
Bundle-RequiredExecutionEnvironment: 所需的运行环境
Bundle-ClassPath 所需Package的类路径

修改Mainfest.mf文档的核心方法是writeMetaInFile。

private static String writeMetaInfFile(String bundleName,
		String bundleVersion, String strJar) {
		String result = "";
		try {	StringBuildermetaInf = new StringBuilder();
			metaInf.append("Manifest-Version: 1.0").append("\n");
			metaInf.append("Bundle-ManifestVersion: 2").append("\n");
			metaInf.append("Bundle-Name: ").append(bundleName).append("\n");
			metaInf.append("Bundle-SymbolicName: ").append(bundleName).append("\n");
			metaInf.append("Bundle-Version: ").append(bundleVersion).append("\n");
			metaInf.append("Bundle-Activator: searchbundle.Activator").append("\n");
			metaInf.append("Import-Package: org.osgi.framework;version=\"1.3.0\"").append("\n");
			metaInf.append("Bundle-RequiredExecutionEnvironment: JavaSE-1.6").append("\n");
			metaInf.append("Bundle-ClassPath: " + strJar);
			metaInf.append(".").append("\n");
			metaInf.append("Export-Package: com.search.service").append("\n");
			result = metaInf.toString();
		} catch (Exception e) {
		}
		return result;
	}

(5)有效性检测

封装完成后对插件进行在线测试。加载Equinox容器,从Equinox中获取OSGi服务实例。将封装好的插件调度到插件运行环境中,准备进行插件测试。根据插件要求输入参数和测试数据,对比输出结果与预期结果。如果一致则插件封装成功,功能有效,可发布使用。否则失败,打上失败标签。如插件自动封装失败,则转至手动封装。启动Equinox的核心方法为start、停止Equinox的方法为stop、获取OSGi服务实例的方法为getOSGiService、获取OSGi中插件的类的方法为getBundleClass。

手动封装由系统管理员在Eclipse中建立工具的项目工程,在项目中加入描述文件MANIFAST.MF用于描述OSGi相关的配置信息。特别注意其Import-Package和Export-Package中的信息是否书写正确,然后利用Eclipse提供的Export功能,来直接导出插件工程,测试有效后上传到系统。

public  static Object start(String method,String blundName, int number,String[] string) throws Exception { 
osgiBundlesBuilder.append("org.eclipse.equinox.common_3.3.0.200704022148.jar@:start,");    
osgiBundlesBuilder.append("org.eclipse.equinox.registry_3.3.0.v20070318.jar@:start,");  
osgiBundlesBuilder.append("org.eclipse.osgi.services_3.1.100.200704022148.jar@:start,");   
osgiBundlesBuilder.append("org.eclipse.update.configurator_3.2.100.v20070322.jar@:start,");
osgiBundlesBuilder.append(blundName+"@:start");

FrameworkProperties.setProperty("osgi.noShutdown", "true");  
FrameworkProperties.setProperty("eclipse.ignoreApp", "true");  
FrameworkProperties.setProperty("osgi.bundles.defaultStartLevel", "4");  
FrameworkProperties.setProperty("osgi.startLevel", "19");  
FrameworkProperties.setProperty("osgi.bundles",  
osgiBundlesBuilder.toString()); 

        String bundlePath = "C:\\apache-tomcat-6.0.20.osgi\\webapps\\bridge\\WEB-INF\\eclipse\\plugins";
FrameworkProperties.setProperty("osgi.syspath", bundlePath);  
EclipseStarter.run(new String[] { "-configuration", "configuration","-console" }, null);

    context = EclipseStarter.getSystemBundleContext();  
    Object o = getOSGiService("com.search.service.SearchService");  

      Object object;
        switch(number){
        case 1:
            object = ReflectionUtils.invokeMethod(o, method, new Class[]{String.class}, string);
            return object;
        case 2:	
            object = ReflectionUtils.invokeMethod(o, method, new Class[]{String.class,String.class}, string);
            return object;
……
      }
	  return "无返回值。";
         }  

    public  static void stop() {  
        try {  
            EclipseStarter.shutdown();  
            context = null;       
                } catch (Exception e) {  
            System.err.println("停止equinox容器时出现错误:" + e);  
            e.printStackTrace();  
        }  
    }  

    public  static Object getOSGiService(String serviceName) {  
        ServiceReferenceserviceRef = context.getServiceReference(serviceName);  
        if (serviceRef == null)  
        	return null;  
        returncontext.getService(serviceRef);  
    }  

    public  static Class<?>getBundleClass(String bundleName, String className)  throws Exception {  
        Bundle[] bundles = context.getBundles();  
        for (int i = 0; i <bundles.length; i++) {  
            if (bundleName.equalsIgnoreCase(bundles[i].getSymbolicName())) {  
            	return bundles[i].loadClass(className);  
                       }  
                }  
        return null;  
    }
}  

(6)存储入库

封装后的插件,经测试成功后,注册存储到插件库中,并进行插件分类。同时存储插件的相关信息,包括安装环境、运行环境、提交机构、版本号、封装时间等。

3、软件著作权(2个)

课题所开发的本体发布与服务平台V1.0以及本体发布与服务平台V2.0分别申请并取得了软件著作权。

本体发布与服务平台V1.0实现多本体的集成化管理与服务。本体注册成功后,其内容信息以RDF格式存储到三元组数据库中。该平台的查询界面提供了多本体统一检索功能,用户输入待检概念后,系统在知识库中所有的领域本体中查找相关概念,然后将命中的本体文件以列表的形式返回用户,待用户再次确认概念所属领域后,通过可视化界面显示与输入概念有关的各种资源。管理平台除了提供本体信息的注册和检索功能外,还提供Web Services 服务接口,方便开发人员远程调用平台的检索和管理功能。

本体发布与服务平台V2.0在V1.0的基础上,对可视化检索的展示和布局方法进行修改和完善,加强了本体结构浏览功能以及web服务接口。新平台的图形展示功能采用了D3可视化工具,可在Mozilla Firefox 浏览器、IE 9.0或以上浏览器中使用。web 服务接口采用Java Web服务引擎-XFire工具包实现。

课题成果应用前景

课题建设了一系列的有自主知识产权的软件系统,如科技知识组织体系(STKOS)的发布服务系统、科技知识组织体系(STKOS)相关工具的集成服务系统、第三方信息服务系统中STKOS的检索应用示范系统,服务于我国知识组织体系建设的需要。

目前,课题建成的软件系统已经集成为“科技知识组织体系共享服务平台”,对公众提供STKOS的发布服务,并且可以通过接口规范,有效利用这一平台提供的查询、检索、推理、标引等服务,让STKOS可以服务于我国科技信息服务机构的知识组织、管理和揭示工作之中。另一方面,此平台提供的相关方法和工具,将满足我国科技信息服务机构的对知识组织工作开展所需的技术需求,有效提高我国科技信息服务机构的知识组织能力。

课题在第三方信息服务系统开展了应用示范。通过STKOS开放知识组织引擎的开放查询和语义推理接口,将STKOS有机嵌入到第三方信息服务系统之中,能够加强第三方信息服务系统的语义检索和知识推理能力,有效地提高第三方信息服务系统的语义检索能力。实现知识组织体系的应用模式和应用方法创新。

课题的许多相关成果在多个行业内有着巨大市场,可以在信息服务行业、知识处理行业、科学界、科技管理界得到充分的利用。对于一些简单的软件工具,可以通过产品化方式推出软件产品;而作为整体的“科技知识组织体系共享服务平台”,课题将形成一个服务品牌,将其建设成为我国知识组织和管理的一个重要的基础设施。

发表论文
序号 责任者 题名+出处+页数
1 邹益民,张智雄,钱力,王颖 语义仓储Virtuoso的技术分析和应用[J]. 图书情报工作, 2012, 56(23): 97-102.
2 邹益民,张智雄,钱力,王颖 语义仓储构建技术研究进展[J]. 情报学报, 2013, 32(1):1-11.
3 杨锐,汤怡洁,刘毅,李崴 知识服务环境下语义化开放接口应用研究[J].图书情报工作(2014.2) 99-104.
4 刘毅,汤怡洁,周子健,杨 锐 ,李传席,张显峰,刘春江 科技知识组织体系共享服务平台服务接口建设研究[J].现代图书情报技术.2014, (7/8) :9-16.
5 汤怡洁,杨锐 ,刘毅 近年来SPARQL查询技术的研究热点及进展[J]. 知识管理论坛, 2014, (1): 1-6
6 杨锐,汤怡洁,刘毅,李崴 Web环境中的本体构建系统研究综析[J]. 现代图书情报技术, 2012,(1) 13-18
7 方安,吴思竹,洪娜,钱力,王颖,胡佳慧 科技知识组织体系(STKOS)相关工具集成服务系统的设计与实现[J].现代图书情报技术, 2015.
8 刘丹军,付鸿鹄,文奕,胡正银,杨宁,向彬,钱力,刘春江 科技知识组织体系版本管理系统设计与实践应用[J].现代图书情报技术, 2015.
9 洪娜,钱庆,方安,吴思竹,杨林 数据驱动的科学工作流及其在生物医学中的应用实践[J].数字图书馆论坛2014, (03): 26-31.
10 许德山,张运良,李芳 中文本体三元组的单字索引与更新方法研究 [J].图书情报工作,2014, 58(22): 111-116.
11 鲜国建,赵瑞雪,朱亮,寇远涛 农业科学叙词表的SKOS 转化及其应用研究[J]. 现代图书情报技术, 2012(10): 16-20.
12 刘振 数字资源的持久标识符互操作参考模型构想[J].图书情报工作,2014, 58(5):82-85.
13 李传席 Interaction Relation Ontology Learning[J]. Journal of Computational  Biology,2014,1 :80-88.
14 刘振,张智雄 RDB-to-RDF的技术方法和工具综述[J].现代图书情报技术,2014, 11:17-23.
15 李传席,张智雄,刘建华,钱力 半监督的网络科技信息分类模型[J].现代图书情报技术,2014.11
16 钱力,张晓林,李春旺,王小梅,杨立英,陈挺,张智雄 利用OSGi的科技情报分析集成服务架构研究与应用[J].现代图书情报技术,2014.12,62-70
17 钱力,张晓林,王茜 基于科技文献的研究设计指纹描述框架研究[J].大学图书馆学报,2015.1,14-20
18 高广尚,张智雄 面向实体的知识面板推荐模式分析[J].图书馆学研究,2015.1
19 李颖,张毅 基于“语义主题模型”的知识系统框架设计及应用研究[J]. 数字图书馆论坛,2012年第4期,pp. 24-27.
20 朱锐,李颖,孙卫 主题图和本体在知识化金融培训系统构建中的应用研究[J]. 数字图书馆论坛,2012年第4期,pp. 17-23.
21 闫莹莹,许德山,张运良,李鹏 汉语科技词系统在文献自动赋词标引中的应用研究[J]. 数字图书馆论坛,2013年11期, pp.2-8
22 许德山,张运良 集成化本体管理平台的设计与实现[J]. 数字图书馆论坛2013年11期,pp.15-20
23 张运良,张兆锋,张晓丹,许德山 使用D3.js的知识组织系统Web动态交互可视化功能实现[J]. 现代图书情报技术. 2013年 7/8期,pp.127-131
24 张运良 Direction and Key Problems Analysis on Mobile Library[C]. Proceedings of  2013 International Conference on Psychology,Management and Social Science, pp.446-452.

序号 类型(专利/软伯著作权等) 名称 编码 说明
1 软件著作权 本体发布与服务平台V1.0 Java 实现多本体的集成化管理与服务。本体注册成功后,其内容信息以RDF格式存储到三元组数据库中。该平台的查询界面提供了多本体统一检索功能,用户输入待检概念后,系统在知识库中所有的领域本体中查找相关概念,然后将命中的本体文件以列表的形式返回用户,待用户再次确认概念所属领域后,通过可视化界面显示与输入概念有关的各种资源。管理平台除了提供本体信息的注册和检索功能外,还提供Web Services 服务接口,方便开发人员远程调用平台的检索和管理功能。
2 软件著作权 本体发布与服务平台V2.0 java 在V1.0的基础上,对可视化检索的展示和布局方法进行修改和完善,加强了本体结构浏览功能以及web服务接口。新平台的图形展示功能采用了D3可视化工具,可在Mozilla Firefox 浏览器、IE 9.0或以上浏览器中使用。web 服务接口采用Java Web服务引擎-XFire工具包实现。
软件工具
序号 成果名称 成果形式 成果说明介绍
1 STKOS开放知识组织引擎系统 软件系统和Web Service接口 通过STKOS开放查询和推理接口提供SOAP和Restful两种协议的Web Service接口。
2 科技知识组织体系(STKOS)的发布服务系统 软件系统 对外提供检索查询、浏览导航、展示服务,让用户可以方便地获取、查阅和利用科技知识组织体系。同时,为了促进STKOS更为广泛的应用,提供科技知识组织体系(STKOS)的定制与集成,包括输入、输出、下载和提供第三方知识组织体系的集成功能。服务地址为http://stkos.las.ac.cn
3 STKOS本体发布服务平台 软件系统 提供STKOS中领域本体和其它领域本体的发布和检索关联服务。其系统网址为:http://stkosonto.imicams.ac.cn/ontology
4 科技知识组织体系后台管理系统 软件系统 对各种不同类型版本的STKOS进行导入、浏览、存档、导出等管理,为用户跨版本利用STKOS数据提供支持。其系统网址为:http://stkos.las.ac.cn/stkosmanage/login
5 科技知识组织体系(STKOS)相关工具的集成服务系统 软件系统 通过标准插件开发规范,将STKOS项目的各课题中构建的一些重要知识组织工具封装为可控、可管理的插件,集成到系统之中,形成知识组织工具插件库,从而避免了工具的重复建设,实现在STKOS课题组下对相关工具进行规范管理、共用共享和有效利用。系统访问地址为:http://sharestkos.imicams.ac.cn/tools/
6 STKOS在中科院重要会议开放资源采集系统示范 软件系统 实现了由标引、审核和发布等操作组成的一整套标引流程,辅助重要会议开放资源采集与服务系统的资源建设人员进行标引工作其访问地址:http://or.clas.ac.cn/indexdemo
7 STKOS在农业科技文摘数据检索平台中的应用示范系统 软件系统 系统功能包括STKOS在线检索和基于STKOS的本地资源扩检与缩检。其访问地址为:http://sp.nais.net.cn/ds/Site/Home
8 STKOS在中科院文献情报中心检索服务示范 软件系统 实现了STKOS开放查询推理接口在中科院国家科学图书馆科技文献检索系统中的示范应用,实现了基于STKOS超级词表的语义检索和关联检索,提供用户检索结果的自动分面、自动聚类等功能。其访问地址为:http://stkos.las.ac.cn/nslnew/
9 插件自动封装算法 算法