利用NoteExpress设计与开发DSpace机构知识库资源提交工具
邓红1, 丁君涛1, 涂飞平2
1.北京工业大学图书馆 北京 100124
2.北京爱琴海软件公司 北京 100107
摘要

设计开发基于NoteExpress的资源提交工具,着重描述数据如何从NoteExpress传递到提交工具中,再由提交工具导入到DSpace的实施过程。集成NoteExpress提交功能后的机构知识库系统能够快速、灵活、高效地收集数据资源,加快机构知识库的建设步伐。

关键词: 机构知识库; 提交工具; 数据移植; 资源收集; DSpace; NoteExpress
Design and Implementation of DSpace Resources Import Tool Using NoteExpress
Deng Hong1, Ding Juntao1, Tu Feiping2
1.Beijing Technology University Library, Beijing 100124, China
2.Beijing Aegean Software Company, Beijing 100107, China
Abstract

This paper designs and develops a NoteExpress-based resources import tool by researching DSpace and NoteExpress. It focuses on describing how the data is transferred from NoteExpress to the import tool, then imported into DSpace. The institutional repository system integrated NoteExpress can quickly collect data resources with flexibility and high efficiency, which speeds up the construction of institutional repositories.

Keyword: Institutional repository; Import tool; Data migration; Resources collection DSpace; NoteExpress
1 引 言

随着开放获取运动在全球范围的开展和长期保存机构人员公开及未公开的电子学术产出的要求,越来越多的高校、研究所等学术机构纷纷建立起自己的机构知识库。许多高校采用开源软件DSpace构建机构知识库系统平台,并进行了定制和二次开发来满足本机构的需求。

北京工业大学(北工大)机构知识库是在DSpace系统平台上进行二次开发的。在实施的过程中发现,本机构数据资源收集、元数据字段信息的补全和更新、数据资源的查重、全文资源的管理等机构库前期数据准备工作的难度随着资源的增多而大幅度增大。因此必须采用文献类管理软件来辅助前期资源的整理工作。对比常见的几款文献类管理软件[ 1],北工大选择了NoteExpress[ 2](NE),前期利用NE通过外购数据库在线检索和现有资源导入方式将本机构的资源收集,然后进行查重、更新,再将整理后的数据提交到机构库中。由于NE资源与DSpace资源存在异构性,所以需要工具来完成这种异构数据的转换,从而实现数据管理与数据提交的有效结合。本文将介绍该工具开发实施的过程。

2 前期的研究和分析

DSpace机构库的原生的资源收集方式主要有4种:适合大量数据批量提交的命令行提交方式;个人用户使用的Web界面逐条提交方式;针对OPM-OAI协议的数据收割;管理员CSV文件的导入方式。

由于初期数据提交基本上都是大批量的快速提交(北工大第一期数据量大概有20 000条),且大部分有全文,所以不能采用第2种方式和第3种方式,而第4种方式只能提交元数据,没有对全文提供支持。第1种方案需要自行将大量数据转换为DSpace提交文件格式,然后提交数据,该方法需要开发特定的工具,以完成资源到DSpace提交文件夹的转换[ 3],然后上传到服务器。实施前期,北工大开发了此类工具,但操作比较复杂,需要上传到服务器并使用命令批量导入,同时还存在转换后数据文件管理和资源更新困难的问题。

参考其他一些机构知识库实施方案[ 4, 5, 6],它们对DSpace系统的提交部分做了有益的改进,并提供了友好的操作界面,基本都加强了DSpace服务器端的处理,但对于用户端的处理比较简单,提交的需求也不尽相同,但还是提供了很好的参考。

北工大前期采用NE进行数据的管理,且以后对于数据的维护,除了使用DSpace本身的维护功能外,还会继续采用NE作为补充。NE提供了完善的二次开发接口,所以北工大图书馆提出了针对NE和DSpace系统接口整合的需求:

