基于DSpace构建学科知识库系统的研究与实践,本文主要内容关键词为:知识库论文,学科论文,系统论文,DSpace论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
【分类号】 TP39
1 引言
本文拟以中国(西部)环境与生态科学知识积累平台(Sharing Environment and Ecology Knowledge Space,SEEKSpace)的研究和建设为例,并以数字知识库系统开发建设领域著名的开源软件DSpace为基础,对兼具自助存档和学科信息发现集成的学科知识库系统的框架设计和开发定制过程中所涉及的主要问题进行分析和探讨。
2 SEEKSpace的基本功能和服务框架
SEEKSpace研究和建设的主要目标,首先在于汇集国家自然科学基金委“中国西部环境与生态科学重大研究计划”历年来所支持的研究项目和课题的各类研究产出,包括科学论文、研究报告、专著、演示资料、数据资料、照片和视频资料、野外考察资料、重要的中间成果等,建立支持对这些研究产出进行自助提交、长期保存和共享利用的平台,同时也不排除接受其他有关环境与生态科学研究活动产出的开放存档与共享利用。其次,通过开放搜寻获取和信息聚合手段,对国内外主要的研究性数字知识库(主要是机构知识库,也包括一些学科知识库和个人知识库)所涉及环境与生态科学领域的学术信息进行搜索、发现、聚集和再组织,方便对该学科领域主要的开放学术信息资源的集成利用。从而,逐步发展和形成一个支持环境与生态科学领域开放学术信息的自助存档、交流和发现的学科知识库系统。以下给出SEEKSpace的总体功能和服务框架,如图1所示。
图1 SEEKSpace基本功能框架
自助提交服务、批次导入服务以及自动搜索与聚集服务提供了3种不同的内容提交或采集途径。自助提交服务主要为西部计划项目研究人员或者其信息提交代理提供将其研究产出自主地提交到系统中来的机制和接口,这是目前绝大多数研究性数字知识库进行信息采集和积累的基本模式;在获得许可的条件下,环境与生态科学领域的其他研究人员也可以将其相关的研究资料以自助方式提交到SEEKSpace中。批次导入服务提供按照系统可接受的格式批量导入相关信息或数据的功能。自动搜索与聚集服务则主要通过基于OAI-PMH协议的元数据及数据的自动搜寻和获取工具的支持,从国内外相关的开放型数字知识库中发现和采集与环境与生态科学有关的内容,形成本地化的保藏。
元数据仓储及知识库是内容提交和聚集的结果,提供对各种类型和格式的内容的长期保存和利用的支持。元数据仓储实现对提交和采集进来的数字对象的内容、结构以及保藏等方面的元数据描述信息的集中存储和管理功能,知识库提供对数字对象的统一存储和管理,并与元数据仓储共同构成支持数字对象的保藏、组织和利用等功能实现的基础。
用户服务接口以元数据仓储及知识库为基础,面向领域用户提供基于分类或主题的浏览、基于字段或全文内容的检索、基于电子邮件或RSS方式的内容订阅等服务功能的实现。开放接口则提供面向机器的接口,支持OAI-PMH协议方式的元数据共享,以及支持SRW/U协议方式的检索服务,方便分布式检索互操作的实现。事实上,面向RSS服务同时也是一种面向机器的接口。
系统管理与公共服务提供整个系统运行和管理过程中的基础性的或公共性的辅助功能和服务,如用户管理提供对系统注册用户的权限的分配、审核、管理等服务;数据管理不仅提供对有关存档数字对象描述性的、结构性或保藏性的元数据的管理,也提供对存档数字对象本身的管理;分类表或词汇表的管理主要提供数字对象的描述和组织过程中的分类或主题标引的功能和服务。
3 基于DSpace构建SEEKSpace知识库系统的主要环节和问题的探讨
3.1 DSpace简介
DSpace[1] 是由麻省理工学院图书馆和HP实验室合作开发的构建数字知识库系统的开源软件,其功能和服务设计很大程度上遵循了OAIS[2] 参考模型,为大学和研究机构对其科研产出进行采集、描述、存储、保藏、发布利用等多方面功能和服务的实现提供了可靠的解决方案。自2002年11月发布DSpace 1.0版以来,目前全球已有180多家大学和研究机构部署了基于DSpace的数字知识库系统[3]。其最新稳定版本为2005年10月发布的DSpace 1.3.2。
DSpace数据模型及其组织上试图模拟和反映研究机构本身的层级结构,按照“Community-Collection-Item” 的基本模型对数据进行组织和管理。即:一个基于DSpace的系统是由若干对应于系、实验室或研究中心等的Community组成,每个Community由若干对应于研究领域、研究项目或技术报告集等的专题内容集合Collection所组成,而每个Collection则是由一系列相关的对应于具体的数字存档对象的Item的集合。因此,按照OAIS参考模型,Community和Collection都是属于AIC(Archive Information Collection)类型的存档对象,Item是属于AIP(Achive Information Package)类型的存档对象,是DSpace中实际地封装和管理数字对象的基本单元。事实上,这种抽象的层级结构数据模型,可以很好地满足和支持各种具有层级结构特征的内容的存档和管理。比如在构建学科知识库的过程中,学科知识的分类等级结构,就可以很自然地与DSpace的这种层级数据模型对应起来。
在数字对象的元数据描述过程中,DSpace采用了基于带修饰符的DC元数据来支持对Item存档对象进行描述和组织,对于Community和Collection存档集合对象,仅提供一些包含简单描述性信息的元数据。此外,DSpace也提供有关保藏、来源、权限政策等管理性元数据的支持,以及提供有关Item展现、包含的文件及其关系等结构性元数据。
命名和标识数字对象对于存档系统来说至关重要,它是保证存档的数字对象可以被正确可靠地引用和参考的重要依据。DSpace采用CNRI的Handle System[4] 来标识Item、Collection以及Community等存档对象。Handle System作为一种新兴的分布式的全球化命名和解析服务系统,可以为存档对象分配和赋予具有全球唯一性和持久性的标识符,并可以获得全球性的解析和定位服务,确保了所标识的对象可以在全球范围内被有效地引用和参考。
DSpace支持两种内容提交的方式。一种是基于Web表单的提交方式,支持任何具有提交权限的用户将适当的内容提交到系统中来。这种提交过程往往与一定的权限政策和工作流相关联,可以灵活地支持基于各种角色和工作流的内容提交控制。一种是批次导入的方式,支持将符合DSpace SIP(Submission Information Package)格式的数据文件批量地导入到系统中。
在面向用户的服务组织方面,支持简单的和高级的浏览及检索方式,并支持全文检索,提供基于电子邮件的信息订阅功能和服务等。此外,它还支持符合OAI-PMH协议的元数据开放共享,并支持简单的OpenURL功能和服务等。
3.2 DSpace的本地化过程及方法
软件的本地化与其国际化息息相关。DSpace基于Java技术设计和开发,其国际化主要通过Java技术在支持国际化软件设计和开发方面的特性和优势,采用基于Unicode标准和可本地化独立资源文件的技术和方法来实现。本文以GNU/Linux操作系统、Tomcat 5.x、PostgreSQL 7.x/8.x数据库系统为安装和运行基本环境,对DSpace的本地化定制过程中的主要环节和问题进行探讨。
(1)基于Unicode/UTF-8的统一编码环境的设定[5-9]
在典型的基于Java的Web应用环境中,用户与Web应用之间的交互可能涉及“浏览器Web(应用)服务器Web应用JDBC数据库”中的各个环节和过程,由于各个环节可能采用不同的字符编码模式,因此,使得流经这些环节的数据或信息流经常不可避免地要在不同编码格式之间进行主动或被动地转换,其中任一环节编码模式的失当,都可能导致数据或信息转换的错失。当前,能够比较彻底地解决这一问题的主要方法是统一各环节的编码格式,建立基于Unicode标准的统一编码环境。DSpace即采用了这一方法来实现对多语言环境的支持和本地化的便利实现。
就上述各个环节而言,当前主流的浏览器(如IE 6.0或Fire Fox 1.5)都比较好地提供了自动检测网页中包含的编码格式信息并据此支持对不同语言内容的正确显示,并按照相同的编码格式或Web表单本身指定的编码格式对提交的内容进行编码,一般不需要用户的直接干预。
在Web服务器这一环节,由于HTTP协议只规定了传送请求的URL中出现的非ASCII字符以及一些特殊字符要以十六进制串的形式进行编码,但并没有对基于哪种字符集进行编码做相应的规定。因此,要明确指定Web服务器默认的编码格式,以确保对编码后的URL数据能够正确解析。以DSpace使用Tomcat 5.5.x同时作为Web服务器和应用服务器为例,要保证以Unicode/UTF-8方式对HTTP请求数据进行编解码,只需在其配置文件server.xml中增加如下有关URIEncoding的设置:
〈Connector port="8080" maxHttpHeaderSize="8192"
……
URIEncoding="UTF-8"/〉
同样地,如果要使用基于SSL HTTP协议的方式来处理HTTP GET/POST请求,则需要在server.xml的如下部分中加入有关URIEncoding的设置:
〈Connector port="8443" scheme="https" secure="true"
……
URIEncoding="UTF-8"/〉
如果使用其他的Web服务器为Tomcat转发JSP/Servlet请求的情况下,即仅将Tomcat作为Web应用服务器使用时,由于它不再通过HTTP协议方式而是AJP协议方式来接受其他Web服务器转发的请求,因此上述设置就不起作用了。以常见的Web服务器Apahche 2.0.x与Tomcat 5.5.x的整合为例,需要对serverv.xml文件做如下的设置:
〈Connector port="8009"
enableLookups="false" redirectPort="8443" protocol
="AJP/1.3"
URIEncoding="UTF-8"/〉
在Web应用环节的字符编码问题上,由于容易通过程序方式操控,DSpace已比较好地解决了这一问题。其主要的解决思路和方法是,对于任何DSpace JSP文件,都在其第一行使用JSP Page指示符明确指定字符编码格式为“UTF-8”,如:
〈%@page contentType="text/html;charset=UTF-8"%〉
对于DSpace Servlet,则通过在一个DSpaceServlet基类中初始化DSpace Context,并设定所有请求参数的编码格式为“UTF-8”,以保证请求被读取之前都能按照UTF-8格式被正确地编码。其他所有的Servlets都必须继承该基类,从而能够以同样的编码格式进行请求的接受和处理。
在JDBC连接环节,编码问题可能因不同厂商的JDBC驱动而异。就DSpace来说,由于默认的数据库为PostgreSQL7.3及以上的版本,其相应的JDBC驱动版本也开始将与数据库交互过程中的编码转换完全交由数据库本身解决。
在数据库环节,首先,若采用PostgreSQL 8.x以下的版本,需要在配置和编译时使用“--enable-multibyte”和“--enable-unicode”选项,从8.0版本开始,这些选项已成为默认的编译选项,因此不需要在编译阶段再配置。其次,在创建供DSpace使用的数据库时使用编码选项并声明为“UNICODE”,如“createdb-U dspace-E UNICODE dspace”,使数据库内部以UTF-8方式对数据进行编码和存储。
尽管操作系统的语言环境(Locale)并不直接影响DSpace的部署和运行,将其设定为基于Unicode的环境则有助于防止系统定制和运行过程中发生不必要的差错,如支持JVM以及Tomcat服务器可以直接从操作系统的编码方式中获得适当的默认文件编码属性,保证程序的正确编译和运行等。以Fedora Core GNU/Linux 4为例,可以通过两种方式完成语言环境的更改和设定:通过修改文件/etc/sysconfig/i18n,将其中的键LANG的值改为“zh_CN.UTF-8”;或者在/etc/profile文件中加入一行“export LANG=zh_CN.UTF-8”。
至此,一套支持DSpace运行的基于Unicode/UTF-8的完整的编码环境就基本构建形成了,并为DSpace后续的中文化定制和部署奠定了良好的基础。
(2)用户界面的中文化[5]
以Unicode编码环境为基础,DSpace主要通过利用Java技术支持的独立资源文件的方法来方便用户界面的本地化。在服务器端,它已将与用户界面有关的JSP/Servlet中大部分文本信息从程序中分离出来,形成了名为“Messages.proper ties”的属性文件。在中文化的过程中,首先将该文件进行复制,并按照Java有关本地化资源文件命名的格式要求命名为" Messages.zh_CN.Properties" ,将其中的“键/值(Key/Value)”对中的“值”翻译为中文,这样大部分与用户界面有关的中文化工作就基本完成了。编辑过程中需要注意的是,要保证该支持中文化属性文件最终必须以UTF-8编码方式存储和编译。
此外,DSpace还使用一些文本文件来保存某些与用户交互有关的配置、反馈及帮助信息的保存,也需要做中文化处理,以使用户能够获得完整一致的中文化DSpace的使用体验。这些文件主要包括在/dspace/config目录及其子目录下与邮件反馈、元数据录入表单等有关的文件,以及在Jsp文件目录下的帮助文件等。
目前,DSpace的本地化更多地还是多语言支持的层次,对于日期、货币及姓名等格式的本地化支持还不完善,尤其是在中文化过程中,对中文姓名的处理与中文习惯明显不一致,这些都需要在中文化的过程中通过修改程序的方式进行定制处理。在用户界面的可定制性方面也没有特别的考虑和支持,更改默认的界面和风格都只能通过修改JSP程序的方式进行,并按照DSpace的建议,在其Jsp目录下建立一个Local子目录,将需要修改的Jsp文件或者Jsp目录原有的所有内容以保持其目录结构的方式复制到该目录下,再进行修改。这样做的好处主要是为了避免在以后进行DSpace的升级过程中,造成对已做的定制意外覆盖的后果。
(3)中文全文检索问题的解决
DSpace使用Apache Lucene[10] 作为全文索引和检索的引擎,由于Lucene内置的标准文本分析器并不支持对中文内容的分析和索引,在默认的情况下,DSpace也不支持中文索引和检索。因此,要使DSpace具备中文全文检索能力,首先要为Lucene包增加中文文本分析器。然后替换有关全文索引及查询程序中的标准文本分析器为中文文本分析器。
因Lucene在全文检索领域广受关注,已经有志愿者贡献了中文文本解析器的源码,为Lucene增加中文解析器就比较简单了。下载Lucene的源码,并从Apache Lucene Sandbox中选择下载合适的中文分析器的源码,按照Lucene的目录结构将中文分析器的源码组织到Lucene的代码体系中,然后重新编译通过后即得到支持中文检索的Lucene包,并用它将DSpace自带的Lucene包予以替换。
需要修改的其他程序代码只有两处,一处是将DSIndexer类的oenIndex方法中的如下语句:
writer=new IndexWriter(index_directory,new DSAnalyzer(),wipe_existing);
替换为:
writer=new IndexWriter(index_directory,new ChineseAnalyzer(),wipe_existing);
另一处在DSQuery类的doQuery方法中的如下语句:
QueryParser qp=QueryParser qp=new QueryParser("default",new DSAnalyzer());
替换为:
QueryParser qp=new QueryParser("default",new ChineseAnalyzer());
完成以上修改后,重新编译DSpace,就可以得到顺利支持中文全文索引和检索的DSpace。
3.3 Handle System的启用[4,5]
长期可靠的链接或标识对于数字学术资源的引用、发现、可靠定位和利用的意义是不言而喻的,因此,DSpace作为支持研究性数字知识库建设的应用平台,采用了Handle System来提供对其中的条目(Item)、专题(Collection)以及主题(Community)等数字对象和数字对象集合提供全球唯一的、稳定的标识,以保证其中存储的这些任何类型的数字对象都可以被正确地解析和定位。在DSpace框架下,启用Handle System的主要步骤为:
(1)运行如下的命令,得到一个名为sitebndl.zip的文件。
[dspace_install_dir]/bin/dsrun net.handle.server.SimpleSetup
[dspace_install_dir]/handle-server
(2)将得到的文件发送到hdladmin@cnri.reston.va.us,CNRI在收到邮件后会很快为你的申请分配一个全球唯一的命名机构(Naming Authority)前缀。如我们申请到的Handle前缀为2239,以后所有形如http://hdl.handle.net/2239/xxx的标识将都会被解析和指向我们的本地Handle服务。
(3)编辑[dspace_install_dir]/handle-server/config.dct配置文件,主要是更新其中与命名机构相关的配置为新申请得到的命名机构前缀。
(4)修改[dspace_install_dir]/config/dspace.cfg配置文件,将" handle.prefix" 选项的值更改为新分配的前缀。如handle.prefix=2239。
(5)启动Handle服务:
[dspace_install_dir]/bin/start-handle-server
需要注意的是,如果在生成sitebndl.zip文件的过程中,选择了服务器认证及管理密钥,可能无法启动Handle服务。原因在于start-handle-server中将所有输出重定向到了/dev/null,因此,在执行start-handle-server的过程中无法提供输入密钥的接口。解决的办法是,将start-handle-server文件中如下的行:
nohup BINDIR/dsrun-Dlog4j.configuration=log4j-handle-plugin.properties\
net.handle.server.Main handledir〈/dev/null〉〉 logdir/handle-server.log 2〉&1 &
更改为:
BINDIR/dsrun-Dlog4j.configuration=log4j-handle-plugin.properties\
net.handle.server.Main handledir〉〉 logdir/handle-server.log 2〉&1
这样,在执行start-handle-server的过程中就可以根据提示输入密钥后,再将其放入后台作业中执行就可以了。
3.4 OAI-PMH接口的开放[5,12]
支持OAI-PMH协议是当前开放性数字知识库的必备特性。DSpace对OAI-PMH的支持通过采用由OCLC开发的OAICat开源软件包来实现,使基于DSpace平台构建的知识库系统具备符合OAI-PMH 2.0的数据提供者接口功能和服务。在DSpace的默认编译过程中,会生成一个名为dspace-oai.war包,只要将其正确部署就可以使DSpace获得通过HTTP协议接受和响应OAI-PMH请求的能力。访问DSpace的典型OAI-PMH请求格式为:
http://[dspace_site_name]/dspace-oai/request? [OAI_verb_Clause]
目前,DSpace只支持按照无限定词的DC元数据格式的元数据共享,并以形如“ oai:host_name:handle”的URI格式作为OAI-PMH记录的唯一标识符,如对于SEEKSpace将有形如“ oai:seekspace.resip.ac.cn:2239/xxx” 的OAI记录标识格式。如果需要对其他类型的元数据元素集的支持,可以通过创建额外的词汇转换表(Crosswalk),并对oaicat.properties文件进行适当配置来实现。
3.5 功能定制和扩展的方法
DSpace的当前版本对灵活可扩展机制的设计和支持能力还比较弱,暂不支持以插件(Plugin)或附加件(Addon)方式对系统的功能和服务进行方便地定制或扩展,而只能通过以修改程序文件的插入方式(Addin)或打补丁(Patch)的方式进行功能扩展。如我们在基于DSpace进行SEEK Space技术平台的定制和开发过程中,用户界面的定制、OAI搜索引擎、SRW/SRU检索API、个人研究室等附加功能的扩展都是通过直接修改相应的JSP/Servlet代码的方式来实现的。这也是目前大量针对DSpace的扩展功能和服务实现的基本模式。不过,DSpace的新版本已开始注意加强其功能和服务扩展机制的支持能力,考虑增加如Plugin Manager或Addon Prototype等灵活支持对DSpace的功能和服务行为进行裁减,或在不需要改动其核心代码及数据库模式的条件下实现功能和服务扩展的机制[13]。
4 结语
总之,DSpace提供了支持研究性数字知识库系统建设所需要的绝大部分功能,如数据摄入、元数据描述和封装、浏览和检索、数字对象的唯一标识及长期保存、数据管理、OAI数据提供者支持等开放学术存档系统的必备功能服务支持,还提供了诸如基于LDAP的用户认证、基于OpenURL的开放链接和服务集成,以及基于SRB的“无限”可扩展存储能力支持等多方面的丰富功能和服务支持,而且随着版本的不断更新升级和用户群体的扩大,其技术框架、功能和服务也将日益完善和丰富。因此,在依托DSpace建设SEEKSpace平台的过程中,一方面,我们将继续加强对其现有功能的开发利用和扩展,另一方面,也将密切关注其更新和发展,及时对SEEKSpace的技术平台进行更新和升级。