Illustrating and interpreting a FAIR assessment

knitr::opts_chunk$set(collapse = TRUE, comment = "#>", fig.width = 7,
                      fig.height = 4.2, dpi = 96, fig.align = "center")
library(rfair)

This vignette shows how to read the output of an assessment: the scorecard plot, the score tables, the maturity levels, and the reuse/access context that rfair adds on top of the F-UJI metrics. For how the scores are computed see vignette("methodology"); for a quick tour see vignette("rfair").

So the vignette renders offline and deterministically, it uses the bundled example assessment fair_example (a real assessment of a Zenodo deposit, \doi{10.5281/zenodo.8347772}). You produce your own the same way:

# (needs network) assess any DOI / PID / URL:
x <- assess_fair("https://doi.org/10.5281/zenodo.8347772")
data(fair_example)
x <- fair_example
x

The printed summary is the fastest read: an earned/total and percentage per FAIR category, the overall score, and any reuse/access/identifier flags.

1. The scorecard plot

plot() turns the assessment into a one-glance scorecard. Each bar is a FAIR category filled to its score, labeled with earned/total and its maturity level (the colored word on the right). The dark bar at the top is the overall FAIR score.

plot(x)

To see which of the 17 metrics drive each category, plot the per-metric breakdown. Bars are grouped and colored by category (F/A/I/R) and labeled with the metric identifier and its earned/total.

plot(x, type = "metric")

For a compact overview that shows both levels at once, type = "sunburst" draws a concentric ring chart: the inner ring is the four FAIR categories and the outer ring is the individual metrics, each filled in proportion to its score, with the overall FAIR percentage in the center. This is the same summary the web app shows.

plot(x, type = "sunburst")

2. Score tables

summary() returns the per-category table behind the scorecard (handy for reports and further computation):

summary(x)

as.data.frame() gives one row per metric, with its principle, category, score, maturity, and pass/fail status:

df <- as.data.frame(x)
head(df, 8)

Because it is a plain data frame you can slice it however you like, for example the metrics that did not earn full marks:

df[df$earned < df$total, c("metric_identifier", "metric_name", "earned", "total")]

3. How to read the numbers

4. The context rfair adds beyond the score

A single FAIR percentage hides why an object is or is not reusable. rfair surfaces that separately (see vignette("beyond-fuji")); the same information is in the assessment object and worth showing alongside the scorecard.

License reusability (not merely presence): a license can be detected yet not actually permit reuse.

x$reuse$licenses[[1]][c("license", "category", "rdp_category")]

Access level and sensitivity flags (a restricted object is not a FAIR failure, but you should know):

x$access[c("access", "controlled_access", "sensitive")]

Identifier hygiene (does the persistent identifier resolve cleanly, no obvious problems):

x$identifier_hygiene[c("scheme", "is_persistent", "hygiene_ok")]

5. Exporting the illustration

The assessment serializes for downstream tools. as_fuji_json() emits a payload matching the upstream F-UJI FAIRResults schema:

js <- as_fuji_json(x)
substr(js, 1, 220)

as_rdf() emits a machine-readable rating (W3C DQV plus a schema.org Rating as JSON-LD), suitable for embedding in a landing page:

rdf <- as_rdf(x)
substr(rdf, 1, 220)

Summary



Try the rfair package in your browser

Any scripts or data that you put into this service are public.

rfair documentation built on July 1, 2026, 5:07 p.m.