persNamer

28 марта 2025 г. · 2 мин. для прочтения
code

persNamer: связываем TEI с Virtual International Authority File

DOI

persNamer — специализированный инструмент на Python, упрощающий включение авторитетных данных о персонах из VIAF (Virtual International Authority File) в документы TEI XML. Преобразуя идентификаторы VIAF в готовую к использованию TEI-разметку, persNamer значительно сокращает ручную работу по созданию структурированных записей о персонах для цифровых научных изданий.

Трудности авторитетного контроля в TEI

Цифровым научным изданиям часто требуется точная идентификация исторических лиц, включая нормализованные формы имён и даты жизни. Чтобы поддерживать единообразный авторитетный контроль по всему проекту, нужно:

  1. выявить персоны в исторических текстах
  2. найти о них авторитетные данные
  3. создать правильно оформленные записи TEI
  4. обеспечить единообразие ссылок по всему проекту

Обычно эти шаги выполняются вручную, отнимают много времени и чреваты разнобоем.

Как работает persNamer

persNamer автоматизирует этот процесс:

  1. Получение данных VIAF: по идентификатору VIAF инструмент загружает RDF-данные через согласование содержимого HTTP
  2. Извлечение ключевых сведений: разбирает RDF и извлекает предпочтительную форму имени, дату рождения и дату смерти
  3. Генерация TEI-разметки: создаёт два необходимых фрагмента XML:
    • запись авторитетного файла (элемент <person> со сгенерированным xml:id, <persName>, <birth>, <death> и <idno type="VIAF">)
    • отдельный тег аннотирования (<persName> с атрибутом ref, указывающим на запись авторитетного файла)

Такой двойной вывод позволяет редакторам вести централизованный авторитетный файл и при этом легко вставлять теги аннотирования в свои тексты TEI.

Основные возможности

  • Стандартизованная генерация идентификаторов: создаёт единообразные XML-идентификаторы вида pers-[familyname]-[givenname initial] (напр., 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.

Clément Godbarge
Authors
Преподаватель цифровых гуманитарных наук
Клеман Годбарж — преподаватель цифровых гуманитарных наук в Университете Сент-Эндрюс. Его исследования посвящены науке и искусству управления в Европе раннего Нового времени. В готовящейся книге он рассматривает, как врачи при французских и итальянских дворах XVI века утверждали себя в качестве политических экспертов нового типа. Его работу поддерживали Фонд Эндрю У. Меллона, Комиссия Фулбрайта, Американское общество Ренессанса и Гарвардский университет.