2025-11-23T02:07:17.015845

Generating CodeMeta using declarative mapping rules: An open-ended approach using ShExML

García-González
Nowadays, software is one of the cornerstones when conducting research in several scientific fields which employ computer-based methodologies to answer new research questions. However, for these experiments to be completely reproducible, research software should comply with the FAIR principles, yet its metadata can be represented following different data models and spread across different locations. In order to bring some cohesion to the field, CodeMeta was proposed as a vocabulary to represent research software metadata in a unified and standardised manner. While existing tools can help users to generate CodeMeta files for some specific use cases, they fall short on flexibility and adaptability. Hence, in this work, I propose the use of declarative mapping rules to generate CodeMeta files, illustrated through the implementation of three crosswalks in ShExML which are then expanded and merged to cover the generation of CodeMeta files for two existing research software artefacts. Moreover, the outputs are validated using SHACL and ShEx and the whole generation workflow is automated requiring minimal user intervention upon a new version release. This work can, therefore, be used as an example upon which other developers can include a CodeMeta generation workflow in their repositories, facilitating the adoption of CodeMeta and, ultimately, increasing research software FAIRness.
academic

Генерирование CodeMeta с использованием декларативных правил отображения: открытый подход с использованием ShExML

Основная информация

  • ID статьи: 2510.09172
  • Название: Generating CodeMeta using declarative mapping rules: An open-ended approach using ShExML
  • Автор: Herminio García-González (Kazerne Dossin, Mechelen, Belgium)
  • Классификация: cs.DL (Цифровые библиотеки), cs.SE (Инженерия программного обеспечения)
  • Дата публикации: 10 октября 2025 г. (препринт arXiv)
  • Ссылка на статью: https://arxiv.org/abs/2510.09172v1

Аннотация

В настоящее время программное обеспечение является одной из основ исследований во многих научных областях, использующих компьютерные методы для решения новых исследовательских задач. Однако для обеспечения полной воспроизводимости экспериментов исследовательское программное обеспечение должно соответствовать принципам FAIR, хотя его метаданные могут следовать различным моделям данных и быть разбросаны по разным местоположениям. Для обеспечения согласованности в этой области был предложен CodeMeta в качестве словаря для унифицированного и стандартизированного представления метаданных исследовательского программного обеспечения. Хотя существующие инструменты могут помочь пользователям генерировать файлы CodeMeta для определённых вариантов использования, они недостаточны с точки зрения гибкости и адаптивности. Таким образом, в данной статье предлагается использование декларативных правил отображения для генерирования файлов CodeMeta путём реализации трёх кросс-отображений в ShExML, а затем расширения и объединения этих отображений для охвата генерирования файлов CodeMeta двух существующих артефактов исследовательского программного обеспечения. Кроме того, выходные данные проверяются с использованием SHACL и ShEx, весь процесс генерирования автоматизирован, требуя минимального вмешательства пользователя при выпуске новых версий.

Исследовательский контекст и мотивация

Определение проблемы

  1. Проблема соответствия исследовательского ПО принципам FAIR: Хотя исследовательское программное обеспечение является важной поддержкой научных исследований, его метаданные разбросаны по различным платформам (GitHub, Zenodo, Maven и т.д.), используют различные модели данных и лишены единообразия.
  2. Ограничения существующих инструментов:
    • Большинство инструментов поддерживают только преобразование один-к-одному (единственный источник метаданных в CodeMeta)
    • Недостаток гибкости и адаптивности
    • Требуют ручного вмешательства пользователя для согласования данных
    • Недостаточная автоматизация
  3. Препятствия для принятия CodeMeta: Хотя CodeMeta предоставляет унифицированный стандарт представления метаданных исследовательского программного обеспечения, ограничения существующих инструментов препятствуют его широкому распространению.