(1)开发一个资源提交工具(简称“提交工具”),能够充分利用NE管理数据资源的能力,又能快速向DSpace系统中提交、更新资源,同时完成元数据字段的灵活映射;

(2)提交工具在用户部分做成客户端形式,具有友好的界面,可以由多台计算机同时使用;

(3)服务器端无需Web界面支持,以一个服务形式提供服务即可。

3 数据准备及数据转换

NE和DSpace在元数据字段定义完全不同,DSpace默认采用Dublin Core(DC)元数据定义方式[ 7],NE是使用其特定的NE Tag方式定义元数据,虽然NE也支持转换为其他标准格式,但目前并不支持直接输出DC格式。所以开发提交工具的第一步是设计NE字段到DC字段的映射,为了使整个系统有更好的可扩展性和可维护性,采用配置文件(mappings.xml)方式来保存元数据的映射关系。两种格式转换,有很多NE Tag的字段在DC中没有对应的定义。在添加对应字段定义时,为了尽量减少因DC元数据的扩充而带来的数据维护的困难,这里只选择扩展DC中的dc.identifier数据。DC与NE Tag的部分元数据字段对照表(节选部分字段定义)如表1所示:

表1 DC与NE Tag的部分元数据字段对照表

以下是配置文件mappings.xml文件的部分内容,由于有多种不同的数据资源类型,所以该定义文件内容比较多(节选默认资源类型-Default类型的部分数据)。

<?xml version="1.0" encoding="UTF-8"?><modules>

<module description="" name="Default">

<field dc="dc.title" NE2field="Title"/>

<field dc="dc.contributor.author" NE2field="Author" token=";"/>

……

<field dc="dc.language.iso" NE2field="Language"/>

</module>

配置文件中每个module代表的是一种资源类型,如期刊、会议论文、书籍等,每个module中的field是字段映射关系,其中dc和NE2field分别对应Dublin Core和NE Tag的字段定义。通过对mappings.xml文件的修改或者扩展,可以实现提交资源元数据的灵活定制。

4 提交工具的设计方案

在NE中选择需要导入到机构知识库中的记录集合,包括记录的元数据和全文附件信息,通过NE接口载入到提交工具中。在提交工具中通过数据模块,集成提交用户的账户信息、数据导入目标位置、全文附件以及是否去重,提交哪些字段等选项信息。然后将这些数据通过HTTP协议发送到DSpace系统中。在DSpace系统中再开发一个Servlet接收传递过来的数据,最后将数据导入到DSpace仓库。

提交工具设计方案流程如图1所示:

图1 提交工具设计方案流程图

4.1 提交工具获取NE数据部分

由于NE提供了接口支持对其保存的资源进行几乎所有的操作,所以提交工具获取资源部分比较简单,仅仅通过界面选择,然后调用接口将需要处理的资源信息导入到提交工具中即可。NE接口定义如图2所示:

图2 NE接口定义

4.2 提交工具与DSpace系统的连接

在提交工具中需要用户选择提交到DSpace系统的具体Collection(专题),所以需要获取DSpace系统的组织结构信息,同时为了DSpace的数据安全,提交工具将在提交的时候带入DSpace的用户验证信息,这样DSpace系统就可以验证是否接受用户提交的资源。提交工具使用HTTP协议访问机构知识库的组织结构,即Community/Collection页面,然后通过页面分析即可以获取到完整的Community/Collection树形图,如图3所示:

图3 提交工具组织结构展现

4.3 DSpace接收提交工具数据的设计

提交工具将数据通过网络传递到DSpace系统,需要定义数据规范。数据按照该规范由提交工具提交到DSpace系统,然后DSpace服务器端负责解析数据,并保存到DSpace仓库中。为了简化系统开发,规范采用“文本+简单标签”方式来传输数据。该数据传输格式简单,便于解析还原出原始的信息。编码后数据传输到DSpace系统采用的是HTTP协议,由于数据资源中包含全文附件,所以采用HTTP Multipart/Form-data的编码方式上传数据,这样可以将元数据和附件数据同时打包发到DSpace服务器。在不更改DSpace系统的情况下,在DSpace服务器端将数据解析和提交的逻辑封装在一个新Servlet中,然后配置DSpace网站系统(北工大使用的是JSPUI应用)的web.xml文件,将该Servlet安装到DSpace的JSPUI子系统中。

