刘丹军, 文奕: 版本管理系统总体规划、框架流程设计, 论文起草; 付鸿鹄, 胡正银: 系统功能设计、版本管理系统数据结构设计; 向彬: STKOS数据版本管理功能实现; 杨宁: 版本管理系统技术框架设计及实现, 论文修订; 钱力: STKOS数据Solr索引功能实现; 刘春江: STKOS版本管理第三方接口功能实现。
[Objective] Design a framework for STKOS multi-versions and inter-version revise management and implement a STKOS version management system based on the framework. [Context] The sharing service platform of STKOS defines the content of STKOS version management, including multi-versions and inter-version revise management. [Methods] Firstly, define three types of STKOS versions, namely historic version, active service version, temporary version. Then design the data structure of STKOS changing information and a framework of STKOS multi-versions and inter-version revise managements. Finally, implement a STKOS version management system based on the framework and the medical STKOS data. [Results] In ten millions data size, this system implements the version management of STKOS. [Conclusions] The system can support multi-versions and inter-version revise management of large scale STKOS data at the same time.
为了更有效利用海量科技文献信息, 国家科技图书文献中心牵头组织实施了国家科技支撑计划“ 面向外文科技文献信息的知识组织体系建设与应用示范” 项目[1]。科技知识组织体系(Science and Technology Knowledge Oranization System, STKOS)发布服务系统是该项目面向用户的服务系统, 基于STKOS实现了知识组织体系、知识本体、科研本体的浏览、查询、推理、统计、定制、整合、嵌入等服务, 并提供多种方式浏览和利用STKOS及STKOS的子集, 以满足不同机构、不同用户对领域知识本体的需求, 达到最大程度地共享和重用科技知识组织体系成果的目的[2]。
版本管理已广泛应用于软件开发、文档管理中。科技知识组织体系版本管理对各种不同类型版本的STKOS进行导入、浏览、存档、导出等管理, 为用户跨版本利用STKOS数据提供支持。通过STKOS版本管理, 可以回溯不同时期、不同版本STKOS的变迁; 也可及时反映当前STKOS版本内的修改、变动情况。STKOS版本管理系统为STKOS发布服务系统各个功能模块提供跨版本的数据接口, 是整个STKOS服务系统的重要组成部分。
本文在深入分析、比较现有知识组织体系版本管理的特点、适用范围基础上, 结合STKOS发布服务系统的具体功能需求, 顺应未来STKOS版本数据可能的发展趋势, 设计了STKOS版本管理方案。该方案可同时对不同时期版本的STKOS数据及当前服务STKOS版本内部的修订数据进行管理, 支持对STKOS各历史版本及当前服务版本数据的跨版本应用, 为未来正式的STKOS多版本发布、综合应用奠定基础。
知识组织体系的版本管理可分为两种: 多版本管理与版本内修订管理。前者对多个正式发布知识组织体系版本的变更信息进行管理, 让用户可跨版本应用相关数据; 后者通过记录当前正式服务版本内修订信息, 让用户可及时使用知识组织体系的最新数据, 而不必等到最终的正式版本发布。对美国国家医学图书馆的统一医学语言系统(Unified Medical Language System, UMLS)[3]、联合国粮农组织研建的基于简单知识组织系统(Simple Knowledge Organization System, SKOS)的词表管理系统(Vocabulary Bench, VocBench)[4]及化学文摘(Chemistry Abstract, CA)光盘数据库版本管理[5]进行调研, 结果如表1所示:
从表1可看出, UMLS通过历史版本变更数据文件记录多个UMLS正式版本之间的变更信息, 只能反映UMLS不同版本间的变更信息, 而不能及时反映当前UMLS版本变更信息; VocBench通过变更信息表记录可及时反映同一版本内词表修订情况, 但是不能反映跨版本变更信息, 只适用于同一版本数据的加工管理; CA光盘数据库通过按月更新及时反映本年度数据更新情况, 每次版本更新, 都会完全覆盖上一版本的数据, 无法提供跨版本检索与查新服务。
STKOS版本管理包含: STKOS多版本管理与STKOS版本内修订管理两部分。STKOS多版本管理对正式发布的多个STKOS版本数据及其变更信息进行管理, 可提供历史版本查询及跨版本查询服务; 而STKOS版本内修订管理则通过对当前服务STKOS版本的小变更信息进行管理, 便于用户及时使用STKOS最新数据。与表1调研的三个典型知识组织体系版本管理系统相比, 同时考虑到STKOS正式版本发布周期一般较长, STKOS版本管理系统的特点是: 既能通过多版本管理反映不同正式STKOS版本间变更信息, 又能通过版本内修订管理让用户及时了解当前正式服务版本的最新信息。
(1) STKOS多版本管理: 管理对象是不同时期发布的正式版本STKOS。其管理内容包括:
①确定管理维护周期, 及时发布最新版本, 以确保检索默认项为最新版本的内容;
②完整保留历史版本的信息, 同时通过版本变更信息表记录每一个版本中的变更信息;
③STKOS多版本数据可视化对照显示。
(2) STKOS版本内修订管理: 管理对象是当前正式服务版本STKOS。其管理内容包括:
①根据最新加工数据, 对STKOS当前正式服务版本内容进行即时更新;
②通过修订变更信息表记录每一次修订的变更信息。
为满足上述需求, 本文定义了三种STKOS版本类型: 历史版本、当前正式服务版本、临时版本。
(1) 历史版本属于长期保存存档性质, 不再接受任何修改, 主要提供历史版本查询、对照浏览、跨版本查询等功能。
(2) 当前正式服务版本是在最近一期历史版本的基础上, 整合了STKOS版本内修订数据。与最近一期历史版本相比, 它能较及时反映在下一个正式版本发布之前, 可能出现的一些较小内容变更, 为其他应用提供数据支持。
(3) 临时版本负责同步接收来自加工平台STKOS最新修订数据, 并进行临时存储。当后台词表管理员认为当前正式服务版本可接受该修订变化后, 即根据临时版本的最新修订数据, 更新当前正式服务版本数据。
历史版本有多个, 而当前正式服务版本与临时版本只有一个。在数据存储方面, 历史版本、当前正式服务版本、临时版本数据结构基本一致, 存储在一套表中。当前正式服务版本及历史版本之间的数据变更信息通过变更信息表进行存储。变更信息表只记录STKOS元素唯一标识符(Unique Identifier, UI)针对某一版本发生何种变更, 而不记录变更前后详细信息。由于UI是STKOS元素跨版本的唯一标识符, 可通过元素UI在不同版本间查询该元素的详细变更信息。当前正式服务版本内的修订信息则完整记录在临时版本中。三种STKOS版本类型内容如表2所示:
STKOS版本管理系统在整个科技知识组织体系发布服务系统中处于承上启下的位置, 接受来自STKOS加工平台的原始STKOS版本文件作为输入, 以Solr索引的方式向STKOS发布服务系统其他模块及第三方应用提供数据接口。Solr是一个高性能、企业级搜索应用服务器, 对外以XML文件形式提供类似于Web Service的API接口, 被广泛应用于搜索中[6]。STKOS版本管理系统在科技知识组织体系发布服务系统中位置如图1所示:
STKOS多版本管理流程包括: STKOS最新版本数据导入、STKOS完整性校验、STKOS当前正式服务版本归档、STKOS最新版本数据审核发布、重建STKOS当前正式服务版本索引, 具体流程如图2所示。
STKOS最新版本数据导入之后, 要进行完整性校验。STKOS数据文件通过完整性校验之后, 需要对当前正式服务版本进行归档操作, 将其变更为历史版本。再将导入的最新版本STKOS数据作为当前正式服务版本发布; 重建STKOS当前正式服务版本Solr索引, 供前台发布系统或第三方服务系统调用。
STKOS版本内修订管理流程与多版本管理类似, 包括以下4步: STKOS最新修订数据导入、修订数据完整性校验、更新当前正式服务版本修订数据、重建STKOS当前正式服务版本Solr索引。
版本管理系统采用关系型数据库MySQL存储STKOS词表本身及其版本变更数据, 数据结构设计包括STKOS词表数据结构设计与版本变更信息数据结构设计两部分。
(1) STKOS词表数据结构设计
STKOS词表数据结构设计参考ISO 25964-1数据模型、STKOS发布元数据、UMLS数据模型。ISO 25964-1数据模型定义了叙词表相关标准规范, 提供了数据模型建议[7]; STKOS发布元数据提供了STKOS的数据模型[8]; UMLS则是成熟、应用广泛的词表。
STKOS词表数据结构参考ISO 25964-1数据模型, 遵循STKOS发布元数据规范, 允许数据的适当冗余。STKOS发布元数据规范中定义了来源术语、基础术语、STKOS规范概念、来源词表、范畴表与范畴类6种数据类型。根据对STKOS发布元数据的具体分析, 术语与概念关系主要建立在概念和基础术语之上。因此, 词表数据以基础术语、概念、来源词表、范畴为主。基于上述设计思路, 版本管理系统共设计了基础术语表(保存基础术语数据)、概念表(保存STKOS规范概念数据)、概念定义表(保存概念所有的定义)、来源词表(保存来源词表相关数据)、范畴表(保存STKOS范畴数据)、范畴关系表(保存STKOS范畴之间的关系)、概念范畴表(保存STKOS规范概念与范畴之间的关系)、关联关系表(保存概念与术语之间的关联关系)、层级关系表(保存关系的层级信息) 9个表, 用于管理STKOS版本数据。
(2) STKOS版本变更信息数据结构设计
STKOS版本变更信息数据结构设计参考了UMLS版本变更文件格式[3]、词表管理平台VocBench中词表最新变更表[4]。UMLS版本变更文件记录UMLS正式版本针对前一版本间的重大变更信息; VocBench通过词表变更表记录同一版本中词表修订情况。两者结合起来, 正好可满足STKOS版本管理系统既要保存正式发布的多版本STKOS数据, 又要及时反映当前STKOS最新版本的变更信息的要求。
版本管理系统共设计了版本信息表(保存STKOS版本数据)、单元素变更信息表(保存术语或概念单元素变更信息)、二元关系变更信息表(保存术语与概念之间二元关系变更信息)、概念合并表(保存概念跨版本合并变更信息)、术语移动表(保存术语跨版本移动信息)、版本内修订信息表(保存版本内数据修订变更信息)、概念停用表(保存STKOS概念停用信息)、术语停用表(保存术语停用信息) 8个表, 用于管理STKOS版本变更信息数据。
STKOS多版本管理模块主要包括STKOS数据导入、STKOS完整性校验、STKOS数据发布及STKOS版本变更对照4个功能。
(1) STKOS数据导入
STKOS数据导入是一个与STKOS加工平台数据交换接口。当有新版本数据需要导入时, 加工平台提供符合STKOS Schema规范的正式版本数据文件及符合变更信息STKOS Change Schema规范的版本变更信息文件。STKOS数据导入模块提供大数据Web上传导入功能。以医药卫生范畴STKOS词表为例, 该词表的数据文件包括: 描述词表中包含术语的文件termRecords.xml、词表中学科范畴的文件stCategoryRecords.xml、描述概念间关系的文件accociativeRelsRecords.xml等共11个数据文件。上传STKOS版本数据文件界面如图3所示:
(2) STKOS完整性校验
STKOS数据量很大, 如医药卫生范畴STKOS词表中记录属性的attributeRecords.xml文件约10GB, 数据量超过1 000万条。为保证数据完整性, 必须在正式发布前, 对导入的STKOS数据进行完整性校验。完整性校验包含两个层面: 利用STKOS数据的XML Schema进行语法层面上的校验, 确保导入的STKOS文件中各元素及属性均符合预定义的语法规范; 对STKOS文件的各元素, 如概念、关系等的数目进行校验, 确保STKOS文件的数据完整。导入之后, 系统自动进行完整性校验, 校验结果如图4所示:
(3) STKOS数据发布
STKOS数据发布包括: 当前正式服务版本归档、导入数据发布为当前正式服务版本、重建当前正式服务版本Solr索引三个步骤。前两个步骤主要是改写版本状态信息, 即将前一个STKOS从当前正式服务版本改为历史存档版本; 并将新导入的STKOS数据标记为当前正式服务版本。当前正式服务版本的Solr索引是版本管理系统对外提供数据服务的接口; 当版本数据变更后, 必须重建Solr索引。考虑到重建Solr索引数据量很大, 耗时较长, 系统采用按照业务分段方式, 即每次取一定数量(例如2万条记录)在后台增量重建Solr索引。
在STKOS版本列表显示每个版本的概况, 包括: 来源词表数、覆盖的学科领域(范畴)、来源术语总数、概念及关系总数、与前一版本相比较变化的概况(如概念间关系变化情况)以及版本活动状态等信息。版本列表默认按版本发布时间倒序排列。STKOS数据发布操作界面如图5所示:
对于每一个版本的STKOS数据, 系统还可以详细显示来源词表、学科范畴、来源术语、概念、关系等信息。学科范畴详细信息界面如图6所示:
(4) STKOS版本变更对照
STKOS版本变更对照功能可揭示不同版本及当前正式服务版本之间的最新变更信息。新版本的变动信息可通过列表方式查看, 或通过版本间的对照直观显示。通过版本对照视图, 用户可以选择两个版本的STKOS数据进行对比, 界面如图7所示:
系统显示两个版本STKOS词表间的变更概要信息及具体变更情况, 并列出两个版本词表树形结构。对于发生变更的元素, 可以根据变更类型(如概念合并、关系变化等)查看变更的详细信息; 通过元素ID, 可查看不同版本中该元素的具体信息。
STKOS版本内修订管理模块包括: 修订数据导入、修订数据完整性校验、修订数据发布三步。
STKOS修订数据是STKOS正式版本数据的一个子集, 仅包含最新修订数据信息, 没有变更信息文件。STKOS修订数据导入之后存储在STKOS临时版本数据库中。通过数据完整性检查与STKOS词表管理员审核之后, 即可予以发布。修订数据发布采用更新当前正式服务版本STKOS数据方式进行, 同时采用增量更新的方式重建正式服务版本Solr索引。版本内修订管理界面如图8所示:
目前, STKOS版本管理系统已用于科技知识组织体系发布服务系统后台管理中, 并对医药卫生范畴STKOS数据进行管理, 总体状况良好。系统具体性能指标如下:
(1) 导入速度: 医药卫生范畴STKOS数据共11个XML文件, 文件大小约25GB, 总数据量约3 000万条。可在20小时内对这些数据文件进行完整性校验、数据库导入、发布及索引。
(2) 响应时间: 可在毫秒级内响应STKOS版本数据的浏览、检索、版本变更数据对照展示等请求。
(3) 并发性能: 在STKOS数据导入时, 采用独占模式; 在STKOS数据管理时, 支持100个以上并发请求。
从科技知识组织体系发布服务未来发展趋势看, 系统还存在需要完善的地方, 建议从三方面改进:
(1) STKOS完整性校验、导入性能有待提高: 完整STKOS数据规模会更大, 按照现有技术框架, 完整性校验与导入花费时间会更长。未来, 一方面可考虑与加工平台进行沟通, 将STKOS数据切分成多个小文件, 以便系统可多线程并发导入; 另一方面也可考虑直接采用纯XML数据库对STKOS版本数据进行存储与索引。
(2) STKOS数据变更信息设计尚待规范化: 目前, STKOS数据加工平台尚无明确关于STKOS数据变更信息设计的规范。版本管理系统参照UMLS版本数据变更文件格式[3], 将其简化为: 单元素关系变更、二元关系变更两种。单元素关系变更指变更仅仅涉及一个元素, 如: STKOS规范概念或者基础术语的增加或者删除。二元关系变更指涉及到两个元素的变更, 是一种关系的变更, 如: 规范概念与规范概念、基础术语与基础术语之间关系的变更, 也有可能是规范概念与基础术语之间关系的变更。考虑到正式STKOS发布元数据模型, 共定义了6类数据对象, 即: 来源术语、基础术语、STKOS规范概念、来源词表、范畴表与范畴类[8], 正式STKOS数据变更信息会复杂得多。未来系统版本变更信息设计需要根据正式STKOS数据变更信息进行重新优化或设计。
(3) STKOS跨版本服务功能有待增强: 目前, 版本管理系统仅提供跨版本变更信息对照显示功能, 只能针对两个版本之间的数据变更信息进行对比显示, 尚不能直接反映STKOS数据完整的历史变更信息。未来, STKOS版本数据成熟之后, 版本管理系统需提供更友好的界面展示STKOS数据完整的历史变更信息。同时, 需要设计数据接口, 让第三方系统也可以完整地调用STKOS数据所有历史变更数据[9]。
通过设计历史版本、当前正式服务版本、临时版本三种不同的版本类型, 科技知识组织体系版本管理系统可同时对STKOS进行多版本管理和版本内小修订管理, 以便及时向用户提供最新STKOS数据。目前, STKOS版本管理系统已根据医药卫生范畴STKOS数据进行开发与部署, 总体运行状态良好。现有系统框架、数据结构设计等可移植到未来完整STKOS数据的版本管理系统中, 也可为其他类型词表版本管理提供参考借鉴。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|