MODS到RDF映射建议(Samvera版)

samvera

Samvera原名Hydra,是一个开源的机构库解决方案(由Fedora机构库软件、Solr索引、Blacklight分面搜索浏览定制显示界面和Samvera集成组件4个部分构成)。最初是Hull、Stanford、Virginia三所大学的跨机构项目,现在已形成一个参与广泛的开发社区。
上月Samvera MODS to RDF Working Group发布《MODS到RDF映射建议》1.0版,定位是非官方的应用纲要/应用配置文件(Application Profile)——MODS本身有官方RDF但一直处于草案阶段(参见:MODS到BIBFRAME映射,2019-2-15)。
Kathleen Gerrity在MODS和BIBFRAME邮件组发消息,如此介绍《MODS到RDF映射建议》:
本应用纲要提供对数字对象映射MODS XML元数据到RDF关联数据类和属性,使用广泛采用的RDF命名空间。
十多家学术和公共图书馆成员协作成果,文件包含MODS元素到RDF的综合映射,使用真实世界元数据用例和数百样例。
不同于使用单一词表或新提出正式本体来实施直接的XML到RDF方法,本映射包含来自大量现有词表的属性,为关联数据环境中的记录提供更大价值。提供直接的“直接”映射(不需要为诸如主题、人或地点之类的概念创建本地对象)和更彻底的“铸造对象”(minted object)映射。
尽管工作在Samvera数字机构库框架下实行,本映射与系统无关,希望在广泛环境下可应用。
via [MODS]邮件组: MODS to RDF Mapping Recommendations now available / Kathleen Gerrity (2019-2-12)

本建议重用22个命名空间,包括少数自定义属性采用的不透明命名空间(OpaqueNamespace,开源社区支持的本体框架,提供永久URI)。有些命名空间仅采用一二个属性(如基础的owl, rdf, rdfs, skosxl)。非图书馆领域开发的词表主要用于相关项(mods:relatedItem)。
另外用到多个LC代码表,不是作为取值,而是作为属性,如以关系词代码作为属性,涉及责任者、出版发行项以及馆藏机构——尤其是出版发行机构与地点采用关系词代码,感觉脑洞比较大:
直接映射例2:
<https://example.org/objects/1> relators:pup <http://vocab.getty.edu/tgn/7013445> ;
relators:pbl “published by John P. Soule” ;
bf:editionStatement “3rd edition” ;
dcterms:created “1930?” .

——《MODS到RDF映射建议》摘译——
MODS to RDF Mapping Recommendations (v.1.0) / Samvera MODS to RDF Working Group. January 2019

背景与需求
2015年中,为升级到Fedora 4,必须由基于XML、存储为数据流的元数据,转换到存储为RDF属性的元数据。许多机构大量使用MODS XML,但MODS不易翻译为RDF图模型,除非使用空节点(在Samvera和Fedora中有问题),或为元数据元素(如创作者和主题)铸造对象类(minted object classes)。因此前波士顿公共图书馆的Steven Anderson创建MODS到RDF工作组,提出创建创建一个社区设计的应用纲要,映射MODS描述元数据到RDF。

战略与决定
评估发现MODS RDF本体不合需要:[1]缺少积极维护;[2]实施中过于依赖使用空节点和/或铸造对象;[3]缺乏机构采用。
决定选择使用已在其他关联数据数据集中广泛使用的各种词表,将MODS XML元素映射到RDF。
虽然使用如此多不同的词表[见后]增加了映射指南的复杂性,但这种方法可以比作“不把所有鸡蛋放在一个篮子里”的想法。虽然机构必须准备评估许多词表的当前和未来稳定性,但如果一个词表不再受支持或进行主要版本更改,只需要更新这些映射的一部分,而不是整个文档。
早期考虑采用MODS RDF、BIBFRAME(从v.1到v.2)、都柏林核心元素和都柏林核心术语,但发现不足以表达必要的面向机构库的内容概念,或者与Fedora 4环境中的实现不合。进而研究其他词表如Schema.org、FOAF、SKOS、BIBO和RDA等。

分析过程
参与机构分别对20个MODS顶层元素如何映射逐个进行确认并提供样例等,由小组从以下方面评审,[1]数据保真度、[2]可接受的损失、[3]特定命名空间的相对优点(如采用率、预计未来可行性)、[4]遵守属性的定义域和值域取值的必要性、[5]实现的复杂性,最终达成共识。某些元素有简单和复杂两种选项。
偶而在通用命名空间找不到合适映射,小组建议在不透明命名空间(OpaqueNamespace,http://opaquenamespace.org/开源社区支持的本体框架,提供永久URI)中提出新的谓词,但目前这些谓词[属性]尚未在OpaqueNamespace中注册。

映射建议
映射分为两大类:直接映射(简单选项)和铸造对象映射(复杂选项,限部分元素)。
直接映射(简单选项)提供从MODS XML元素到RDF语句(主体、谓词、客体)的映射,且无需为主题、人物、事件或地点等概念创建或维护本地对象。所有语句都以源自外部词表(例如LCSH)的URI或文字值(文本字符串)结尾。可以使用所描述的数字对象直接存储、维护和更新这些RDF语句。此法简单,但有时会丢失MODS记录的粒度和细节,因为并非每个数据点都可以直接映射到RDF属性。
铸造对象映射(复杂选项)为该MODS元素(题名对象、名称对象等)创建本地概念对象(必须由本地机构库系统维护),以替代使用空白节点。本地对象具有单层RDF语句(主体、谓词、客体),它们提供源自外部词表的URI、本地对象的URI或文字值(文本字符串)。与所描述的数字对象一起存储的RDF语句是指向这些本地概念对象的指针。此选项允许将MODS记录中的所有详细信息序列化为RDF,以用于复杂的MODS元素如名称和主题。
铸造对象增加了数据模型的复杂性,但描述性书目元数据本身就很复杂。【直接映射中客体取文字值的较多,但】书目或文化遗产本体中使用的许多RDF谓词都具有URI或其他RDF对象类型的定义值域(可接受值的类),而不是字符串文字。本文档中的映射力求遵守所有示例中定义的值域,这需要为未由现有URI表示的概念、题名、人员、地点、馆藏或组织创建本地对象。
本映射中,某些情况提供多种方式映射元素或值【元素选择不多,值URI选择较多】。机构应创建并维护本地应用配置文件,以记录最适合其自身数据、应用和用户需求的方法。

使用命名空间
BIBFRAME (v.2) 【LC。用于mods:recordInfo;另外铸造对象的类多采用BF2】
The Bibliographic Ontology (BIBO)【用于mods:relatedItem】
Classification Schemes classSchemes【LC。用于mods:classification】
DBPedia Ontology【用于mods:relatedItem】
Dublin Core Metadata Element Set, Version 1.1
DCMI Metadata Terms
DCMI Type Vocabulary
EBUCore【用于mods:relatedItem】
Europeana Data Model (EDM)
FOAF (Friend of a Friend)【foaf:name;铸造对象的类:foaf:Person,foaf:Organization,foaf:Agent】
GeoJSON-LD【坐标 geojson:bbox,geojson:coordinates,用于mods:subject】
MARC Code List for Relators【LC。大量采用关系词作为属性:各种责任者,出版发行生产制作地、者,收藏机构rps=Repository】
OpaqueNamespace【不透明命名空间】
OWL 2【owl:sameAs】
Portland Common Data Model【用于mods:relatedItem】
RDA Unconstrained
The RDF Concepts Vocabulary (RDF)【rdf:type】
RDF Schema 1.1【rdfs:label,rdfs:seeAlso】
Schema.org
SKOS (Simple Knowledge Organization System)【skos:note;skos:exactMatch,skos:closeMatch,skos:relatedMatch;类:skos:Concept】
SKOS eXtension for Labels【skosxl:prefLabel,用于mods:titleInfo,mods:subject】
Standard Identifiers Scheme【LC。大量采用】

直接映射(简单选项)【仅摘<mods:titleInfo>片断】
dcterms:title 文字
dce:title URI
dcterms:alternative 文字
例1:题名含不排序字符及子题名
<https://example.org/objects/1> dcterms:title “The wintermind : William Bonk and American letters” .
例6:统一题名
<https://example.org/objects/1> dce:title <http://id.loc.gov/authorities/names/n00020514> .

铸造对象映射(复杂选项)【仅摘<mods:titleInfo>片断】
类:bf:Title
dce:title URI
bf:variantType 文字
rdfs:label 文字
skos:note 文字-编目员提供题名
skos:relatedMatch URI-规范题名
skosxl:prefLabel URI-首选题名

例1:题名含不排序字符及子题名
<https://example.org/objects/1> dce:title <https://example.org/titles/1> .
<https://example.org/titles/1> a bf:Title ;
rdfs:label “The wintermind : William Bonk and American letters” .

例6:统一题名
<https://example.org/objects/1> dce:title <https://example.org/titles/1> .
<https://example.org/titles/1> a bf:Title ;
rdfs:label “Bible” ;
skos:relatedMatch <http://id.loc.gov/authorities/names/n00020514> ;
bf:variantType “uniform” .

UNIMARC词表发布

今天偶而得知IFLA命名空间又发布了一个RDF词表——UNIMARC词表,看更新时间,是2015年12月15日。同样包括两大类:
The UNIMARC Vocabularies
UNIMARC Element Sets 元素集(近30个)
UNIMARC Vocabularies 取值词表(近50个)

没有仔细看,感觉与MARC21词表是相同的设计思路。
正如有人抱怨,现在书目RDF词表真是太多了。对MARC/RDF个人完全不看好,也不认为会有人使用。花如此多的精力分析每个字段、子字段与字段指示符的组合,然后定义为单独的元素,意义何在?

参见:
主持人Gordon DUNSIRE(也是现任RDA编辑指导委员会主席)在IFLA 2013年会上的文章:The UNIMARC in RDF project: namespaces and linked data(UNIMARC到RDF项目:命名空间和关联数据 / 刘华梅译)

MARC21书目的元素集及值词表的注册(2011-9-13)

关于IFLA命名空间下的另两个词表:
FRBR系列元素集与取值词表出版(2012-5-27)
IFLA《翻译ISBD之RDF命名空间指南》发布(2015-6-7)
有IFLA命名空间技术组/IFLA关联数据技术子委员会链接

《RDF 1.1入门》摘要

W3学校《RDF教程》的内容与2004版《RDF入门》相近——题外话是:2004版入门作者之一Eric Miller,是正在开发中的BIBFRAME的主要承担者。
不过《RDF 1.1入门》(2014版)变化很大,目录和2004版完全不同。如其“致谢”部分所说,除导言有一些句子来自2004版外,其他部分完全是新内容。以下为摘译(含少量本人理解),名词翻译大多根据2004版。

RDF 1.1 Primer (W3C Working Group Note 25 February 2014) / Guus Schreiber, Yves Raimond

1. 导论
资源描述框架(RDF)是表达关于资源信息的框架。资源可以是任何事物,包括文档、人物、物理对象(实体物件)和抽象概念
RDF用于需要由应用程序处理Web上信息的场合,而非仅向人们显示。RDF提供一个表达此信息的通用框架,这样可以在应用程序间交换而不损失含意。由于它是一个通用框架,应用设计者可以利用通用RDF解析器和处理工具。能够在不同的应用程序间交换信息,意味着对于那些最初并非为此而创建的应用程序,也可利用这些信息。

2. 为什么用RDF?[用途举例]
– 例如在使用流行的schema.org词表的Web页上增加机读信息,使它们在搜索引擎上以增强格式显示,或者由第三方应用自动处理
– 链接到第三方数据集以强化数据集。例如,一个关于绘画的数据集,可以链接到Wikidata上相应的艺术家得到强化,因此访问到关于他们及相关资源的大量信息。
– 互连API源,确保客户端能方便发现如何访问更多信息
– 使用当前发布为关联数据的数据集,例如建立关于特定论题的数据的集合
– 建立分布的社会网络,互连跨多个Web网站的人物的RDF描述
– 提供一个兼容标准的方式,在数据库间交换数据
– 在一个组织中互连不同数据集,使得可以用SPARQL执行跨数据集查询

3. RDF数据模型
3.1 三元组(Triples)
三元组=关于资源的陈述(statement)=主体 subject + 谓词 predicate + 客体 object
主体/客体=资源,谓词=属性(关系)
相同资源可以在一个三元组中处于主体位置、在另一个中处于客体位置,这就有可能找到三元组间的连接=(可视化)RDF图=节点(主体/客体)+弧(谓词)。

Fig. 1 Informal graph of the sample triples

一旦有像这样的图,可以使用SPARQL查询

3.2 IRIs [三元组中出现的RDF数据之一]
IRI=International Resource Identifier
一个IRI标识一个资源,可出现在三元组所有3个位置。
IRI由特定词表或惯例给出含意;IRI是全域标识符,可以重用此IRI标识相同的事物。

3.3 文字(Literals)[三元组中出现的RDF数据之二]
非IRI的基本值,只能出现在三元组的客体位置。
数据类型=字符串(语言标签)/日期/数值/…(XML Schema定义的数据类型)。

3.4 空节点(Blank nodes)[三元组中出现的RDF数据之三]
用于表示无需使用IRI明确标识的资源,可出现在三元组的主体和客体位置。

3.5 多图(Multiple graphs)
多图构成一个RDF数据集,有多个命名图和至多一个未命名(默认)图。关联该图的IRI称为“图名”(graph name)。

4. RDF词表(RDF Vocabularies)
RDF用RDFS语言定义词表:关系、类别(类/子类、属性/子属性)及限制(领域/范围)
RDF词表举例:从FOAF到DC/schema.org到SKOS/OWL
词表由重用获得其价值:被其他重用的词表IRI越多,使用该IRI就越有价值(所谓的网络效应)。这意味首应该首选重用其他人的IRI,而非发明新的。

5. 写RDF图 [具体句法/RDF语言/序列化格式]
5.1 RDF语言的龟标家族(Turtle)[推荐]
5.1.1 N-Triples
常用于交换大量RDF,以及用面向行的文本处理工具处理大的RDF图。
每行代表一个三元组,用尖括号封闭完整IRI,句点表示三元组结束。
如:<http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .

5.1.2 Turtle
支持命名空间前缀、列表和数据类型串的速写。如:
BASE <http://example.org/> 提供IRI缩写,基IRI
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 定义IRI前缀
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX schema: <http://schema.org/>
<bob#me> 相对IRI,根据基IRI解析;相同主体的三元组集
a foaf:Person ; 三元组的谓词、客体,分号分隔。谓词a是属性rdf:type的速写,表示实例关系,意在匹配人的直觉
foaf:knows <alice#me> ;
schema:birthDate “1990-07-04″^^xsd:date ;
foaf:topic_interest wd:Q12418 . 句点表示三元组集结束

5.1.3 TriG(Turtle的多图扩展:也可称为Turtle)
– 每个图中的三元组用花括号括起(内中句法与Turtle一致)。关键词GRAPH可选:可改善可读性,但主要为与SPARQL更新校正。如:
GRAPH <http://example.org/bob>
{
<bob#me>

}

5.1.4 N-Quads(N-Triples的多图扩展,四元组)
如N-Triples,典型地用于交换大量RDF数据集,以及用面向行的文本处理工具处理RDF。
在一行中加入第4个元素,捕捉该行描述三元组的图IRI。如:
<http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/bob> .

5.2 JSON-LD(基于JSON的RDF句法)
以最小变化转换JSON文档为RDF。

5.3 RDFa(用于在HTML和XML文档中嵌入RDF数据)

5.4 RDF/XML(用于RDF的XML句法)
(历史)1990年代后期RDF刚开发时,RDF/XML是其唯一句法,某些人仍然称本句法为RDF。2001年Turtle的先导N3被提出,渐渐前面列出的其他语言被采用、被标准化。

6. RDF图的语义
– 用于命名主体、谓词和客体的IRI,在范围上是“全域的”,使用时每次命名相同的事物
– 当谓词关系确实存在于主体和客体之间时,每个三元组完全为“真”
– 当其中所有三元组为“真”时,一个RDF图完全为“真”
具有以上声明语义的RDF的益处之一是,系统能做逻辑推论。即给出某个接受为真的导入三元组集,在某些情况下,系统能够推论出其他三元组在逻辑上必须也是真的,我们说第一个三元组集“传递”给了其他三元组。这些称为“推理器”的系统,有时也能推出,给定的导入三元组互相矛盾。
【以上为理想状况,事实上使用时如何验证关系是否存在?如果其中一个环节有问题,就会导致连接的事实出问题。能够发现互相矛盾是幸运的,没发现不等于数据就不存在问题。当三元组大量出现后,如何选择数据来源,会是今后需要认真对待的问题?】
当一种特定的推论似乎对许多不同应用有用时,可被记录为一个蕴涵体制[SPARQL用语义扩展]。RDF语义中指定了多个蕴涵体制。
RDF工具可能不认识所有数据类型。至少要求工具支持数据类型串文字和语言标签文字。
不同于其他数据建模语言,RDFS允许相当大的建模自由度。例如,相同实体既可用作一个类、也可用作一个属性。同样,“类”和“实例”的世界没有严格分离。

7. RDF数据
RDF允许从任何来源组合三元组为一个图,作为合法RDF处理。大量RDF数据作为关联数据存在。数据集在Web上使用RDF发布与连接,其中很多通过SPARQL提供查询便利。上述例子中所用数据集包括:Wikidata、DBPedia、WordNet、Europeana、VIAF。
以关联数据存在的数据集清单由datahub.io维护:Datasets(【2014-9-9有9853个】
许多记录RDF数据源间链接的词表术语已经很流行,一个例子是由OWL词表提供的sameAs属性,可用于表明两个IRI事实上指向相同资源。