Значимость исследования

  • Продвижение открытой науки: Исследовательское программное обеспечение, соответствующее принципам FAIR, критически важно для реализации открытой науки
  • Обеспечение воспроизводимости: Унифицированный стандарт метаданных способствует воспроизводимости результатов исследований
  • Кроссплатформная совместимость: Решение проблемы несовместимости форматов метаданных между различными платформами

Основные вклады

  1. Предложение метода декларативных правил отображения: Использование языка ShExML для создания гибких и поддерживаемых правил генерирования CodeMeta
  2. Реализация трёх ключевых кросс-отображений: Разработка полной реализации ShExML-отображений для платформ GitHub, Maven и Zenodo
  3. Построение унифицированной структуры отображения: Демонстрация способа объединения нескольких гетерогенных источников метаданных для генерирования единого файла CodeMeta
  4. Разработка полностью автоматизированного рабочего процесса: Включая фреймирование JSON-LD, проверку SHACL/ShEx и интеграцию GitHub Actions
  5. Предоставление практических примеров применения: Успешное развёртывание на двух проектах с открытым исходным кодом: ShExML Engine и DMAOG

Подробное описание метода

Определение задачи

Входные данные: Данные из нескольких гетерогенных поставщиков метаданных (GitHub API, файлы Maven POM, записи Zenodo и т.д.) Выходные данные: Стандартизированный файл JSON-LD, соответствующий спецификации CodeMeta 3.0 Ограничения: Сохранение семантической целостности данных, поддержка автоматизированных обновлений, обеспечение прохождения проверки выходных данных

Архитектура основного метода

1. Язык декларативного отображения ShExML

ShExML содержит два основных компонента:

  • Декларативная часть:
    • Определение префиксов (сокращения IRI)
    • Определение источников данных (местоположение входных файлов)
    • Определение функций (расширение базовой функциональности)
    • Определение итераторов (способы извлечения данных)
    • Определение выражений (объединение данных из различных источников)
  • Генерирующая часть:
    • Определение форм (правила генерирования RDF-графов)
    • Построение триплетов субъект-предикат-объект

2. Реализация трёх основных кросс-отображений

Отображение GitHub (пример кода):

PREFIX codemeta: <https://w3id.org/codemeta/3.0/>
PREFIX schema: <http://schema.org/>
SOURCE repo_info <https://api.github.com/repos/herminiogg/ShExML>
ITERATOR gh <jsonpath: $> {
    FIELD id <id>
    FIELD name <name>
    FIELD description <description>
    // ... дополнительные поля
}
schema:SoftwareSourceCode ex:[md.name] {
    a schema:SoftwareSourceCode ;
    schema:identifier [md.id] ;
    schema:name [md.name] ;
    // ... дополнительные отображения свойств
}

Отображение Maven: Использование запросов XPath для обработки XML-формата файлов POM, обработка пространств имён и отображение зависимостей.

Отображение Zenodo: Обработка вложенных JSON-структур, включая многоуровневые отношения сущностей (авторы, организации и т.д.).

3. Стратегия унифицированного отображения

  • Интеллектуальный выбор источника: При наличии одного и того же атрибута в нескольких источниках выбор оптимального источника на основе семантической релевантности и удобства обслуживания
  • Дополнение жёстко закодированными значениями: Для данных, которые невозможно получить из внешних источников, допускается прямое определение в файле отображения
  • Функции преобразования данных: Обработка преобразования формата даты, нормализации URL и других задач очистки данных

Технические инновационные моменты

  1. Слияние данных из нескольких источников: В отличие от существующих инструментов с преобразованием один-к-одному, поддержка гибкого объединения произвольного количества гетерогенных источников
  2. Декларативные правила: По сравнению с программным подходом обеспечение лучшей читаемости, поддерживаемости и возможности совместного использования
  3. Детальное управление: Позволяет точное управление отображением на уровне атрибутов, а не простое переопределение приоритетов
  4. Интеграция автоматизации: Полная интеграция рабочего процесса CI/CD, поддержка автоматического обновления при выпуске версий

Экспериментальная установка

