Page MenuHomeSoftware Heritage

Extend CodeMeta vocabulary
Open, NormalPublic


The current CodeMeta vocabulary needs to be extended to accommodate

  1. the rich set of contributor roles identified in
  2. the possibility of adding multiple affiliations to any Person entity

Related Objects


Event Timeline

rdicosmo triaged this task as Normal priority.Sat, Mar 21, 11:57 AM
rdicosmo created this task.
vlorentz added a comment.EditedSat, Mar 21, 12:30 PM

Taxon map:

  • (Algorithm) Design: referencePublication -> author would work if there's an academic publication. (referencePublication is codemeta only)
  • Debugging: ?
  • Maintenance: maintainer (codemeta only for now, it's a pending property of
  • Coding: author property of SoftwareSourceCode?
  • Architecture design: author property of SoftwareApplication?
  • Documentation: softwareHelp -> author
  • Testing: ? (I guess technically you could use review -> author, but that's stretching the meaning of "review")
  • Support: ?
  • Management: ?

Another relevant property not mentioned in the paper is translator

Encoding the roles into existing property of CodeMeta or is a possibility.
The other, that I prefer, is to associate a "role" property to authors/contributors: indeed, an author/contributor may have multiple roles, just like multiple affiliations.

moranegg added a comment.EditedMon, Mar 23, 12:06 AM

I just discovered that there is a pending term maintaineron, thanks @vlorentz
for pointing this out.

I agree that neither CodeMeta nor gives the possibility to specify all roles at the moment, and I'm still not sure what we should push for.
I do like the idea of adding a role to author, but the way is organized, is by adding properties with specific roles:

Instances of Person may appear as values for the following properties

On the Person page:

I do like the idea of adding a role to author, but the way is organized, is by adding properties with specific roles


@rdicosmo JSON-LD (and therefore codemeta) is about describing nodes (Persons, Organization, SoftwareSourceCode, SoftwareApplication, ...), and relationships between them (author, funder, ...) with (subject, predicate, object) triplets (eg. (parmap, author, rdicosmo)).
My understanding of your suggestion is that you want to qualify the relationship/triplet with extra attributes (the roles).
While this is possible with RDF ("statement reification", see this nice example: ), JSON-LD unfortunately doesn't allow this directly.

One way to do this reification while keeping a JSON-LD representation is to turn links into a new type of node (with a new type eg. AuthorRelationship), which would have relationships with the two objects ((parmap, authoredByRelationship, id1) and (rdicosmo, authoringRelationship, id1)) and add the role as a property on that new node ((id1, role, designer), (id1, level, 5)).

Unfortunately, it would mean ditching (the current version of) Codemeta as well as, because they absolutely do not have the vocabulary to express it.

Another way would be to use the Codemeta/ vocabulary and use the RDF representation instead of JSON-LD. But then it's no longer Codemeta-as-a-file-format.