persNamer
2025年3月28日
·
3 分钟阅读时长
persNamer:把TEI接上虚拟国际规范文档
persNamer是一个专门的Python工具,简化把VIAF(虚拟国际规范文档,Virtual International Authority File)中的规范人物数据整合进TEI XML文档的流程。它把VIAF标识符转成可直接使用的TEI标记,为数字学术版本创建结构化人物条目的手工劳动因此大减。
TEI中规范控制的难处
数字学术版本往往需要精确识别历史人物,包括规范化的姓名和生卒年月。要在整个项目里保持一致的规范控制,需要:
- 识别历史文本中的人物
- 查找他们的规范数据
- 创建格式正确的TEI条目
- 确保全项目引用一致
这些步骤通常靠手工,费时,还容易前后不一。
persNamer如何工作
persNamer把这套流程自动化:
- 获取VIAF数据:给定一个VIAF标识符,工具通过HTTP内容协商取回RDF数据
- 提取关键信息:解析RDF,提取首选姓名、出生日期和死亡日期
- 生成TEI标记:创建两段基本的XML片段:
- 一条规范文档条目(
<person>元素,带生成的xml:id、<persName>、<birth>、<death>和<idno type="VIAF">) - 一个独立的标注标签(
<persName>,其ref属性指向规范条目)
- 一条规范文档条目(
这样双管齐下,校勘者既能维护一份集中的规范文档,又能把标注标签轻松插入TEI文本。
主要特性
- 标准化ID生成:按
pers-[familyname]-[givenname initial]格式生成一致的XML ID(如pers-deteligny-c) - RDF解析:用
rdflib从各种RDF属性(如rdfs:label、schema:name、viaf:mainHead)中提取信息 - 命令行界面:只需一个VIAF编号作为必要参数即可运行
- 详细输出:除最终XML外,还提供详细的处理信息
用法示例
python persNamer.py 314802260
这条命令生成:
<person xml:id="pers-deteligny-c">
<persName>Charles deTéligny</persName>
<birth>1535</birth>
<death>1572-08-24</death>
<idno type="VIAF">314802260</idno>
</person>
<persName ref="#pers-deteligny-c">Charles deTéligny</persName>
在数字人文中的应用
persNamer对以下情形尤其有用:
- 需要规范控制的数字学术版本
- 涉及历史人物的TEI编码项目
- 把文献与规范记录相连的关联数据项目
- 保证大型TEI语料库的一致性
- 在数字人文课程中讲授规范控制概念
实现
persNamer用Python实现,依赖:
requests:HTTP请求rdflib:RDF解析lxml:XML处理
源代码与文档见GitHub仓库。
