@@ -283,32 +283,7 @@ The change in hierarchy means that `"https://cran.r-project.org"` is
283283represented as the ` "url" ` of ` rmarkdown ` , instead of being the url of
284284` Central R Archive Network (CRAN) ` .
285285
286- ### Example of a CodeMeta file
287-
288- The following is an example of a basic ` codemeta.json ` that can be put at the
289- root of a code repository:
290-
291- ``` json
292- {
293- "@context" : " https://w3id.org/codemeta/3.1" ,
294- "type" : " SoftwareSourceCode" ,
295- "applicationCategory" : " Biology" ,
296- "codeRepository" : " https://github.com/gem-pasteur/macsyfinder" ,
297- "description" : " MacSyFinder is a program to model and detect macromolecular systems, genetic pathways… in prokaryotes protein datasets." ,
298- "downloadUrl" : " https://pypi.org/project/MacSyFinder/" ,
299- "license" : " https://spdx.org/licenses/GPL-3.0+" ,
300- "name" : " macsyfinder" ,
301- "version" : " 2.1.4" ,
302- "continuousIntegration" : " https://github.com/gem-pasteur/macsyfinder/actions" ,
303- "developmentStatus" : " active" ,
304- "issueTracker" : " https://github.com/gem-pasteur/macsyfinder/issues" ,
305- "referencePublication" : " https://doi.org/10.24072/pcjournal.250"
306- }
307- ```
308-
309- ([ Link to full example] ( https://github.com/gem-pasteur/macsyfinder/blob/master/codemeta.json ) ).
310-
311- ## The context
286+ ## Context
312287
313288Every CodeMeta document must refer to the context file ` codemeta.jsonld ` , for
314289example via a URL. This indicates that all terms in the document should be
@@ -342,6 +317,175 @@ For example, use the following for the latest release:
342317"@context" : " https://w3id.org/codemeta/3.1"
343318```
344319
320+ ## Attributions
321+
322+ Giving attribution to people and organizations who have made a software
323+ application is a large part of many ` codemeta.json ` files, especially if
324+ projects involve a community.
325+
326+ It is important to give proper attribution to the contributions that have been
327+ made. This includes using stable identifiers where possible and meaningful
328+ descriptions of each party's participation.
329+
330+ This is done primarily with the use of ` Person ` , ` Role ` , and ` Organization `
331+ properties types.
332+
333+ ### People
334+
335+ The properties listed in the [ terms] ( terms ) tables with a type ` Person `
336+ can list one or more objects of the ` Person ` type that describe the various
337+ individuals who made the software. They have the ` @type ` or ` type ` value of
338+ ` Person ` .
339+
340+ They are top-level properties and should, where possible, contain an ` @id `
341+ value that consistently identifies the individual and can be used for
342+ JSON-LD linking operations.
343+
344+ The distinction between an ` author ` and a ` contributor ` is not strictly
345+ defined and each project can assign it according to their preference. The
346+ properties describe a ` contributor ` as someone considered a "secondary
347+ contributor", perhaps to be reserved for non-code contributions.
348+
349+ A ` maintainer ` should include a method of contact, such as an email address.
350+
351+ Applications with one ` author ` may list the individual values directly within
352+ the ` author ` object. For example:
353+
354+ ``` json
355+ "author" : {
356+ "@id" : " http://orcid.org/0000-0003-0077-4738" ,
357+ "@type" : " Person" ,
358+ "email" : " slaughter@nceas.ucsb.edu" ,
359+ "givenName" : " Peter" ,
360+ "familyName" : " Slaughter"
361+ }
362+ ```
363+
364+ Applications with multiple ` author ` individuals must describe them within an
365+ array (` [ ` , ` ] ` ) of objects, as follows:
366+
367+ ``` json
368+ "author" : [
369+ {
370+ "id" : " https://orcid.org/0000-0002-0220-0482" ,
371+ "type" : " Person" ,
372+ "affiliation" : {
373+ "type" : " Organization" ,
374+ "name" : " Institut Pasteur, Université Paris Cité, Bioinformatics and Biostatistics HUB, Paris, France "
375+ },
376+ "email" : " bneron@pasteur.fr" ,
377+ "familyName" : " Néron" ,
378+ "givenName" : " Bertrand"
379+ },
380+ {
381+ "id" : " https://orcid.org/0000-0002-5231-3346" ,
382+ "type" : " Person" ,
383+ "affiliation" : {
384+ "type" : " Organization" ,
385+ "name" : " Univ. Grenoble Alpes, CNRS, UMR 5525, VetAgro Sup, Grenoble INP, TIMC, 38000 Grenoble, France "
386+ },
387+ "email" : " sophie.abby@univ-grenoble-alpes.fr" ,
388+ "familyName" : " Abby" ,
389+ "givenName" : " Sophie"
390+ },
391+ ...
392+ ]
393+ ```
394+
395+ The specific values of the properties, such as ` familyName ` and ` givenName `
396+ are free-form, and often contain pseudonyms or group names. ` codemeta.json `
397+ files with such values are still valid, but where possible the values should
398+ refer to a consistent identity of an individual.
399+
400+ ### Roles
401+
402+ The ` Role ` type property is used within the ` author ` property to define the
403+ participation of a ` Person ` .
404+
405+ This is distinct from the ` contributor ` and ` maintainer ` properties.
406+
407+ The ` Role ` must link to a ` Person ` previously defined in the top-level
408+ property. The example below demonstrates the ` id ` and ` schema:author ` values
409+ providing this link.
410+
411+ ``` json
412+ "author" : [
413+ {
414+ "familyName" : " Mannem" ,
415+ "id" : " https://github.com/ruthvikm" ,
416+ "givenName" : " Ruthvik" ,
417+ "type" : " Person"
418+ },
419+
420+ ...
421+
422+ {
423+ "roleName" : " Tech Lead" ,
424+ "schema:author" : " https://github.com/ruthvikm" ,
425+ "type" : " Role"
426+ },
427+
428+ ...
429+
430+ ]
431+
432+ ```
433+
434+ [ Full example] ( https://github.com/oss-slu/Pi4Micronaut/blob/main/codemeta.json ) .
435+
436+ ### Organizations
437+
438+ The properties listed in the [ terms] ( terms ) tables with a type ` Organization `
439+ can list one or more organizations. They have the ` type ` value of
440+ ` Organization ` .
441+
442+ The ` affiliation ` property within a ` Person ` property is a common example of
443+ this object type. ` affiliation ` defines the associations that the individual
444+ has with various organizations. Like the ` author ` property, the properties
445+ can contain values, or an array of objects with those same values for multiple
446+ affiliations.
447+
448+ The [ second example in the "People" section] ( user-guide/#people ) contains a
449+ use of the affiliation property, with ` Organization ` as its type.
450+
451+ ## Describing the Software
452+
453+ A minimum viable CodeMeta file needs only a ` @context ` , a ` type ` and a ` name ` .
454+ While valid, this is not a useful description of the software.
455+
456+ Each project's ` codemeta.json ` should represent that project's lifecycle,
457+ resources, and people. It should be considered a living document. Properties
458+ representing dynamic information such as ` version ` and ` authors ` should be
459+ updated as the software changes for the document to be most useful.
460+
461+ Useful properties include the ones in the example in the next section. Refer
462+ to the [ terms] ( terms ) page for all CodeMeta properties.
463+
464+ ## Example of a CodeMeta file
465+
466+ The following is an example of a basic ` codemeta.json ` that can be put at the
467+ root of a code repository:
468+
469+ ``` json
470+ {
471+ "@context" : " https://w3id.org/codemeta/3.1" ,
472+ "type" : " SoftwareSourceCode" ,
473+ "applicationCategory" : " Biology" ,
474+ "codeRepository" : " https://github.com/gem-pasteur/macsyfinder" ,
475+ "description" : " MacSyFinder is a program to model and detect macromolecular systems, genetic pathways… in prokaryotes protein datasets." ,
476+ "downloadUrl" : " https://pypi.org/project/MacSyFinder/" ,
477+ "license" : " https://spdx.org/licenses/GPL-3.0+" ,
478+ "name" : " macsyfinder" ,
479+ "version" : " 2.1.4" ,
480+ "continuousIntegration" : " https://github.com/gem-pasteur/macsyfinder/actions" ,
481+ "developmentStatus" : " active" ,
482+ "issueTracker" : " https://github.com/gem-pasteur/macsyfinder/issues" ,
483+ "referencePublication" : " https://doi.org/10.24072/pcjournal.250"
484+ }
485+ ```
486+
487+ ([ Link to full example] ( https://github.com/gem-pasteur/macsyfinder/blob/master/codemeta.json ) ).
488+
345489## Referencing CodeMeta
346490
347491All versions, including release candidates, may be referred to consistently
0 commit comments