Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 8878fd6a authored by Roberto Di Cosmo's avatar Roberto Di Cosmo
Browse files

Full revamp of the software entries proposal, separate related material

parent 00963f78
No related branches found
No related tags found
No related merge requests found
* Related material
** Examples of BibTeX entries
Here are a few examples existing today of bibtex exports from research software
repositories or registries.
*** Geodynamics ([[http://geodynamics.org]])
- Virtual Quake 3.1.1 retrieved from [[https://geodynamics.org/cig/abc]]
Wilson, J.M.; Schultz, K.; Heien, E.; Sachs, M.; Rundle, J. (2017),
Virtual Quake v3.1.1, doi: 10.5281/zenodo.1098321,
url: [[https://doi.org/10.5281/zenodo.1098321]]
Cite code as:
#+BEGIN_SRC
@software{john_max_wilson_2017_1098321,
author = "Wilson, J.M. and Schultz, K. and Heien, E. and Sachs, M. and Rundle, J.",
title="Virtual Quake v3.1.1",
year="2017",
organization="",
optkeywords="Virtual Quake",
doi="http://doi.org/10.5281/zenodo.1098321",
opturl="https://doi.org/10.5281/zenodo.1098321"}
#+END_SRC
*** DATACITE bibtex for a DOI
#+BEGIN_SRC
> curl https://data.datacite.org/application/x-bibtex/10.5281/zenodo.13750
@misc{https://doi.org/10.5281/zenodo.13750,
doi = {10.5281/zenodo.13750},
url = {https://zenodo.org/record/13750},
author = {Katz, Daniel S. and Merzky, Andre and Turilli, Matteo and Wilde,
Michael and Zhang, Zhao},
keywords = {computer science, application skeleton, co-design, distributed
computing, many-task computing, parallel computing},
title = {Application Skeleton V1.2},
publisher = {Zenodo},
year = {2015}
}
#+END_SRC
*** CFF converter to bibtex
For a CITATION.cff file, there is a command line tool for converting to a bibtex
entry of type @misc. Also available on
[[https://us-central1-citation-cff.cloudfunctions.net/convert?url=https://github.com/nlppln/nlppln&format=bibtex]]
Put in url a repository with CFF file.
#+BEGIN_SRC
@misc{YourReferenceHere,
author = {
Janneke M. van der Zwaan and
Dafne van Kuppevelt
},
title = {NLP Pipeline (nlppln)},
month = {1},
year = {2019},
doi = {10.5281/zenodo.1116323},
url = {https://github.com/nlppln/nlppln}
}
#+END_SRC
* Proposal for a @software entry for BibTeX/BibLaTeX
** Motivation
We need a proposition for a software bibtex output to meet several demands
from different services provided by Inria infrastructure:
#+TITLE: Proposal for software entries for BibTeX/BibLaTeX
#+AUTHOR: Inria Software Citation Working Group
#+LATEX_HEADER: \usepackage{a4wide}
* Motivation
- software deposit in HAL
- generation of RAWEB activity report
BibTeX is used widely in the scholarly world as a format for storing and
exchanging bibliographic data that can be used to produce bibliographic
references: several platforms propose a BibTeX export of their metadata,
including HAL, and at Inria, for example, this is used to generate activity
reports for all the teams.
** Field description
The field description is based on the [[http://mirrors.ibiblio.org/CTAN/macros/latex/exptl/biblatex/doc/biblatex.pdf][biblatex documentation]]
This working document contains a proposition for the creation of BibTeX
entries for software artifacts.
* Entry types
There are four entry types, corresponding to different granularities
in the identification of the (part of) software artifacts that one
whishes to cite.
** software
Computer software.
/Required fields:/ ~author~ / ~editor~, ~title~, ~url~, ~year~
/Optional fields:/ ~abstract~, ~date~, ~doi~, ~file~, ~halid~,
~institution~, ~license~, ~month~, ~note~, ~publisher~,
~repository~, ~swhid~, ~urldate~, ~version~
** softwareversion
A specific version of a software. Inherits values of missing
fields from the entry mentioned in the ~crossref~ field.
/Required fields:/ ~author~ / ~editor~, ~title~, ~url~, ~version~, ~year~
/Optional fields:/ ~abstract~, ~crossref~, ~date~, ~doi~, ~file~, ~halid~,
~institution~, ~introducedin~, ~license~, ~month~, ~note~, ~publisher~,
~repository~, ~swhid~, ~subtitle~, ~urldate~
** softwaremodule
A specific module of a larger software project. Inherits values of missing
fields from the entry mentioned in the ~crossref~ field.
/Required fields:/ ~author~, ~subtitle~, ~url~, ~year~
/Optional fields:/ ~abstract~, ~crossref~, ~date~, ~doi~, ~editor~, ~file~, ~halid~,
~institution~, ~introducedin~, ~license~, ~month~, ~note~, ~publisher~,
~repository~, ~swhid~, ~title~, ~urldate~, ~version~
** codefragment
A code fragment (e.g. a specific algorithm in a program or library).
Inherits values of missing fields from the entry mentioned in the ~crossref~ field.
*** Mandatory fields
- author :: list (name). The authors of the title. See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/6][#6]]
- title :: field (literal). The title of the software artifact.
- url :: field (uri). The url of an online publication (e.g on HAL).
- year :: field (literal). The year of creation or release. See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/7][#7]]
*** Optional fields
- abstract :: field (literal). This field is intended for recording
abstracts in a bib file, to be printed by a special bibliography
style. It is not used by all standard bibliography styles..
- file :: field (verbatim). A local link to a version of the work. Not used
by the standard bibliography styles. Replaces PDF.
- doi :: field (verbatim). The Digital Object Identifier of the work.
- hal_id [not in biblatex] :: field (verbatim). A digital identifier for the
software record including its description and metadata on HAL. See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/1][#1]].
- license [not in biblatex] :: list (literal). The license/s of the title
in SPDX format.
- month :: field (literal). The month of creation or release. This must be
an integer, not an ordinal or a string.
- note :: field (literal). Release note of the cited version.
- institution :: field (literal). The institution(s) that took part in the
software project.
- publisher :: list (literal). The name(s) of the publisher(s) of the software
record (we need to define the notion of a research software publisher, see issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/2][#2]]).
- repository [not in biblatex] :: field (uri). The url of the code repository
(e.g on GitHub, GitLab).
- swh_id [not in biblatex] :: field (verbatim) The identifier of the digital
object (a.k.a the software artifact itself). The intrinsic identifier
of the item is an swh-id (swh:dir for a directory, swh:rev for
a revision, swh:rel for a release, etc.). See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/5][#5]].
- version :: field (literal). The revision number of a piece of software,
a manual, etc.
** Reviewed proposition for a software deposit on HAL
This is the most recent proposition, taking into account most fields above.
#+BEGIN_SRC
/Required fields:/ ~url~
/Optional fields:/ ~author~, ~abstract~, ~crossref~, ~date~, ~doi~, ~file~, ~halid~,
~institution~, ~introducedin~, ~license~, ~month~, ~note~, ~publisher~,
~repository~, ~swhid~, ~subtitle~, ~title~, ~urldate~, ~version~, ~year~
* Field description
The field description is based on the [[http://mirrors.ibiblio.org/CTAN/macros/latex/exptl/biblatex/doc/biblatex.pdf][biblatex documentation]]
** Data fields
- abstract :: field (literal). This field is intended for recording
abstracts in a bib file, to be printed by a special bibliography
style. It is not used by all standard bibliography styles.
- author :: list (name). The authors of the title. See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/6][#6]]
- date :: field (date). The date of creation or release in ISO format (/biblatex only/).
- editor :: list (name). The coordinator(s) of large modular software projects. See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/6][#6]]
- file :: field (verbatim). A local link to a version of the work. Not used
by the standard bibliography styles. Replaces PDF.
- doi :: field (verbatim). The Digital Object Identifier of the work.
- halid [not in biblatex] :: field (verbatim). A digital identifier for the
software record including its description and metadata on HAL. See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/1][#1]].
- license [not in biblatex] :: list (literal). The license/s of the title
in SPDX format.
- month :: field (literal). The month of creation or release. This must be
an integer, not an ordinal or a string.
- note :: field (literal). Release note of the cited version.
- institution :: field (literal). The institution(s) that took part in the
software project.
- introducedin :: field (literal). If this is a software module or fragment,
the version of the containing project where it has been first introduced.
- publisher :: list (literal). The name(s) of the publisher(s) of the software
record (we need to define the notion of a research software publisher, see issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/2][#2]]).
- repository [not in biblatex] :: field (uri). The url of the code repository
(e.g on GitHub, GitLab).
- swhid [not in biblatex] :: field (verbatim). The identifier of the digital
object (a.k.a the software artifact itself). The intrinsic identifier
of the item is an swh-id (swh:cnt for a content, swh:dir for a directory, swh:rev for
a revision, swh:rel for a release, etc.). See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/5][#5]].
- subtitle :: field (literal). The title of a component of the software artifact.
- title :: field (literal). The title of the software artifact.
- url :: field (uri). The url of an online resource (e.g a page on HAL).
- urldate :: field (date). The access date of the address specified in the url field.
- version :: field (literal). The revision number of a piece of software,
a manual, etc.
- year :: field (literal). The year of creation or release. See issue [[https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-entry/issues/7][#7]]
** Special fields
- crossref :: field (entry key). This field holds an entry key for the
cross-referencing feature. Child entries with a crossref field inherit data
from the parent entry specified in the crossref field.
* Examples
Here are a few example of use of the proposed entries.
** software and softwareversion
This is an example description of a software release using a single ~@software~ entry.
#+BEGIN_SRC bibtex
@software {delebecque:hal-02090402,
TITLE = {{Scilab 1.1}},
AUTHOR = {Delebecque, Fran{\c c}ois and Gomez, Claude and Goursat, Maurice
title = {{Scilab 1.1}},
author = {Delebecque, Fran{\c c}ois and Gomez, Claude and Goursat, Maurice
and Nikoukhah, Ramine and Steer, Serge and Chancelier, Jean-Philippe},
URL = {https://hal.inria.fr/hal-02090402},
YEAR = {1994},
MONTH = Jan,
FILE = {https://hal.inria.fr/hal-02090402/file/scilab-1.1.tar.gz},
LICENSE = {Scilab license},
HAL_ID = {hal-02090402},
SWH_ID = {swh:1:dir:1ba0b67b5d0c8f10961d878d91ae9d6e499d746a},
VERSION = {1.1},
NOTE = {First Scilab version. It was distributed by anonymous ftp.},
REPOSITORY= {https://github.com/scilab/scilab},
ABSTRACT = {Software for Numerical Computation freely distributed.},
PUBLISHER = {}
url = {https://hal.inria.fr/hal-02090402},
year = {1994},
month = Jan,
file = {https://hal.inria.fr/hal-02090402/file/scilab-1.1.tar.gz},
institution = {Inria},
license = {Scilab license},
halid = {hal-02090402},
swhid = {swh:1:dir:1ba0b67b5d0c8f10961d878d91ae9d6e499d746a},
version = {1.1},
note = {First Scilab version. It was distributed by anonymous ftp.},
repository= {https://github.com/scilab/scilab},
abstract = {Software for Numerical Computation freely distributed.}
}
#+END_SRC
A new proposition has emerged, dividing a software citation into 3 parts:
1. The software concept or collection:
#+BEGIN_SRC
The same information can also be represented using a ~@software~ / ~@softwareversion~
pair that factors out the general information in the ~@software~ entry, so for
other versions only the changes need to be added in a new ~@softwareversion~ entry:
#+BEGIN_SRC bibtex
@software {delebecque:hal-02090402,
TITLE = {Scilab},
AUTHOR = {Delebecque, Fran{\c c}ois and Gomez, Claude and Goursat, Maurice
title = {Scilab},
author = {Delebecque, Fran{\c c}ois and Gomez, Claude and Goursat, Maurice
and Nikoukhah, Ramine and Steer, Serge and Chancelier, Jean-Philippe},
LICENSE = {Scilab license},
HAL_ID = {hal-02090402},
URL = {https://www.scilab.org/},
ABSTRACT = {Software for Numerical Computation freely distributed.},
REPOSITORY= {https://github.com/scilab/scilab},
PUBLISHER = {},
KEYWORDS =
year = {1994},
institution = {Inria},
license = {Scilab license},
halid = {hal-02090402},
url = {https://www.scilab.org/},
abstract = {Software for Numerical Computation freely distributed.},
repository= {https://github.com/scilab/scilab},
}
#+END_SRC
2. The software version or release inherits all the fields of the \texttt{@software} entry, and has the following specific fields
#+BEGIN_SRC
@softwareversion {delebecque:hal-02090402v1,
VERSION = {1.1},
YEAR = {1994},
MONTH = Jan,
FILE = {https://hal.inria.fr/hal-02090402/file/scilab-1.1.tar.gz},
SWH_ID = {swh:1:dir:1ba0b67b5d0c8f10961d878d91ae9d6e499d746a},
NOTE = {First Scilab version. It was distributed by anonymous ftp.},
CROSSREF = delebecque:hal-02090402
version = {1.1},
year = {1994},
month = Jan,
file = {https://hal.inria.fr/hal-02090402/file/scilab-1.1.tar.gz},
swhid = {swh:1:dir:1ba0b67b5d0c8f10961d878d91ae9d6e499d746a;
origin=https://hal.inria.fr/hal-02090402},
note = {First Scilab version. It was distributed by anonymous ftp.},
crossref = delebecque:hal-02090402
}
#+END_SRC
As with the traditional \texttt{@inproceedings} BibTEX entry, the special
\texttt{CROSSREF} field tells BibTEX that the \texttt{delebecque:hal-02090402v1} entry
should inherit any fields it’s missing from the \texttt{delebecque:hal-02090402}
entry it cross references.
3. The software fragment
#+BEGIN_SRC
@insoftware {algorithmX,
SWH_ID = {swh:1:cnt:1ba0b67b5d0c8f10961d878d91ae9d6e499d746a},
CROSSREF = delebecque:hal-02090402v1
}
** softwaremodule
For highly modular software projects, like CGAL, one may need to
reference specifically a particular module, that has distinguished
authors, and may heve been introduced in the project at a later time.
The following example uses [[https://doc.cgal.org/latest/Manual/how_to_cite_cgal.bib][the informations in the existing BibTeX entries for CGAL]]
that currently refer to the user manual, to create the corresponding software entries.
#+BEGIN_SRC bibtex
@software {cgal,
title = {The Computational Geometry Algorithms Library},
author = {{The CGAL Project}},
editor = {{CGAL Editorial Board}},
year = 1996,
url = {https://cgal.org/}
}
@softwareversion{cgal:5-0-2,
crossref = cgal,
version = {{5.0.2}},
url = {https://docs.cgal.org/5.02}
year = 2020,
swhid = {swh:1:rel:636541bbf6c77863908eae744610a3d91fa58855;
origin=https://github.com/CGAL/cgal/}
}
@softwaremodule{cgal:lp-gi-20a,
crossref = cgal:5-0-2,
author = {Menelaos Karavelas},
subtitle = {{2D} Voronoi Diagram Adaptor},
license = {GPL},
introducedin = cgal:3-1,
url = {https://doc.cgal.org/5.0.2/Manual/packages.html#PkgVoronoiDiagram2},
}
#+END_SRC
As with the traditional \texttt{@inproceedings} BibTEX entry, the special
\texttt{CROSSREF} field tells BibTEX that the \texttt{algorithmX} entry should inherit
any fields it’s missing from the \texttt{delebecque:hal-02090402v1} entry it
cross references.
{\bf DISCUSSION:} the SWH_ID in @insoftware may overwrite the one in @softwareversion if we use
the extended version of SWH_ID with anchor and path (not yet implemented on the SWH side).
** Examples
Here we copied a few examples existing today of bibtex exports
on research software repositories or registries.
*** Geodynamics ([[http://geodynamics.org]])
- Virtual Quake 3.1.1 retrieved from [[https://geodynamics.org/cig/abc]]
Wilson, J.M.; Schultz, K.; Heien, E.; Sachs, M.; Rundle, J. (2017),
Virtual Quake v3.1.1, doi: 10.5281/zenodo.1098321,
url: [[https://doi.org/10.5281/zenodo.1098321]]
Cite code as:
#+BEGIN_SRC
@software{john_max_wilson_2017_1098321,
author = "Wilson, J.M. and Schultz, K. and Heien, E. and Sachs, M. and Rundle, J.",
title="Virtual Quake v3.1.1",
year="2017",
organization="",
optkeywords="Virtual Quake",
doi="http://doi.org/10.5281/zenodo.1098321",
opturl="https://doi.org/10.5281/zenodo.1098321"}
Of course, it is always be possible to use only one entry to get an equivalent
result; here one would use just ~@softwaremodule~ with all the needed data
fields as follows:
#+BEGIN_SRC bibtex
@softwaremodule{cgal:lp-gi-20a,
title = {The Computational Geometry Algorithms Library},
subtitle = {{2D} Voronoi Diagram Adaptor},
author = {Menelaos Karavelas},
editor = {{CGAL Editorial Board}},
license = {GPL},
version = {{5.0.2}},
introducedin = cgal:3-1,
year = 2020,
swhid = {swh:1:rel:636541bbf6c77863908eae744610a3d91fa58855;
origin=https://github.com/CGAL/cgal/},
url = {https://doc.cgal.org/5.0.2/Manual/packages.html#PkgVoronoiDiagram2},
}
#+END_SRC
*** DATACITE bibtex for a DOI
#+BEGIN_SRC
> curl https://data.datacite.org/application/x-bibtex/10.5281/zenodo.13750
@misc{https://doi.org/10.5281/zenodo.13750,
doi = {10.5281/zenodo.13750},
url = {https://zenodo.org/record/13750},
author = {Katz, Daniel S. and Merzky, Andre and Turilli, Matteo and Wilde,
Michael and Zhang, Zhao},
keywords = {computer science, application skeleton, co-design, distributed
computing, many-task computing, parallel computing},
title = {Application Skeleton V1.2},
publisher = {Zenodo},
year = {2015}
** codefragment
Finally, if one wants to have a particular code fragment appear in the bibliography,
we can do this as follows:
#+BEGIN_SRC bibtex
@software {parmap,
title = {The Parmap library},
author = {Di Cosmo, Roberto and Marco Danelutto},
year = {2020},
version = {1.1.1},
institution = {Inria},
license = {LGPL-2.0},
url = {https://rdicosmo.github.io/parmap/},
repository= {https://github.com/rdicosmo/parmap},
}
#+END_SRC
*** CFF converter to bibtex
For a CITATION.cff file, there is a command line tool for converting to a bibtex
@misc. Also available on
[[https://us-central1-citation-cff.cloudfunctions.net/convert?url=https://github.com/nlppln/nlppln&format=bibtex]]
Put in url a repository with CFF file.
#+BEGIN_SRC
@misc{YourReferenceHere,
author = {
Janneke M. van der Zwaan and
Dafne van Kuppevelt
},
title = {NLP Pipeline (nlppln)},
month = {1},
year = {2019},
doi = {10.5281/zenodo.1116323},
url = {https://github.com/nlppln/nlppln}
@codefragment {simplemapper,
subtitle = {Core mapping routine},
swhid = {swh:1:cnt:43a6b232768017b03da934ba22d9cc3f2726a6c5;lines=192-228;
origin=https://github.com/rdicosmo/parmap},
crossref = parmap
}
#+END_SRC
** Discussion
Each discussion point should be discussed on the openned issues tagged with
`Discussion` tag. After resolution, the content and result of the discussion
will be copied here.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment