question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Proposal for author roles in CodeMeta v3

See original GitHub issue

The question of authorship and contribution roles in the scholarly ecosystem has been addressed in different ways, yet software remains an uncharted terrain. In the CRedit for example, software is a unique role that combines all roles related to software authorship (see https://casrai.org/credit/ )

We know that the situation with software development is a bit more complex and can’t be resumed in the distinction between author and contributor.

Recently the Inria research center’s citation WG has published the following article with a specific taxonomy concerning software roles:

Pierre Alliez, Roberto Di Cosmo, Benjamin Guedj, Alain Girault, Mohand-Said Hacid, Arnaud Legrand, Nicolas Rougier. Attributing and Referencing (Research) Software: Best Practices and Outlook From Inria. Computing in Science > Engineering, 22 (1), pp. 39-52, 2020, ISSN: 1558-366X. https://dx.doi.org/10.1109/MCSE.2019.2949413 also available https://hal.archives-ouvertes.fr/hal-02135891

We want to find a way to integrate the identified roles in the CodeMeta vocabulary and in schema.org. To that end we propose on using the Role class under author, and link it to a Person, as specified in the blog post on roles.

List of roles:

  • Design (algorithm)
  • Architecture
  • Debugging
  • Maintenance
  • Coding
  • Documentation
  • Testing
  • Support
  • Management

Here is an example:

{
    "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
    "@type": "SoftwareSourceCode",
    "name": "Foo Software",
    "author": [
        {
            "@type": "Role",
            "roleName": "Design",
            "startDate": "2000",
            "endDate": "2002",
            "author": {
                "@type Person",
                "@id": "http://example.org/~jdupont",
                "givenName": "John",
                "familyName": "Dupont",
                "affiliation": [
                    {
                        "@type": "Organization",
                        "name": "CNRS"
                    },
                    {
                        "@type": "Organization",
                        "name": "Inria"
                    },
                    {
                        "@type": "Organization",
                        "name": "Université de Paris"
                    }
                ]
            }
        },
        {
            "@type": "Role",
            "roleName": "Coding",
            "startDate": "2000",
            "endDate": "2002",
            "author": {
                "@id": "http://example.org/~jdupont"
            }
        },
        {
            "@type": "Role",
            "roleName": "Documentation",
            "startDate": "2000",
            "endDate": "2002",
            "author": {
                "@id": "http://example.org/~jdupont"
            }
        }
    ]
}

Note that I added an ID to avoid duplicating the person’s data

Issue Analytics

  • State:open
  • Created 3 years ago
  • Reactions:3
  • Comments:16 (7 by maintainers)

github_iconTop GitHub Comments

2reactions
cboettigcommented, Apr 9, 2020

@mbjones very true! Though my take on this is that we benefit more by being consistent with schema.org rather than creating a chimera. This proposal is different, in that role would be an optional refinement/annotation of author, rather than a required field of “agent”, which wasn’t a CreativeWork property. In general I am supportive of valid schema.org being valid codemeta; and particularly if this pattern is likely to be used in markup of similar objects like academic journals.

Personally I’m still not a big fan of role codes in CRedit, in my own experience I always find them to be simultaneously too granular and too vague: it is often the case that one person takes a lead role in one aspect, say, documentation, and another in a different aspect, say, coding, but the coder does some writing and the documentation lead does some coding, so both get the same role codes (whether we’re talking about software or journal articles). But that’s neither here nor there I suppose. A nice thing about the above format is that a tool consuming codemeta (say, CiteAs) has the ability to ignore the role code refinement of ‘author’ if they want, while still being able to perform fundamental task like generating authorship list to create a citation.

1reaction
dgarijocommented, Jun 3, 2021

@ProgVal,

ah, I understand, role here is acting as an n-ary relationship. You are right in that converting to RDF the modeling would be wrong. However, how it’s done in the proposal the author relationship is still overloaded

I would maybe introduce a “contributionRoles” property and do something similar to what @moranegg proposed:

"contributionRoles": [
        {
            "@type": "Role",
            "roleName": "Design",
            "startDate": "2000",
            "endDate": "2002",
            "by": {
                "@type Person",
                "@id": "http://example.org/~jdupont",

This way you can use authors/contributors/maintainers properties independently of the roles.

But this is still requires quite a bit of complexity. If codemeta is aiming for simplicity, I would argue against using reified statements.

Read more comments on GitHub >

github_iconTop Results From Across the Web

T2329 Extend CodeMeta vocabulary to qualify author ...
Proposal for author roles in CodeMeta v3. The question of authorship and contribution roles in the scholarly ecosystem has been addressed in ...
Read more >
Issues · codemeta/codemeta - GitHub
doi.org serving JSON-LD documents breaks Codemeta's context file ... #256 opened on Jun 3, 2021 by dgarijo ... Proposal for author roles in...
Read more >
Terms from Schema.org - The CodeMeta Project
Property Type Description programmingLanguage ComputerLanguage or Text The computer programming language. memoryRequirements Text or URL Minimum memory requirements. releaseNotes Text or URL Description of what changed...
Read more >
codemeta - Bountysource
We want to find a way to integrate the identified roles in the CodeMeta vocabulary and in schema.org. To that end we propose...
Read more >
Mapping ISO metadata standards to codemeta - PeerJ
The codemeta project recently proposed a vocabulary for software metadata. ISO ... [not(role='author' or role='principalInvestigator' or.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found