MARC数据转换为RDF流程:芬兰国家图书馆实践

GitHub上芬兰国家图书馆的 bib-rdf-pineline ,包含各种脚本和配置,供转换MARC书目记录为RDF,对有意实施类似项目者当有不少参考价值。
芬兰国家图书馆的关联数据采用Schema.org,以BIBFRAME作为转换MARC格式的中间步骤。如果直接采用BIBFRAME,步骤当可简化,而汇集“作品”的部分必然会有所不同。
翻译repo中的README文件中的转换步骤备记:

1、ILS系统导出的全部MARC记录文件
2、分割为较小的批处理文件
3、使用unix工具(如grep和sed)除去MARC记录中本地特殊内容
4、使用Catmandu转换为MARCXML并强化MARC记录
5、运行LC的 marc2bibframe2 转换MARC为BIBFRAME的RDF
6、计算”作品“键(如:作者+题名组合),供后续合并相同创作作品的数据
7、转换BIBFRAME数据为Schema.org的RDF,N-Triples格式
8、按相同作品合并Schema.org数据
9、转换原始Schema.org数据为HDT格式,如此完整数据集可通过命令行用SPARQL查询
10、统一数据,如通过重写URI,把主题移到原始作品
11、转换统一后的数据为HDT
12、(待续)
13、获益!

查了下其中提到的另外两个陌生的名词:Catmandu、HDT,附后。

关于marc2bibframe2,参见:MARC到BIBFRAME 2.0转换工具:使用报告(2017-3-24)

——— Catmandu数据处理工具 ———
Catmandu:命令行工具,从数字图书馆、研究服务或任何其他开放数据集,访问和转换数据 。
性能:
– 通过多种协议下载数据,包括:OAI-PMH, SRU, SPARQL 和 Linked Data Fragments
– 转换格式,如:MARC, MODS, Dublin Core 等等
– 生成 RDF,说语义网的语言
– 索引数据到数据库如:Solr, Elasticsearch 和 MongoDB
– 使用简单的 Fix 语言,转换元数据为任何格式

——— HDT格式 ———
HDT (Header, Dictionary, Triples) 头标、词典、三元组
RDF的紧凑数据结构和二进制序列化格式,压缩大数据集以节省空间,同时维持查询和浏览操作而无需预先解压缩。是在Web上存储和共享RDF数据集的理想格式。

MARC到BIBFRAME 2.0转换工具:使用报告

芬兰国家图书馆的Osma Suominen在美国国会图书馆(LC)发布MARC到BIBFRAME 2.0转换工具后,第一时间进行了试用,并在BIBFRAME邮件组分享了他的试用报告。
转换MARC书目记录为RDF,是芬兰国家图书馆关联数据工作流程中重要一环。相对于MARC到bf的原转换工具,试用报告对MARC到bf2转换工具给予较高评价,也非常赞赏规范与具体转换分离的方式,称之为solid engineering。只是对于LC来说,比较遗憾的或许是BIBFRAME只是作为一个中间过渡,芬兰国图的关联数据主要采用Schema.org作为目标数据模型。
LC的marc2bibframe2转换工具芬兰国图的书目数据到RDF转换流程bib-rdf-pipeline 都放在GitHub上,Osma Suominen在使用过程中发现问题可随时提交,或给出自己的修正,充分显示了GitHub平台在应用分享和共同维护上的优势。

Osma Suominen使用报告摘译如下:
[BIBFRAME] First impressions of new MARC to BIBFRAME 2.0 converter / Osma Suominen (2017-3-23)

