Bibliography Report

Author
Affiliation

Rainer M. Krug

Abstract

Reports analysing the IPBES Libraries on Zotero.

Introduction

This report assesses the NFF Bibliography in regards to different measures and shows some information of the content. It does not assess the content of the sources but rather the bibliometric data.

Bibliographic analysis

In most cases, the bibliographic analysis is done on the OpenAlex library. In some cases, we can also do it using the Zenodo data. This is mentioned in the beginning of each subsection

Publication types

Analysis: Zenodo and OpenAlex

OpenAlex and Zotero use different tyoes. These are not directly compable, which is whu=y both are shown.

Show the code
bib_data$figure_types_data |>
  dplyr::arrange(
    from,
    desc(count)
  ) |>
  knitr::kable(
    caption = "Types of documents from the Zotero bibliography as well as from OpenApex."
  )
Types of documents from the Zotero bibliography as well as from OpenApex.
type count from
article 60 OpenAlex
preprint 3 OpenAlex
review 3 OpenAlex
editorial 1 OpenAlex
journalArticle 76 Zotero
presentation 35 Zotero
report 23 Zotero
bookSection 5 Zotero
thesis 4 Zotero
magazineArticle 2 Zotero
preprint 2 Zotero
webpage 2 Zotero
conferencePaper 1 Zotero
document 1 Zotero
Show the code
bib_data$figure_types

Zenodo versus OpenAlex Types

Analysis: Zenodo and OpenAlex

The types entered in the Zenodo library and the types as retrieved from OpenAlex are not linked, therefore they can differ. This can indicate faulty data entering in Zenodo but not necessarily has to. These cases need to be carefully evaluated and here only given as a starting point.

NA in OpenAlex is likely caused by the doi not found in OpenAlex (not in there, not valid, non-standard DOI in Zenodo). NA in Zotero is linked to non-standard DOI entries (i.e. with http) which can therefore not be linked to OpenAlex data. If all DOIs are in standard format, there should be no NAs in this Table in the column Ferom Zenodo.

TODO: Improvements should be done after feedback.

Show the code
bib_data$metrics$types$comparison |>
  knitr::kable(
    col.names = c("Type from Zenodo", "Type from [OpenAlex](https://OpenAlex.org){target='_blank'}", "count"),
    caption = "Table giving the combination of types from Zenodo as well as [OpenAlex](https://OpenAlex.org){target='_blank'} and their frequency"
  )
Table giving the combination of types from Zenodo as well as OpenAlex and their frequency
Type from Zenodo Type from OpenAlex count
journalArticle article 57
presentation NA 35
report NA 23
journalArticle NA 14
bookSection NA 5
thesis NA 4
journalArticle review 3
NA article 3
preprint preprint 2
magazineArticle NA 2
webpage NA 2
journalArticle preprint 1
conferencePaper NA 1
document NA 1
journalArticle editorial 1

Year of Publication

Analysis: Zenodo and OpenAlex

The following ranges of publication years can be found in the data.

Show the code
bib_data$figure_pub_year_data |>
  dplyr::summarize(
    min = min(publication_year, na.rm = TRUE),
    max = max(publication_year, na.rm = TRUE),
    .by = c(from)
  ) |>
  knitr::kable()
