2. 元数据标准发展史:从MARC到DCAT

元数据标准不是一天建成的。我从2008年第一次接触MARC记录时,完全没想到这东西能追溯到1960年代。说白了,整个发展史就是一场“如何让数据被机器读懂”的接力赛。

今天咱们把时间线捋清楚。你会发现每个标准都是在解决前一个标准留下的坑。

元数据标准发展脉络(1965–2014) MARC (1965) 机读目录 美国国会图书馆 磁带/字符编码 Dublin Core (1995) 15个核心元素 都柏林/OCLC 网页资源描述 MODS (2002) XML版MARC子集 美国国会图书馆 XML Schema DCAT (2014) 数据目录词汇 W3C推荐 开放数据/互操作 核心趋势:从专有 → 通用 → 语义化 → 互操作 MARC(图书馆专用)→ DC(跨领域)→ MODS(XML桥接)→ DCAT(政府/开放数据)

2.1 MARC:图书馆的“磁带遗产”

MARC(Machine-Readable Cataloging)是元数据领域的鼻祖。1965年美国国会图书馆搞出来的,最初目的是把卡片目录变成磁带能读的格式。

你想想看,那时候连ASCII都还没完全定型。MARC用固定字段位置、三位数字标签、子字段标识符——比如 245 是题名,$a 是主要题名。

一个典型的MARC记录长这样:

LEADER 00000nam a2200385 i 4500
001   2023001234
005   20230701000000.0
008   230701s2023    nyua          001 0 eng  
020   $a9781234567890
100 1 $aSmith, John$eauthor.
245 10$aIntroduction to Metadata$cJohn Smith
260   $aNew York$bAcademic Press$c2023

我在一家老牌图书馆做系统迁移时看过几十万条MARC记录。那个 LEADER 字段的每一位都有含义——第5位是记录状态,第6位是记录类型。没文档你根本猜不出来。

核心贡献:MARC第一次把图书馆目录变成了机器可读、可交换的数据。至今仍是图书馆系统的基石。

踩过坑:我曾经接手一个MARC转XML的项目,发现字段 856(电子资源定位)在早期记录里直接写URL,后期却用 $u 子字段。混编记录特别容易解析出错。最好先做一次字段分布分析。

2.2 Dublin Core:迈出“简单通用”的一步

到了1995年,图书馆圈子之外的人也想要元数据。网页多了,大家都需要描述资源。于是都柏林核心元数据倡议(DCMI)出了个15个元素的简单集。

说白了就是:题名、创建者、主题、描述、出版者、贡献者、日期、类型、格式、标识符、来源、语言、关联、覆盖范围、权利。15个词搞定。

一个Dublin Core的RDF/XML例子:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="http://example.org/doc/42">
    <dc:title>元数据标准入门</dc:title>
    <dc:creator>张三</dc:creator>
    <dc:date>2023-06-15</dc:date>
    <dc:type>Text</dc:type>
  </rdf:Description>
</rdf:RDF>

15个元素够用吗?其实不够。但好处是门槛极低。我见过一个高校机构库,就只用了DC的8个核心字段跑通整个流程。简单就是力量。

实用建议:如果你刚开始设计元数据方案,先按Dublin Core列一遍。15个元素覆盖了最基础的信息。之后不够再扩展,比一上来搞复杂的Schema更容易落地。

2.3 MODS:MARC的XML“瘦身版”

MARC太古老,DC又太简单。2002年美国国会图书馆推出了MODS(Metadata Object Description Schema)。它本质上是MARC的XML子集——保留主要语义,但用树结构代替了固定字段。

一个MODS片段:

<mods xmlns="http://www.loc.gov/mods/v3">
  <titleInfo>
    <title>元数据实践指南</title>
  </titleInfo>
  <name type="personal">
    <namePart>李四</namePart>
    <role>
      <roleTerm type="text">作者</roleTerm>
    </role>
  </name>
  <originInfo>
    <dateIssued>2023</dateIssued>
  </originInfo>
</mods>

对比MARC,MODS最大的好处是XML原生支持,解析工具多。我在做数字人文项目时,用XSLT把MARC转成MODS,比逐字段解析磁带格式快两个数量级。

2.4 DCAT:面向开放数据目录的W3C标准

2014年W3C发布了DCAT(Data Catalog Vocabulary)。这个标准专门用于描述数据目录本身——数据集、数据服务、分布。它是RDF/OWL词汇表,天然支持语义关联。

一个DCAT描述的简化样例:

@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct:  <http://purl.org/dc/terms/> .

<http://data.gov/catalog/1> a dcat:Catalog ;
  dct:title "开放数据平台" ;
  dcat:dataset <http://data.gov/dataset/42> .

<http://data.gov/dataset/42> a dcat:Dataset ;
  dct:title "城市公交站点数据" ;
  dcat:distribution <http://data.gov/dist/csv-bus> .

<http://data.gov/dist/csv-bus> a dcat:Distribution ;
  dcat:mediaType "text/csv" ;
  dcat:accessURL "https://data.gov/bus-stops.csv" .

DCAT把元数据从“描述单个资源”提升到“描述资源之间的关联”。政府开放数据门户几乎标配DCAT。我参与过的一个省级数据开放平台,就是用DCAT做数据目录的RDF序列化,上层直接对接SPARQL查询。

2.5 发展脉络对比

标准出现时间领域核心优势主要弱点
MARC1965图书馆稳定性极高格式陈旧、难以扩展
Dublin Core1995综合/Web极简、易上手语义粒度不足
MODS2002图书馆/数字人文MARC语义+XML灵活性仍偏向图书馆领域
DCAT2014开放数据/政府语义关联、目录互操作需要RDF基础

2.6 从发展史中学到什么

回看这五十年,元数据标准一直在“专深”和“通用”之间摇摆。没有哪个标准是银弹。

  • MARC:专到连子字段含义都依赖外部手册,但图书馆离不开它。
  • Dublin Core:通用到15个字段搞定80%场景,但遇到复杂关系得自己扩展。
  • MODS:专向通用的桥接方案,可惜生态不够大。
  • DCAT:拥抱语义网,但引入OWL后学习曲线变陡。

我的经验:选标准别追新。如果你的团队没有RDF经验,从Dublin Core开始跑通流程,再用DCAT做上层目录。我在一个项目中跳过DC直接上MODS,结果成员花了两周才搞懂嵌套关系。元数据工具链和人才储备一样重要。

这些标准不是彼此替代的关系。你会在同一个系统中看到MARC记录做底层存储、DC做检索摘要、DCAT做数据目录。理解它们的历史,其实是理解它们各自的“设计妥协”。