persNamer

persNamer: связываем TEI с Virtual International Authority File
persNamer — специализированный инструмент на Python, упрощающий включение авторитетных данных о персонах из VIAF (Virtual International Authority File) в документы TEI XML. Преобразуя идентификаторы VIAF в готовую к использованию TEI-разметку, persNamer значительно сокращает ручную работу по созданию структурированных записей о персонах для цифровых научных изданий.
Трудности авторитетного контроля в TEI
Цифровым научным изданиям часто требуется точная идентификация исторических лиц, включая нормализованные формы имён и даты жизни. Чтобы поддерживать единообразный авторитетный контроль по всему проекту, нужно:
- выявить персоны в исторических текстах
- найти о них авторитетные данные
- создать правильно оформленные записи TEI
- обеспечить единообразие ссылок по всему проекту
Обычно эти шаги выполняются вручную, отнимают много времени и чреваты разнобоем.
Как работает persNamer
persNamer автоматизирует этот процесс:
- Получение данных VIAF: по идентификатору VIAF инструмент загружает RDF-данные через согласование содержимого HTTP
- Извлечение ключевых сведений: разбирает RDF и извлекает предпочтительную форму имени, дату рождения и дату смерти
- Генерация 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для разбора RDFlxmlдля работы с XML
Исходный код и документация — в репозитории на GitHub.