Тестовые проекты

  1. ShExML Engine: Инструмент отображения гетерогенных данных, написанный на Scala
  2. Библиотека DMAOG: Библиотека Scala, связанная с отображением данных

Источники данных

  • GitHub API: Основная информация о репозитории, записи о выпусках, отслеживание проблем и т.д.
  • Maven Central: Метаданные проекта и информация о зависимостях в файлах POM
  • Zenodo: DOI, информация о грантах, подробная информация об авторах и т.д.

Методы проверки

  • Проверка SHACL: Использование рекомендуемого стандарта W3C для проверки структуры
  • Проверка ShEx: Использование Shape Expressions для проверки шаблонов
  • CodeMeta Generator: Использование официального инструмента проверки для окончательного подтверждения

Цепочка автоматизированных инструментов

  • GitHub Actions: Конвейер CI/CD
  • Скрипты Groovy: Обработка фреймирования JSON-LD
  • Bash-скрипты: Организация рабочего процесса

Результаты экспериментов

Основные достижения

1. Охват отображения

ПлатформаКоличество поддерживаемых атрибутовОхват классов CodeMeta
GitHub12 основных атрибутовSoftwareSourceCode, Person
Maven8 основных атрибутовSoftwareSourceCode, отношения зависимостей
Zenodo15 основных атрибутовSoftwareSourceCode, Person, Organization

2. Эффект автоматизации

  • Стоимость обслуживания: Каждое обновление версии требует изменения только 2 строк кода (URL входного источника)
  • Время обработки: Время выполнения полного рабочего процесса < 2 минут
  • Коэффициент успеха: Успешное генерирование действительных файлов CodeMeta в обоих тестовых проектах

3. Проверка адаптивности

Адаптация от ShExML Engine к проекту DMAOG:

  • Требуется изменение только 6 строк кода (4 строки вызовов API, удаление 1 участника)
  • Сохранение одинаковой поддержки технологического стека (Scala + SBT + Maven Central)
  • Генерируемые файлы CodeMeta прошли все проверки валидации

Анализ качества выходных данных

Генерируемые файлы CodeMeta содержат:

  • Базовые метаданные: Имя, описание, версия, лицензия и т.д.
  • Информация о разработке: Язык программирования, платформа выполнения, непрерывная интеграция и т.д.
  • Информация о персоналиях: Авторы, участники, связи с организациями и т.д.
  • Связанные ресурсы: Репозиторий кода, ссылки для загрузки, ссылки и т.д.
  • Отношения зависимостей: Требования к программному обеспечению и информация о версиях

Результаты проверки

Все генерируемые файлы CodeMeta прошли:

  • Проверку структуры SHACL
  • Проверку шаблонов ShEx
  • Официальную проверку CodeMeta Generator

Связанные работы

Классификация существующих инструментов CodeMeta

1. Инструменты преобразования

  • Bolognese: Библиотека Ruby, поддерживающая преобразование нескольких форматов метаданных DOI
  • codemetar: Пакет R для генерирования CodeMeta, специализированный для R
  • codemetapy: Реализация на Python, поддерживающая несколько менеджеров пакетов
  • cffconvert: Инструмент преобразования Citation File Format

2. Инструменты управления

  • codemeta-server: Служба каталога инструментов на основе CodeMeta
  • HERMES: Платформа выпуска исследовательского программного обеспечения с интеграцией CI/CD

3. Вспомогательные инструменты

  • CodeMeta Generator: Интерактивный генератор на основе веб-интерфейса
  • SMECS: Система извлечения и кураторства метаданных программного обеспечения

Преимущества данной работы

  1. Гибкость: Поддержка произвольного количества и типов источников метаданных
  2. Детальное управление: Точное отображение на уровне атрибутов, а не простое переопределение приоритетов
  3. Декларативный подход: Более понятен и легче в обслуживании по сравнению с программной реализацией
  4. Полная автоматизация: Сквозной автоматизированный процесс от генерирования до проверки

