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

Generating CodeMeta using declarative mapping rules: An open-ended approach using 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 (Digital Libraries), cs.SE (Software Engineering)
  • 发表时间: 2025年10月10日 (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. 实现三个关键交叉映射:为GitHub、Maven和Zenodo平台开发了完整的ShExML映射实现
  3. 构建统一映射框架:展示了如何合并多个异构元数据源生成单一CodeMeta文件
  4. 开发完整自动化工作流:包括JSON-LD框架化、SHACL/ShEx验证和GitHub Actions集成
  5. 提供实际应用案例:在ShExML引擎和DMAOG两个开源项目中成功部署

方法详解

任务定义

输入:来自多个异构元数据提供者的数据(GitHub API、Maven POM文件、Zenodo记录等) 输出:符合CodeMeta 3.0规范的标准化JSON-LD文件 约束条件:保持数据语义完整性,支持自动化更新,确保输出验证通过

核心方法架构

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引擎: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引擎适配到DMAOG项目:

  • 仅需修改6行代码(4行API调用,移除1个贡献者)
  • 保持相同的技术栈支持(Scala + SBT + Maven Central)
  • 生成的CodeMeta文件通过所有验证测试

输出质量分析

生成的CodeMeta文件包含:

  • 基础元数据:名称、描述、版本、许可证等
  • 开发信息:编程语言、运行平台、持续集成等
  • 人员信息:作者、贡献者、机构关联等
  • 关联资源:代码仓库、下载链接、参考文献等
  • 依赖关系:软件需求和版本信息

验证结果

所有生成的CodeMeta文件均通过:

  • SHACL结构验证
  • ShEx模式验证
  • CodeMeta Generator官方验证

相关工作

现有CodeMeta工具分类

1. 转换工具

  • Bolognese:Ruby库,支持多种DOI元数据格式转换
  • codemetar:R包专用CodeMeta生成工具
  • codemetapy:Python实现,支持多种包管理器
  • cffconvert:Citation File Format转换工具

2. 管理工具

  • codemeta-server:基于CodeMeta的工具目录服务
  • HERMES:CI/CD集成的研究软件发布平台

3. 辅助工具

  • CodeMeta Generator:基于Web的交互式生成器
  • SMECS:软件元数据提取和策展系统

本文优势

  1. 灵活性:支持任意数量和类型的元数据源
  2. 细粒度控制:属性级别的精确映射,而非简单优先级
  3. 声明式方法:相比程序化实现更易理解和维护
  4. 完整自动化:从生成到验证的端到端自动化流程

结论与讨论

主要结论

  1. 声明式映射规则可行性:证明了使用ShExML生成CodeMeta的技术可行性
  2. 多源融合优势:展示了整合异构元数据源的价值和效果
  3. 自动化部署成功:在真实项目中实现了低维护成本的自动化工作流
  4. 可扩展性验证:通过两个项目的成功适配证明了方法的通用性

局限性

  1. 技术栈依赖:当前实现主要针对Scala/JVM生态系统
  2. 学习曲线:需要用户学习ShExML语法和概念
  3. 平台覆盖:仅实现了三个主要平台的交叉映射
  4. 复杂项目适应:对于使用多种技术栈的复杂项目可能需要更多定制

未来方向

  1. 扩展交叉映射:实现CodeMeta官方支持的所有平台映射
  2. 可视化界面:开发图形化的映射规则编辑器
  3. AI辅助生成:利用大语言模型自动生成映射规则
  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标准的采用具有积极意义。虽然在评估范围和深度上还有改进空间,但为该领域提供了有价值的技术贡献。