from min max
Zenodo 2017 2024
OpenAlex 2020 2024
Show the code
bib_data$figure_pub_year
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_col()`).

Access Status of References

Analysis: OpenAlex

Show the code
bib_data$figure_oa_status

50 Most often cited Journals

Analysis: Zenodo

TODO: OpenAlex should be added

Show the code
bib_data$figure_top_journals

This table contains all Journals as specified in the Zotero database.

Show the code
bib_data$figure_top_journals_data |>
  IPBES.R::table_dt("cited_journals")

Coutries of Institutes of all authors

Analysis: OpenAlex

In this section we will take a closer look at the countries from which ih the authors ot the publication come. THe data includes all authoirs without weighting.

Show the code
#|
#| fig-height: 10
#| fig-width: 10

bib_data$figure_top_country_map

This plot only contains the countries with more than 10 references.

Show the code
#|
#| fig-height: 10
#| fig-width: 10

bib_data$figure_top_country

This table contains all countries and the number of authorship.

Show the code
bib_data$figure_top_country_data |>
  IPBES.R::table_dt("top_countries")

Cleanliness of the Bibliography

Cleanliness of a bibliography is defined here as the quality of the bibliografic data in the bibliography. It does not concern any topical measures, only measures related to the bibliografic data in the bibliography.

The analysis is at the moment only done for DOIs as corresponding measures are not available at the moment for ISBNs and ISSNs and duplicate ISBNs and ISSNs can be rcorrect as different chapters of a book might be in the bibliography.

Entries with DOIs, ISBNs or ISSNs in Zotero

To identify a reference, the most widely used identifier is the DOI. The following table shows the number of references with a DOI and the number of unique DOIs.

To consider duplicate ISBNs or ISSNs as duplicates entries in the library is not waranted as e.g. differenc chapters of a book can be separate entries in the library and therefore lead to duplicates.

  • DOIs: 72 (47.68%) - 2 duplicates
  • ISBNss: 5 (3.31%)
  • ISBNss: 64 (42.38%)

DOIs in Zotero

The following sections provide some more detailed analysis of the bibliography in Zenodo. The tables all contain clickable links which, shwen clicked, show the respective article in the Zotero bibliograpohy.

Duplicates

The following DOIs are duplicates in the bibliography. This table should be empty.

Show the code
if (length(bib_data$metrics$zotero_dois$duplicate) > 0) {
  data.frame(
    doi = bib_data$metrics$zotero_dois$duplicate,
    link = paste0(bib_data$bibliography$url, "/items/", names(bib_data$metrics$zotero_dois$duplicate))
  ) |>
    dplyr::mutate(
      sort = doi,
      doi = paste0('<a href="', link, '" target="_blank">', doi, "</a>"),
    ) |>
    dplyr::arrange(
      sort
    ) |>
    dplyr::mutate(
      sort = NULL
    ) |>
    knitr::kable(
      caption = "DOIs in Zenodo which are duplicated",
      escape = FALSE
    )
}
DOIs in Zenodo which are duplicated
doi link
QBFZA5XW 10.1007/s11625-023-01411-3 https://www.zotero.org/groups/4937409/items/QBFZA5XW
K6XP4GZK 10.1007/s11625-023-01411-3 https://www.zotero.org/groups/4937409/items/K6XP4GZK

Non Standard

All DOIs should be given as only the DOI without the resolver, i.e. not starting with http. The following table shows all entries which do have a non-conform DOI:

Show the code
#|

http <- grep("http", bib_data$metrics$zotero_dois$id_raw)
data.frame(
  doi = bib_data$metrics$zotero_dois$id_raw[http],
  link = paste0(bib_data$bibliography$url, "/items/", names(bib_data$metrics$zotero_dois$id_raw)[http])
) |>
  dplyr::mutate(
    doi = paste0('<a href="', link, '" target="_blank">', doi, "</a>"),
    link = NULL
  ) |>
  knitr::kable(
    caption = "DOIs in Zenodo which include a `http`",
    escape = FALSE
  )

Not Valid

Here we do acheck for the structural validity of the dois. This check needs to be improved. Of these 7 are not valid. These are:

Show the code
#|

if (length(bib_data$metrics$zotero_dois$not_valid) > 0) {
  data.frame(
    doi = bib_data$metrics$zotero_dois$not_valid,
    link = paste0(bib_data$bibliography$url, "/items/", names(bib_data$metrics$zotero_dois$not_valid))
  ) |>
    dplyr::mutate(
      doi = paste0('<a href="', link, '" target="_blank">', doi, "</a>"),
      link = NULL
    ) |>
    knitr::kable(
      caption = "DOIs in Zenodo which ar not valid",
      escape = FALSE
    )
} else {
  print("All DOIs in Zenodo are valid.")
}
[1] "All DOIs in Zenodo are valid."

Not in OpenAlex

To validate the existence and validity of the DOIs, we check if the DOIs are in the OpenAlex database.

Of the 72 unique DOIs in the library, 7 (9.72%) are in not in OpenAlex. This includes the non-valid DOIS, which are filtered out in the table below.

Show the code
data.frame(
  doi = bib_data$metrics$zotero_dois$not_in_oa,
  link = paste0(bib_data$bibliography$url, "/items/", names(bib_data$metrics$zotero_dois$not_in_oa))
) |>
  dplyr::mutate(
    doi = paste0('<a href="', link, '" target="_blank">', doi, "</a>"),
    link = NULL
  ) |>
  knitr::kable(
    caption = "DOIs in Zenodo which ar not in [OpenAlex](https://OpenAlex.org){target='_blank'}",
    escape = FALSE
  )

TODO Do Exist

TODO Finally we check, if these dois exist but are not ingested into OpenAlex. This is done using the doi.org resolver This is disabled at the moment and still needs to be implemented.

Reuse

Citation

BibTeX citation:
@report{krug,
  author = {Krug, Rainer M.},
  title = {Bibliography {Report}},
  langid = {en},
  abstract = {Reports analysing the IPBES Libraries on Zotero.}
}
For attribution, please cite this work as:
Krug, Rainer M. n.d. “Bibliography Report.”