1、技术架构
转换器基于XSL样式表,有很多可用的实施。本次转换按README文件建议使用xsltproc XSL处理器。
代码分成约20个XSL文件,每个对应一个发布为Excel表的转换规范,还有相应的使用XSpec写的单元测试,用于验证转换是否产生想要的结果。
XSL执行比bf转换所用XQuery好很多。同时由规范(Excel表)到实施(XSL)和单元测试(XSpec)的链条,让转换的需求和实施验证显得很清晰。旧转换器中,代码本身作为规范,并且没有单元测试。
2、性能
性能良好。单记录少于0.2秒,原转换工具使用Saxon要4秒。批量,单CPU约每秒160条记录(快于原每秒100条记录)。用4CPU并行转换1M记录约20分钟,几乎是原4倍速(75分钟)。
3、问题
发现一些bug,已在GitHub上作为问题报告。生成不正确RDF语法的问题及时得到解决。最严重的问题是转换语言信息,会混如本批中其他记录中的信息,我已修改转换器防止此问题,并作为pull提交。
4、缺失性能
相对于原转换程序:
【1】没有从240字段创建译本的“作品”
【2】没有转换10位ISBN到13位,也没有去短横
【3】序列化格式只支持RDF/XML,原来有N-Triples和JSON。这个可以理解,可以用其他工具实现。
5、文档
所有文档都在GitHub repo的顶层的README文件中。

BIBFRAME2.0词表更新、相关组件公布

2016年4月,LC发布了BIBFRAME 2.0词表(bf2)(BIBFRAME词表2.0发布,2016-4-23)。此后,为准备进行BIBFRAME第2阶段试验,LC一直在为录入bf2格式的数据而努力。过了差不多一年,LC在本月发布了BIBFRAME 2.0相关组件,分享内容包括:1、更新的词表,2、MARC到BIBFRAME转换规范,3、MARC到BIBFRAME转换程序(BIBFRAME Vocabulary updated, MARC to BIBFRAME conversion specifications and programs released, March 10, 2017))。消息发布在BIBFRAME邮件组:
BIBFRAME specifications and conversion programs made available / McCallum, Sally (13 Mar 2017)

摘译如下:
LC正把整个书目数据文档转换到BIBFRAME,由MARC书目记录转换为BIBFRAME作品和实例描述,并与由MARC规范中的题名和名称/题名规范记录转换而来的作品描述集成。此次发布的组件即由上述工作形成,供大家使用BIBFRAME2.0词表实施开发,或者调查关联数据环境。

– BIBFRAME 2.0 词表更新:包括增加、改变、删除。
另外,在bf:之外新增命名空间bflc:,收录BIBFRAME的LC扩展,有些是为MARC转换而临时设置【类6个、属性9+20个】
先前版本:https://github.com/lcnetdev/bibframe-ontology
当前版本:http://www.loc.gov/bibframe/docs/
【在当前版本的清单页面,各元素的Change Notes注明变化情况:包括New新增、修改revise/fix等,其中2017年新增或修改37个
删除类2个:WorkTitle、InstanceTitle,删除属性3个:barcode、otherEditionOf、contributor,不以元素区分创作者、贡献者

MARC到BIBFRAME2.0规范MARC 21 to BIBFRAME 2.0 Conversion Specifications
共有依MARC字段块划分的20个转换对照表及说明文件,为所有MARC字段、指示符、子字段到bf2元素的对照,分别映射到I实例、W作品和Item单件。少数未使用的元素标记为“nac”(不尝试转换),在MARC环境外无意义的标记为“ignore”。

MARC到BIBFRAME转换程序
Index Data公司为LC编制。用XSLT写成,由MARCXML转换为BIBFRAME2.0
LC目前用这些转换程序开发试验项目,期望随工作进展加以调整。LC的Github页有详细使用说明。

即将提供的其他BIBFRAME工具:能够看BIBFRAME描述的工具
LC使用Index Data的Metaproxy工具,配合其图书馆自动化系统Voyager的OPAC,实现使用Z39.50或SRU搜索,搜索结果可以MARC、MODS、马上会有BIBFRAME2.0获取。其他工具将在完成后宣布。
BIBFRAME Implementation, Tools, and Downloads页面目前标记着3个coming soon:MARC到BIBFRAME比较观看器BIBFRAME2.0编辑器BIBFRAME演示数据集/BIBFRAME样例】