5 提交工具的开发与实施

客户端的提交工具采用Delphi2007,在Windows 7下开发。提交工具使用了一些第三方开发包:网络部分采用了HttpSend库,数据解析部分采用NativeXML库和正则表达式库RegExpr。服务器部分, DSpace服务器端Servlet开发工具选择Eclipse。

5.1 通过NE接口将数据导入到提交工具

NE有比较完善的接口,提交工具需要用到的NE接口有: INEHost2、INELibraries、sINEItems、INEItem[ 8]。通过以下步骤获取NE中选中记录的全部信息:

(1)通过Windows的API函数CreateComObject("NEHost2"),可以获取NE的根接口——INEHost2,它包含4个属性,分别是:Libraries,Services,Internals,MainForm;

(2)通过根接口INEHost2的Libraries属性获取当前选择的数据库,该属性返回的是一个INELibraries接口类型;

(3)通过当前选择数据库的接口INELibraries的SelectedItems属性获取所有选择的记录集合,该属性返回的是INEItems接口类型;

(4)通过获取的记录集合接口INEItems的Count属性和Items属性枚举出所有的记录对象;

(5)通过记录对象接口INEItem的Values属性和AttachmentFiles属性获取记录的元数据和附件信息。

对照NE软件,找到接口各自的对应关系如图4所示(与MS Office类似,NE的接口封装大部分也可以与界面元素相对应):

图4 NE软件中接口的对应关系

在提交工具中获取NE选择的记录信息的核心代码如下:

FItems:= FHost.Libraries.SelectedItems;//FHost是NoteExpress自动化根接口

FItems.Items[I].Values['Title'];//获取第I条资源标题

5.2 提交工具中数据提交到DSpace的实现

提交工具通过HttpSend库,采用浏览器访问方式,使用HTTP协议来与DSpace系统进行交互。获取组织结构就是通过访问community-list页面,然后通过转换为XML格式,以反映其层级关系,最后再将XML格式反馈到提交工具界面上(见图3),在获取组织结构前,系统将弹出用户校验界面,只有通过DSpace验证的用户才能获取组织结构数据。

按照设计的传输格式,提交工具将转换数据格式,并且集成用户信息、数据提交目标位置和附件全文等信息,然后通过HttpPost方法提交到DSpace系统中。

5.3 DSpace接收数据部分的实现

为了接收从客户端提交工具发送过来的数据,DSpace服务器端需要在JSPUI中新建一个NeImportServlet,对客户端数据进行解析,然后保存到DSpace仓库中。

NeImportServlet的框架代码如下:

public class NeImportServlet extends DSServlet {

protected void doDSGet(Context context, HttpServletRequest request, HttpServletResponse response) throws Exception {

throw new Exeption("Get Method Is Not Supported.");

//不支持get请求

}

protected void doDSPost(Context context, HttpServletRequest request, HttpServletResponse response) throws Exception {

//核心处理例程,所有的导入逻辑都将在本函数中处理完成

}

NeImportServlet首先使用DSpace封装好的FileUploadRequest对象接收客户端提交过来的数据并解析出各个部分。然后采用DSpace默认的发布对象来发布资源,这中间包含字段映射的处理步骤,将资源由网络传输的格式转换为DSpace需要的对象。为了操作的简便和利于未来代码的维护,对整个操作进行简单封装,以便调用更加简洁,但其内部都是基于DSpace的标准提交方式:

addNeRefrence(context, context.getCurrentUser(), collectionHandle, fur));