Заключение и обсуждение

Основные выводы

  1. Осуществимость декларативных правил отображения: Доказана техническая осуществимость генерирования CodeMeta с использованием ShExML
  2. Преимущества слияния из нескольких источников: Продемонстрирована ценность и эффективность интеграции гетерогенных источников метаданных
  3. Успех автоматизированного развёртывания: Реализован низкозатратный автоматизированный рабочий процесс в реальных проектах
  4. Проверка масштабируемости: Успешная адаптация двух проектов доказывает универсальность метода

Ограничения

  1. Зависимость от технологического стека: Текущая реализация в основном ориентирована на экосистему Scala/JVM
  2. Кривая обучения: Требуется, чтобы пользователи изучили синтаксис и концепции ShExML
  3. Охват платформ: Реализованы кросс-отображения только для трёх основных платформ
  4. Адаптация сложных проектов: Проекты, использующие несколько технологических стеков, могут требовать дополнительной настройки

Направления будущих исследований

  1. Расширение кросс-отображений: Реализация отображений для всех платформ, поддерживаемых официально CodeMeta
  2. Визуальный интерфейс: Разработка графического редактора правил отображения
  3. Генерирование с помощью ИИ: Использование больших языковых моделей для автоматического генерирования правил отображения
  4. Построение библиотеки шаблонов: Предоставление предопределённых шаблонов для различных технологических стеков и типов проектов

Глубокая оценка

Преимущества

  1. Высокая инновационность метода: Впервые применены декларативные правила отображения для генерирования CodeMeta, предоставляя новый технологический путь
  2. Высокая практическая ценность: Решение реально существующих проблем управления метаданными исследовательского программного обеспечения
  3. Полнота реализации: Предоставление полного решения от концепции до развёртывания
  4. Хорошая воспроизводимость: Предоставление подробных кодов реализации и руководств по развёртыванию

Недостатки

  1. Ограниченный объём оценки: Тестирование проведено только на двух похожих проектах, отсутствует крупномасштабная проверка
  2. Отсутствие анализа производительности: Не предоставлена оценка производительности при обработке крупных проектов или больших объёмов данных
  3. Недостаточная обработка ошибок: Недостаточный анализ устойчивости к недоступности источников данных или изменениям формата
  4. Отсутствие исследования пользователей: Не проведена оценка приемлемости и удобства использования для пользователей

Влияние

  1. Академический вклад: Предоставление нового технического решения для области управления метаданными исследовательского программного обеспечения
  2. Практическая ценность: Может быть непосредственно применено к принятию CodeMeta проектами с открытым исходным кодом
  3. Продвижение экосистемы: Способствует повышению коэффициента принятия CodeMeta в сообществе исследовательского программного обеспечения
  4. Содействие стандартизации: Поддержка реализации принципов FAIR в области исследовательского программного обеспечения

Применимые сценарии

  1. Проекты с открытым исходным кодом: Особенно подходит для исследовательского программного обеспечения, требующего публикации на нескольких платформах
  2. Академические учреждения: Может использоваться для управления метаданными исследовательского программного обеспечения на уровне учреждения
  3. Интеграция CI/CD: Подходит для проектов с существующими автоматизированными процессами выпуска
  4. Стандартизация метаданных: Применимо к исследовательским организациям, требующим унифицированного формата метаданных

Библиография

Статья содержит 37 ссылок, охватывающих принципы FAIR, технологии семантической сети, спецификацию CodeMeta, языки декларативного отображения и другие связанные области, обеспечивая прочную теоретическую основу и техническую поддержку для исследования.


Общая оценка: Это практически значимая техническая статья в области управления метаданными исследовательского программного обеспечения. Предложенный метод декларативного отображения обладает инновационностью, полнотой реализации и воспроизводимостью, имеет позитивное значение для продвижения принятия стандарта CodeMeta. Хотя существует пространство для улучшения в объёме и глубине оценки, статья предоставляет ценный технический вклад в эту область.