DSpace内部标准提交的开发方法,可以参考文献[9]中Metadata Import数据批量导入接口的核心源代码,addNEReference内部就是借鉴其实现代码,也可以参考DSpace源码中的InstallItem部分[ 10]。最后将NeImportServlet安装到DSpace的JSPUI子系统中,修改web.xml,加入以下部分:

<servlet>

<servlet-name>neimport</servlet-name>

<servlet-class> web.Servlet.NeImportServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>neimport</servlet-name>

<url-pattern>/neimport</url-pattern>

</servlet-mapping>

安装完成后,提交工具可以通过http://DSpace-URL/neimport来提交数据(网址中的DSpace-URL部分为用户实际部署DSpace的IP地址或者域名)。至此,整个系统从设计到编码全部完成。

6 应用效果及说明

开发完成后的提交工具界面如图5所示:

图5 提交工具界面

由于提交工具是标准的Windows程序,界面和使用都非常容易,使得数据上传操作的难度大大降低。通过提交工具,可以将数据的清洗和整理工作分散到多人员同时处理,简单的操作也降低了工作强度。提交工具在提交前已经将所有数据导入到内存中,所以提交速度非常快。

提交工具还有提交设置,其中包含了字段的映射、重复提交处理方式等选项。所以对于字段的映射和需要多次更新的资源,操作方法与提交资源操作方法完全一致。提交工具设置部分界面如图6所示:

图6 提交工具设置部分

7 结 语

高校机构知识库的资源建设是一项长期而艰巨的任务。本文通过对DSpace机构知识库系统和文献资源管理软件NE的研究和分析,将NE作为收集、整理资源内容的工具,从学校现有的数据管理系统、外购数据库、互联网等异构数据源中捕获数据,并进行资源导入前的整理,然后通过在NE中开发的资源提交工具,完成数据快速、方便、高效和准确地装载到DSpace机构知识库中,而且导入到机构知识库中的数据也可以再导出到NE中,实现数据资源在NE和机构知识库中的双向流动。集成NE提交工具的机构知识库系统为机构知识库的可持续发展提供了有力的技术保障,必将推动机构知识库的进一步发展。

参考文献
[1] 蔡敏. 三种常用参考文献管理软件比较研究[J]. 现代情报, 2007, 32(2): 33-36, 50. [本文引用:1]
[2] NoteExpress [EB/OL]. [2011-10-11]. http://www.reflib.org. [本文引用:1]
[3] DSpace System Documentation: System Administration [EB/OL]. [2011-03-02]. http://www.dspace.org/1_6_1Documentation/ch08.html. [本文引用:1]
[4] 马建霞, 祝忠明, 唐润寰, . 机构知识库与科研管理信息化环境集成的尝试[J]. 现代图书情报技术, 2008(2): 14-18. [本文引用:1]
[5] 唐兆琦, 郑巧英. 基于开源软件DSpace构建学位论文提交与发布系统[J]. 现代图书情报技术, 2007(12): 69-73. [本文引用:1]
[6] Ma J X, Wang Y M, Zhu Z M, et al. An Attempt of Data Exchange Between the Institutional Repository and the Information Environment for the Management of Scientific Research—ARP[J]. Library Collections, Acquisitions, and Technical Services, 2009, 33(1): 1-7. [本文引用:1]
[7] DSpace System Documentation: Functional Overview [EB/OL]. [2011-03-02]. http://www.dspace.org/1_6_1Documentation/ch02.html. [本文引用:1]
[8] NoteExpress2 ActiveX接口定义[EB/OL]. [2011-07-02]. http://www.reflib.org/NEInterface.html. [本文引用:1]
[9] 刘勋, 祝忠明. DSpace系统元数据获取功能的实现[J]. 现代图书情报技术, 2007(4): 17-20. [本文引用:1]
[10] DSpace ItemInstall Source [EB/OL]. [2011-12-10]. http://grepcode.com/file/repo1.maven.org/maven2/org.dspace/dspace-api/1.7.0-rc1/org/dspace/content/InstallItem.java. [本文引用:1]