From a58d21beb0d455836292aad919313e3e1335c901 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 16 Mar 2026 11:17:08 +0000 Subject: [PATCH 01/51] Update function's documentation --- R/dsROCrate.R | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/R/dsROCrate.R b/R/dsROCrate.R index a3a62f3..0fd90c3 100644 --- a/R/dsROCrate.R +++ b/R/dsROCrate.R @@ -1,4 +1,6 @@ -#' Initialise Five Safes RO-Crate +#' Initialise a Five Safes RO-Crate +#' +#' Creates a new RO-Crate configured for Five Safes auditing. #' #' @param x This can be a connection to a 'DataSHIELD' server (e.g., object with #' the `opal` class, see [opalr::opal.login()]), an RO-Crate @@ -27,7 +29,13 @@ #' the Safe People, it must include `@id` and `name` entries. Alternatively, #' this can be a string with the `name` of the current user. #' -#' @returns Five Safes RO-Crate. +#' @returns Five Safes RO-Crate object. +#' +#' @references +#' Wilkinson, M., Dumontier, M., Aalbersberg, I. et al. (2016) The FAIR Guiding +#' Principles for scientific data management and stewardship. Sci Data 3, +#' 160018. https://doi.org/10.1038/sdata.2016.18 +#' #' @export init <- function(x, ...) { UseMethod("init") From 45df281288a927e5007a4c52b1de1bbb3aa747f0 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 16 Mar 2026 11:28:05 +0000 Subject: [PATCH 02/51] Refactor extract_safe_data.opal and flatten_safe_data.rocrate to simplify the transformation of safe data entities and include both resources and tables as assets --- R/utils-safe_data.R | 69 +++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 40 deletions(-) diff --git a/R/utils-safe_data.R b/R/utils-safe_data.R index 553c759..afe6c31 100644 --- a/R/utils-safe_data.R +++ b/R/utils-safe_data.R @@ -17,26 +17,17 @@ extract_safe_data.opal <- function(x, ..., rocrate = rocrateR::rocrate_5s()) { # extract all data sources ds <- opalr::opal.datasources(x) - # cycle through the data source (x) and data project details - for (i in seq_len(nrow(ds))) { - project_name <- ds[i, "name"] - project_tables <- get_project_tables(x, project_name) - if ( - !is.na(project_name) && - !is.null(project_name) && - length(project_tables) > 0 - ) { - rocrate <- rocrate |> - safe_data( - project = project_name, - tables = project_tables, - connection = x - ) - } - } + # extract project names and ignore NAs + projects <- ds$name[!is.na(ds$name) & !is.null(ds$name)] - # return RO-Crate with Safe Data details - return(rocrate) + # create RO-Crate with Safe Data details for the projects found on the server + purrr::reduce( + projects, + \(crate, project_name) { + safe_data(crate, connection = x, project = project_name) + }, + .init = rocrate + ) } #' @param id (Optional) Vector with `@id` strings for Safe Data entity(ies) @@ -47,46 +38,39 @@ extract_safe_data.rocrate <- function( x, ..., id = NULL, + asset_id_suffix = "#asset:", rocrate = rocrateR::rocrate_5s() ) { # validate RO-Crate rocrateR::is_rocrate(x) - # extract Dataset entities - entities_lst <- .get_entity(x, type = "Dataset") + # filter out asset entities associated with the project based on the + # value for `asset_id_suffix`. + entities_lst <- x$`@graph` |> + purrr::keep(\(x) grepl(paste0("^", asset_id_suffix), x$`@id`)) # if `id` was provided, then filter out only those entities if (!is.null(id)) { - idx <- entities_lst |> - sapply(\(x) getElement(x, "@id") %in% id) - entities_lst <- entities_lst[idx] + entities_lst <- entities_lst |> + purrr::keep(\(x) getElement(x, "@id") %in% id) } - # remove root entity, ./ - idx <- entities_lst |> - sapply(\(x) getElement(x, "@id") == "./") - entities_lst[idx] <- NULL - # check if any entities were found if (length(entities_lst) == 0) { stop("No matching entities were found!", call. = FALSE) } else { message( length(entities_lst), - " 'Dataset' entit", + " asset entit", ifelse(length(entities_lst) == 1, "y was", "ies were"), " found!" ) } - # add Dataset entities to the RO-Crate + # add entities to the RO-Crate suppressWarnings({ - rocrate <- rocrate |> - rocrateR::add_entity(entities_lst, verbose = FALSE) + purrr::reduce(entities_lst, rocrateR::add_entity, .init = rocrate) }) - - # return RO-Crate with the Safe Data details - return(rocrate) } #' Flatten object with Safe Data details @@ -111,12 +95,17 @@ flatten_safe_data.default <- function(x, ...) { #' @rdname flatten_safe_data #' @export -flatten_safe_data.rocrate <- function(x, ..., id = NULL) { +flatten_safe_data.rocrate <- function( + x, + ..., + id = NULL, + asset_id_suffix = "#asset:" +) { tryCatch( { - # extract Dataset entities - entities_tbl <- x |> - .get_entity(type = "Dataset") |> + # extract asset entities + entities_tbl <- x$`@graph` |> + purrr::keep(\(x) grepl(paste0("^", asset_id_suffix), x$`@id`)) |> # extract @id and name for each entity lapply(function(ent) { tibble::tibble( From 75c40b2e3cb2b70bfe64c739c717dbf5829ad654 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 16 Mar 2026 11:28:33 +0000 Subject: [PATCH 03/51] Update tests to account for changes in extract_safe_data.rocrate --- tests/testthat/test-utils-safe_data.R | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/testthat/test-utils-safe_data.R b/tests/testthat/test-utils-safe_data.R index 047408a..c3ac3c0 100644 --- a/tests/testthat/test-utils-safe_data.R +++ b/tests/testthat/test-utils-safe_data.R @@ -68,7 +68,7 @@ test_that("extract_safe_data.rocrate copies Dataset entities", { src <- rocrateR::add_entity( src, entity = rocrateR::entity( - id = "#ds1", + id = "#asset:1", type = "Dataset", name = "Dataset 1" ) @@ -77,7 +77,7 @@ test_that("extract_safe_data.rocrate copies Dataset entities", { src <- rocrateR::add_entity( src, entity = rocrateR::entity( - id = "#ds2", + id = "#asset:2", type = "Dataset", name = "Dataset 2" ) @@ -102,7 +102,7 @@ test_that("extract_safe_data.rocrate filters Dataset entities by id", { src <- rocrateR::add_entity( src, entity = rocrateR::entity( - id = "#keep_me", + id = "#asset:keep_me", type = "Dataset", name = "Keep" ) @@ -111,7 +111,7 @@ test_that("extract_safe_data.rocrate filters Dataset entities by id", { src <- rocrateR::add_entity( src, entity = rocrateR::entity( - id = "#drop_me", + id = "#asset:drop_me", type = "Dataset", name = "Drop" ) @@ -119,13 +119,13 @@ test_that("extract_safe_data.rocrate filters Dataset entities by id", { # ignore warning of project not having tables associated suppressWarnings( - new_roc <- extract_safe_data(src, id = "#keep_me") + new_roc <- extract_safe_data(src, id = "#asset:keep_me") ) ents <- rocrateR::get_entity(new_roc, type = "Dataset") ids <- vapply(ents, function(e) e[["@id"]], character(1)) - expect_equal(ids, c("./", "#keep_me")) + expect_equal(ids, c("./", "#asset:keep_me")) }) test_that("extract_safe_data.rocrate errors when no Dataset entities exist", { @@ -151,7 +151,7 @@ test_that("flatten_safe_data.rocrate extracts id and name correctly", { roc <- rocrateR::add_entity( roc, entity = rocrateR::entity( - id = "#ds1", + id = "#asset:1", type = "Dataset", name = "Dataset One" ) @@ -160,7 +160,7 @@ test_that("flatten_safe_data.rocrate extracts id and name correctly", { roc <- rocrateR::add_entity( roc, entity = rocrateR::entity( - id = "#ds2", + id = "#asset:2", type = "Dataset", name = "Dataset Two" ) @@ -179,7 +179,7 @@ test_that("flatten_safe_data.rocrate filters by id argument", { roc <- rocrateR::add_entity( roc, entity = rocrateR::entity( - id = "#dsA", + id = "#asset:A", type = "Dataset", name = "A" ) @@ -188,16 +188,16 @@ test_that("flatten_safe_data.rocrate filters by id argument", { roc <- rocrateR::add_entity( roc, entity = rocrateR::entity( - id = "#dsB", + id = "#asset:B", type = "Dataset", name = "B" ) ) - res <- flatten_safe_data(roc, id = "#dsA") + res <- flatten_safe_data(roc, id = "#asset:A") expect_equal(nrow(res), 1) - expect_equal(res$id, "#dsA") + expect_equal(res$id, "#asset:A") }) test_that("flatten_safe_data.rocrate returns empty tibble on error", { From 3d155ab9f665e6d071462bec11e3db549b8e0d17 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 16 Mar 2026 20:50:18 +0000 Subject: [PATCH 04/51] Update safe_project.opal S3 generic to automatically link users to projects and assets to projects --- R/safe_project.R | 61 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/R/safe_project.R b/R/safe_project.R index bbd550c..d473698 100644 --- a/R/safe_project.R +++ b/R/safe_project.R @@ -121,27 +121,30 @@ safe_project.opal <- function( # check if the given `project` exists project_exists(x, project = project) + # create project @id + project_id <- id_hash(project_id_suffix, project) + # retrieve details associated to `project` project_details_tbl <- opalr::opal.project(x, project) # filter out asset entities associated with the project based on the # value for `asset_id_suffix`. - project_asset_entities <- rocrate$`@graph` |> + crate_asset_entities <- rocrate$`@graph` |> purrr::keep(\(x) grepl(paste0("^", asset_id_suffix), x$`@id`)) # create project entity timestamps <- getElement(project_details_tbl, "timestamps") project_entity <- rocrateR::entity( - id = id_hash(project_id_suffix, project), + id = project_id, type = "Project", name = getElement(project_details_tbl, "name"), dateCreated = getElement(timestamps, "created"), dateModified = getElement(timestamps, "lastUpdate"), - hasPart = purrr::map(project_asset_entities, ~ list("@id" = .x$`@id`)) + hasPart = purrr::map(crate_asset_entities, ~ list("@id" = .x$`@id`)) ) # if no tables are associated to this project, then drop `hasPart` - if (length(project_asset_entities) == 0) { + if (length(crate_asset_entities) == 0) { project_entity$hasPart <- NULL } @@ -149,6 +152,56 @@ safe_project.opal <- function( rocrate <- rocrate |> rocrateR::add_entity(project_entity, overwrite = TRUE) + # Opal permissions ---- + perms <- opalr::opal.get(x, "project", project, "permissions/project") + + project_users <- perms |> + purrr::map_chr( + ~ getElement(.x$subject, "principal"), + .default = NA_character_ + ) |> + stats::na.omit() + + # link existing Person entities ---- + people <- .get_entity(rocrate, type = "Person") + + if (!is.null(people)) { + for (person in people) { + user <- person$name + + if (user %in% project_users) { + rocrate <- append_entity_ref( + rocrate, + id = person[["@id"]], + key = "memberOf", + ref_id = project_id + ) + } + } + } + + # link existing asset entities ---- + # extract assets for the given project + project_tbl_assets <- get_project_assets(x, project, "tables") + project_res_assets <- get_project_assets(x, project, "resources") + # combine assets + proj_assets_tbl <- dplyr::bind_rows(project_tbl_assets, project_res_assets) + + # filter crate's assets based on the assets associated to the project + crate_asset_entities <- crate_asset_entities |> + purrr::keep(\(x) getElement(x, "name") %in% proj_assets_tbl$name) + + if (!is.null(crate_asset_entities) && length(crate_asset_entities) > 0) { + for (ass in crate_asset_entities) { + rocrate <- append_entity_ref( + rocrate, + id = ass[["@id"]], + key = "isPartOf", + ref_id = project_id + ) + } + } + # attach input arguments as attributes attr(rocrate, "connection") <- x attr(rocrate, "path") <- path From 646bdcf20bcb7731984e4eb4e4ac6ad36239631e Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 16 Mar 2026 20:50:55 +0000 Subject: [PATCH 05/51] Add new function append_entity_ref to attach new references/links to entities --- R/utils-rocrateR.R | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/R/utils-rocrateR.R b/R/utils-rocrateR.R index f819722..7cd0e7c 100644 --- a/R/utils-rocrateR.R +++ b/R/utils-rocrateR.R @@ -1,3 +1,33 @@ +#' Append entity reference +#' +#' Adds a reference to an existing property while +#' preserving existing values and avoiding duplicates. +#' +#' @keywords internal +append_entity_ref <- function(rocrate, id, key, ref_id) { + entity <- rocrateR::get_entity(rocrate, id = id)[[1]] + + current <- entity[[key]] + + existing_ids <- if (!is.null(current)) { + getElement(current, "@id") %||% purrr::map_chr(current, "@id") + } else { + character() + } + + ids <- unique(c(existing_ids, ref_id)) + + value <- purrr::map(ids, ~ list("@id" = .x)) + + rocrateR::add_entity_value( + rocrate, + id = id, + key = key, + value = value, + overwrite = TRUE + ) +} + #' Wrapper for [rocrateR::get_entity()] #' #' This wrapper is used to suppress warning messages like From 8858c2a3cf34e7a263090158e1ae742012b27bc6 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 16 Mar 2026 20:51:07 +0000 Subject: [PATCH 06/51] Update internal documentation --- R/utils-opal.R | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/R/utils-opal.R b/R/utils-opal.R index 64f26fc..ff3305d 100644 --- a/R/utils-opal.R +++ b/R/utils-opal.R @@ -1,3 +1,15 @@ +#' Add Asset Permissions to RO-Crate +#' +#' Creates a Permission entity describing dataset-level access for a user +#' within a project and links it to the relevant assets. +#' +#' @param rocrate RO-Crate object, see [rocrateR::rocrate]. +#' @param project Project identifier. +#' @param user User identifier. +#' @param assets Vector of strings with asset identifiers. +#' +#' @return Updated RO-Crate. +#' #' @noRd add_asset_permissions_to_crate <- function( rocrate, From 85fa12a951a21aece5d0724662602413986efb45 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 16 Mar 2026 20:57:20 +0000 Subject: [PATCH 07/51] New build --- man/append_entity_ref.Rd | 13 +++++++++++++ man/extract_safe_data.Rd | 11 ++++++++++- man/flatten_safe_data.Rd | 2 +- man/init.Rd | 11 ++++++++--- 4 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 man/append_entity_ref.Rd diff --git a/man/append_entity_ref.Rd b/man/append_entity_ref.Rd new file mode 100644 index 0000000..2d7807b --- /dev/null +++ b/man/append_entity_ref.Rd @@ -0,0 +1,13 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils-rocrateR.R +\name{append_entity_ref} +\alias{append_entity_ref} +\title{Append entity reference} +\usage{ +append_entity_ref(rocrate, id, key, ref_id) +} +\description{ +Adds a reference to an existing property while +preserving existing values and avoiding duplicates. +} +\keyword{internal} diff --git a/man/extract_safe_data.Rd b/man/extract_safe_data.Rd index 9674262..32853fb 100644 --- a/man/extract_safe_data.Rd +++ b/man/extract_safe_data.Rd @@ -10,7 +10,13 @@ extract_safe_data(x, ...) \method{extract_safe_data}{opal}(x, ..., rocrate = rocrateR::rocrate_5s()) -\method{extract_safe_data}{rocrate}(x, ..., id = NULL, rocrate = rocrateR::rocrate_5s()) +\method{extract_safe_data}{rocrate}( + x, + ..., + id = NULL, + asset_id_suffix = "#asset:", + rocrate = rocrateR::rocrate_5s() +) } \arguments{ \item{x}{This can be a connection to a 'DataSHIELD' server (e.g., object with @@ -24,6 +30,9 @@ RO-Crate.} \item{id}{(Optional) Vector with \verb{@id} strings for Safe Data entity(ies) to be extracted from the given RO-Crate, \code{x}.} + +\item{asset_id_suffix}{String with ID suffix for the tables/datasets +entities in the RO-Crate (default: \code{"#asset:"}).} } \value{ RO-Crate with Safe Data entity(ies). diff --git a/man/flatten_safe_data.Rd b/man/flatten_safe_data.Rd index 1dff1fe..d4925d8 100644 --- a/man/flatten_safe_data.Rd +++ b/man/flatten_safe_data.Rd @@ -10,7 +10,7 @@ flatten_safe_data(x, ...) \method{flatten_safe_data}{default}(x, ...) -\method{flatten_safe_data}{rocrate}(x, ..., id = NULL) +\method{flatten_safe_data}{rocrate}(x, ..., id = NULL, asset_id_suffix = "#asset:") } \arguments{ \item{x}{Object (e.g., RO-Crate) with Safe Data details. This can be diff --git a/man/init.Rd b/man/init.Rd index 6151dc8..646685f 100644 --- a/man/init.Rd +++ b/man/init.Rd @@ -4,7 +4,7 @@ \alias{init} \alias{init.opal} \alias{init.rocrate} -\title{Initialise Five Safes RO-Crate} +\title{Initialise a Five Safes RO-Crate} \usage{ init(x, ...) @@ -70,8 +70,13 @@ values will be extracted from (e.g., OBiBa's Opal). Optional, if \code{x} is set to a connection object. If so, then \code{rocrate} is required.} } \value{ -Five Safes RO-Crate. +Five Safes RO-Crate object. } \description{ -Initialise Five Safes RO-Crate +Creates a new RO-Crate configured for Five Safes auditing. +} +\references{ +Wilkinson, M., Dumontier, M., Aalbersberg, I. et al. (2016) The FAIR Guiding +Principles for scientific data management and stewardship. Sci Data 3, +160018. https://doi.org/10.1038/sdata.2016.18 } From 3a938403533f666d72eade9d543a023e43d71808 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Tue, 17 Mar 2026 11:08:32 +0000 Subject: [PATCH 08/51] Minor change to simplify adding the hasPart property --- R/safe_project.R | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/R/safe_project.R b/R/safe_project.R index d473698..0883eed 100644 --- a/R/safe_project.R +++ b/R/safe_project.R @@ -140,14 +140,13 @@ safe_project.opal <- function( name = getElement(project_details_tbl, "name"), dateCreated = getElement(timestamps, "created"), dateModified = getElement(timestamps, "lastUpdate"), - hasPart = purrr::map(crate_asset_entities, ~ list("@id" = .x$`@id`)) + hasPart = if (length(crate_asset_entities) > 0) { + purrr::map(crate_asset_entities, ~ list("@id" = .x$`@id`)) + } else { + NULL + } ) - # if no tables are associated to this project, then drop `hasPart` - if (length(crate_asset_entities) == 0) { - project_entity$hasPart <- NULL - } - # add new project entity to the RO-Crate rocrate <- rocrate |> rocrateR::add_entity(project_entity, overwrite = TRUE) From a0c63b4de963cdd0ce37fbb743053ccc06264b43 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Tue, 17 Mar 2026 16:04:15 +0000 Subject: [PATCH 09/51] Minor changes to streamline extraction of 5 safe components --- R/safe_people.R | 3 ++- R/safe_project.R | 6 +++--- R/safe_setting.R | 1 + R/utils-opal.R | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/R/safe_people.R b/R/safe_people.R index fb19e7d..b1bd2c9 100644 --- a/R/safe_people.R +++ b/R/safe_people.R @@ -93,8 +93,9 @@ safe_people.opal <- function( validate_opal_con(x) # attempt to retrieve project entity + project_id <- id_hash("#project:", project) safe_project_entity <- rocrate |> - .get_entity(type = "Project") + .get_entity(id = project_id, type = "Project") # initialise empty user entity user_entity <- NULL diff --git a/R/safe_project.R b/R/safe_project.R index 0883eed..731d277 100644 --- a/R/safe_project.R +++ b/R/safe_project.R @@ -165,13 +165,13 @@ safe_project.opal <- function( people <- .get_entity(rocrate, type = "Person") if (!is.null(people)) { - for (person in people) { - user <- person$name + for (p in people) { + user <- p$name if (user %in% project_users) { rocrate <- append_entity_ref( rocrate, - id = person[["@id"]], + id = p[["@id"]], key = "memberOf", ref_id = project_id ) diff --git a/R/safe_setting.R b/R/safe_setting.R index 7272781..c0d5aca 100644 --- a/R/safe_setting.R +++ b/R/safe_setting.R @@ -204,6 +204,7 @@ safe_setting.opal <- function( name = Package, version = Version, description = Description |> + gsub(pattern = "[[:space:]]+", replacement = " ") |> trimws() ) }) diff --git a/R/utils-opal.R b/R/utils-opal.R index ff3305d..c537c5f 100644 --- a/R/utils-opal.R +++ b/R/utils-opal.R @@ -39,7 +39,7 @@ add_asset_permissions_to_crate <- function( user <- perms$user[j] permission <- perms$permission[j] - user_id <- id_hash("#user:", user) + user_id <- id_hash("#person:", user) # create permission entities perm_ents <- user_asset_perm_entities( From 6d43958d418f98aa9908b1a9693262ac236cfef9 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 18 Mar 2026 15:46:09 +0000 Subject: [PATCH 10/51] Streamline audit safe project to provide same functionality without overly complicated function calls --- R/audit_safe_project.R | 160 ++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 106 deletions(-) diff --git a/R/audit_safe_project.R b/R/audit_safe_project.R index af8048c..f482384 100644 --- a/R/audit_safe_project.R +++ b/R/audit_safe_project.R @@ -33,9 +33,12 @@ audit_safe_project.opal <- function( # local bindings name <- principal <- project_tables_all <- subject <- table <- type <- NULL + # create RO-Create with projects and datasets, plus information of users that + # have access to them + crate <- rocrateR::rocrate_5s() + # validate Opal connection is_opal_admin_con(x) - # validate_opal_con(x) # if `project` is missing, then extract all project names if (is.null(project)) { @@ -45,133 +48,78 @@ audit_safe_project.opal <- function( project <- ds[, "name"] } - suppressWarnings({ - project_tables_all <- x |> - get_project_details(project) - }) - - # add check to determine if project information was found: - if (nrow(project_tables_all) == 0) { - stop( - paste0( - "No data details were found for given project", - ifelse(length(project) == 1, "", "s"), - "!" - ), - call. = FALSE - ) - } - # get permissions for each table in the project - # get table permissions - project_table_permissions_tbl <- seq_len(nrow(project_tables_all)) |> - lapply(function(i) { - get_table_permissions( - x, - project_tables_all[i, "project"][[1]], - project_tables_all[i, "table"][[1]] - ) - }) |> - dplyr::bind_rows() - - # create RO-Create with projects and datasets, plus information of users that - # have access to them - safe_project_crate <- rocrateR::rocrate_5s() - - ## add Safe Data and Safe Project details - for (p in unique(project_table_permissions_tbl$project)) { - # filter out tables for the current project - project_tables <- project_table_permissions_tbl |> - dplyr::filter(project == p) - # add tables for the current project - safe_project_crate <- safe_project_crate |> - dsROCrate::safe_data( - project = p, - tables = project_tables$table, - connection = x - ) - # add project details - safe_project_crate <- safe_project_crate |> - dsROCrate::safe_project(project = p, connection = x) - } - + # Safe People ---- # get users' details safe_people_tbl <- opalr::opal.get(x, "/system/subject-profiles/") |> dplyr::bind_rows() |> dplyr::rename(name = principal) |> # exclude system administrators from the report - dplyr::filter(!(tolower(name) %in% c("admin", "administrator"))) |> - # filter out users that don't have access to the given project(s) - dplyr::filter(name %in% project_table_permissions_tbl$subject) - - # filter out table permissions based on the users found previously: - project_table_permissions_tbl <- project_table_permissions_tbl |> - dplyr::filter(subject %in% safe_people_tbl$name) - - # add Safe People details - for (i in seq_len(nrow(safe_people_tbl))) { - safe_project_crate <- safe_project_crate |> - dsROCrate::safe_people( - user = safe_people_tbl$name[i], - connection = x, - set_author = FALSE, - set_project = FALSE - ) - } - - # extract Dataset entities from the RO-Crate: @id & name - safe_data_entities_tbl <- safe_project_crate |> - flatten_safe_data() |> - dplyr::rename("table_id" = "id") + dplyr::filter(!(tolower(name) %in% c("admin", "administrator"))) + + crate <- safe_people_tbl$name |> + purrr::reduce( + \(crate, username) { + safe_people( + crate, + connection = x, + user = username, + set_author = FALSE, + set_project = FALSE + ) + }, + .init = crate + ) - # extract Person entities from the RO-Crate: @id & name - safe_people_entities_tbl <- safe_project_crate |> - flatten_safe_people() |> - dplyr::rename("user_id" = "id") + # Safe Projects ---- + crate <- project |> + purrr::reduce( + \(crate, project_name) { + safe_project(crate, connection = x, project = project_name) + }, + .init = crate + ) - ## combine the table permissions with Dataset & People entities' @ids - project_table_permissions_tbl_v2 <- project_table_permissions_tbl |> - dplyr::left_join(safe_data_entities_tbl, by = c("table" = "name")) |> - dplyr::left_join(safe_people_entities_tbl, by = c("subject" = "name")) |> - dplyr::rename(user = subject) + # Safe Data ---- + crate <- project |> + purrr::reduce( + \(crate, project_name) { + safe_data(crate, connection = x, project = project_name) + }, + .init = crate + ) - ## generate user permission entities and add to the RO-Crate - user_perm_entity_lst <- project_table_permissions_tbl_v2 |> - purrr::pmap(user_perm_entity) |> - purrr::list_c() - # ignore warnings about existing permission entities - suppressWarnings({ - safe_project_crate <- user_perm_entity_lst |> - purrr::reduce( - rocrateR::add_entity, - overwrite = TRUE, - .init = safe_project_crate - ) - }) + # remove permissions associated with admin users + non_admin_user_ids <- safe_people_tbl$name |> + purrr::map_chr(id_hash, prefix = "#person:") + admin_perm_ents <- crate$`@graph` |> + purrr::keep(\(x) grepl("^#perm:", getElement(x, "@id"))) |> + purrr::discard(\(x) getElement(x, "agent")[[1]] %in% non_admin_user_ids) + crate <- admin_perm_ents |> + purrr::reduce(rocrateR::remove_entity, .init = crate) - # add Safe Setting details - safe_project_crate <- x |> - extract_safe_setting(rocrate = safe_project_crate) + # Safe Settings ---- + crate <- safe_setting(x, rocrate = crate) - # add Safe Output details - for (u in safe_people_entities_tbl$name) { + # Safe Outputs ---- + for (u in safe_people_tbl$name) { # # suppress warnings, as some users might not have logs in the given period # suppressWarnings({ - safe_project_crate <- x |> + crate <- x |> extract_safe_output( path = path, user = u, logs_to = logs_to, logs_from = logs_from, - rocrate = safe_project_crate, + rocrate = crate, ) # }) } # attach input args as attributes to the RO-Crate - attr(safe_project_crate, "audit_type") <- "Safe Project" - attr(safe_project_crate, "path") <- path - attr(safe_project_crate, "project") <- project + attr(crate, "audit_type") <- "Safe Project" + attr(crate, "path") <- path + attr(crate, "project") <- project # return new RO-Crate - return(safe_project_crate) + return(crate) } From 807a300bc5ebfd64515cab784a00b59f48eecfc9 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 18 Mar 2026 15:46:37 +0000 Subject: [PATCH 11/51] Update add_asset_permissions_to_crate and get_asset_permissions --- R/utils-opal.R | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/R/utils-opal.R b/R/utils-opal.R index c537c5f..3d93189 100644 --- a/R/utils-opal.R +++ b/R/utils-opal.R @@ -24,17 +24,14 @@ add_asset_permissions_to_crate <- function( asset_id <- id_lookup[[asset$name]] asset_type <- asset$asset_type - perms <- get_asset_permissions( - x, - project, - asset_type, - asset$name - ) + # retrieve asset permissions + perms <- get_asset_permissions(x, project, asset_type, asset$name) if (is.null(perms)) { next } + # iterate through user permissions for an asset for (j in seq_len(nrow(perms))) { user <- perms$user[j] permission <- perms$permission[j] @@ -52,13 +49,12 @@ add_asset_permissions_to_crate <- function( ) # add permission entities - for (ent in perm_ents) { - rocrate <- rocrateR::add_entity( - rocrate, - ent, - overwrite = TRUE - ) - } + rocrate <- purrr::reduce( + perm_ents, + rocrateR::add_entity, + overwrite = TRUE, + .init = rocrate + ) } } @@ -138,6 +134,27 @@ get_asset_permissions <- function(x, project, asset_type, name) { perms <- opalr::opal.table_perm(x, project, name) } else { perms <- opalr::opal.resource_perm(x, project, name) + if (is.null(perms) || nrow(perms) == 0) { + # if the previous call returns NULL, then attempt a different approach + perms_lst <- x |> + opalr::opal.get("project", project, "permissions/resources") + # derive permissions at Project level + perms <- tryCatch( + perms_lst |> + purrr::map(function(p) { + tibble::tibble( + subject = p$subject$principal, + resource = p$resource, + permission = purrr::list_c(p$actions) |> + gsub(pattern = "RESOURCES_", replacement = "") |> + gsub(pattern = "ALL", replacement = "administrate") |> + tolower() + ) + }), + error = function(e) NULL + ) |> + purrr::list_c() + } } if (is.null(perms) || length(perms$subject) == 0) { From 2b895cd8a40493322526b58a7b7bf4bd9ef3f3ef Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 18 Mar 2026 22:22:06 +0000 Subject: [PATCH 12/51] Update error messages for project_exists.* S3 generics --- R/utils-connection.R | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/R/utils-connection.R b/R/utils-connection.R index 8273ab6..95dacce 100644 --- a/R/utils-connection.R +++ b/R/utils-connection.R @@ -86,10 +86,9 @@ project_exists <- function(x, ...) { project_exists.opal <- function(x, ..., project) { if (!opalr::opal.project_exists(x, project)) { stop( - paste0( - "The given `project = '", - project, - "'` was not found in the given Opal connection!" + sprintf( + "The `project = '%s'` was not found in the given Opal connection!", + project ), call. = FALSE ) @@ -109,10 +108,9 @@ setMethod( ) { if (!(project %in% MolgenisArmadillo::armadillo.list_projects())) { stop( - paste0( - "The given `project = '", - project, - "'` was not found in the given Armadillo connection!" + sprintf( + "The `project = '%s'` was not found in the given Armadillo connection!", + project ), call. = FALSE ) From 0a885e85a3b8f3858234b83053eb1ef3be20bb73 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 18 Mar 2026 22:23:24 +0000 Subject: [PATCH 13/51] Standardise column names, Safe Projects: project_id and project; Safe Data: asset_id and asset --- R/rocrate_report.R | 82 +++++++++++++++++++----------------------- R/utils-cr8tor.R | 18 +++++----- R/utils-opal.R | 69 +++++++++++++++++++---------------- R/utils-safe_data.R | 17 +++++---- R/utils-safe_people.R | 6 ++-- R/utils-safe_project.R | 39 ++++++++++---------- 6 files changed, 117 insertions(+), 114 deletions(-) diff --git a/R/rocrate_report.R b/R/rocrate_report.R index 965cae9..1841e5a 100644 --- a/R/rocrate_report.R +++ b/R/rocrate_report.R @@ -73,7 +73,7 @@ rocrate_report.list <- function( max_line_length = 200 ) { # local bindings - id <- name <- permission <- project <- server <- user <- NULL + asset <- id <- name <- permission <- project <- server <- user <- NULL # validate that all the objects in the list, `x`, are valid RO-Crates sapply(x, rocrateR::is_rocrate) @@ -188,27 +188,22 @@ rocrate_report.list <- function( ## overview table ---- overview_data_all <- tibble::tibble() ## combine aggregated data to generate new overview table - safe_project_data_all <- safe_project_all |> - dplyr::rename(project_id = id) |> - dplyr::left_join( - safe_data_all |> - dplyr::rename(table_id = id), - by = c("table" = "name", "server" = "server") - ) + safe_project_data_all <- safe_project_all #|> + # dplyr::rename(asset = asset_name) + # if data permissions were found, then combine with project-data details and # generate new overview table if (!is.null(safe_data_permissions_all)) { overview_data_all <- safe_data_permissions_all |> dplyr::left_join( - safe_people_all |> - dplyr::rename(user_id = id), - by = c("user_id", "server") + safe_people_all, + by = c("person_id", "server") ) |> - dplyr::left_join(safe_project_data_all, by = c("table_id", "server")) |> + dplyr::left_join(safe_project_data_all, by = c("asset_id", "server")) |> dplyr::select( server, project, - table, + asset, permission, user = name ) @@ -218,7 +213,7 @@ rocrate_report.list <- function( overview_data_all <- overview_data_all |> dplyr::left_join( safe_output_all, - by = c("server", "project", "table", "user") + by = c("server", "project", "asset", "user") ) } } else { @@ -261,7 +256,7 @@ rocrate_report.list <- function( report_contents <- c( .markdown_report_header(title, overview_data_all, overview_lst$diag_path), tidy_overview_tbl |> - # # tidy up duplicated values in `project` and `table` + # # tidy up duplicated values in `project` and `asset` # dplyr::mutate( # Project = unfill_vec(Project), # Data = unfill_vec(Data) @@ -404,9 +399,9 @@ rocrate_report.rocrate <- function( max_line_length = 200 ) { # local bindings ---- - actionStatus <- description <- fx <- table <- NULL - encodingFormat <- id <- name <- project <- table_id <- table_name <- NULL - timestamp <- type <- user_id <- user <- NULL + actionStatus <- asset <- asset_id <- description <- fx <- NULL + encodingFormat <- id <- name <- permission <- perm_id <- project <- NULL + table_name <- timestamp <- type <- person_id <- user <- NULL # validate RO-Crate ---- rocrateR::is_rocrate(x) @@ -546,36 +541,31 @@ rocrate_report.rocrate <- function( ### extract (if available) table with user permissions user_perm_tbl <- flatten_user_perm_entity(user_perm_entity_lst) ### extract table with Safe People details - safe_people_tbl <- flatten_safe_people(safe_people_rocrate) |> - dplyr::rename(user_id = id) + safe_people_tbl <- flatten_safe_people(safe_people_rocrate) ### extract table with Safe Project details safe_project_tbl <- flatten_safe_project(safe_project_rocrate) ### extract table with Safe Data details - safe_data_tbl <- flatten_safe_data(safe_data_rocrate) |> - dplyr::rename(table_id = id, table_name = name) + safe_data_tbl <- flatten_safe_data(safe_data_rocrate) if (!is.null(user_perm_tbl) && nrow(user_perm_tbl) > 0) { overview_tbl <- user_perm_tbl |> # combine with Safe People details - dplyr::left_join(safe_people_tbl, by = "user_id") |> - # drop unused columns - dplyr::select(-id, -actionStatus, -description) |> + dplyr::left_join(safe_people_tbl, by = "person_id") |> + # subset columns of interest + dplyr::select(perm_id, person_id, name, asset_id, permission) |> # combine with Safe Data details - dplyr::left_join(safe_data_tbl, by = c("table_id")) |> + dplyr::left_join(safe_data_tbl, by = "asset_id") |> # combine with Safe Project details - dplyr::left_join(safe_project_tbl, by = c("table_name" = "table")) |> - # drop unused columns - dplyr::select(-id, -user_id, -table_id, -type) |> - dplyr::rename(table = table_name) + dplyr::left_join(safe_project_tbl, by = c("asset_id", "asset")) #|> + # # drop unused columns + # dplyr::select(-id, -person_id, -asset_id, -type) |> + # dplyr::rename(asset = asset_name) } else { overview_tbl <- flatten_safe_people(safe_people_rocrate) |> - dplyr::select(-id) |> - dplyr::bind_cols( - flatten_safe_project(safe_project_rocrate) |> - dplyr::select(-id), - flatten_safe_data(safe_data_rocrate) |> - dplyr::select(-id) |> - dplyr::rename(table = name) - ) + purrr::pmap(function(person_id, name, ...) { + tibble::tibble(person_id, name) |> + dplyr::bind_cols(flatten_safe_project(safe_project_rocrate)) + }) |> + purrr::list_c() } # attempt extracting list of functions executed by the users from Safe Outputs @@ -596,15 +586,15 @@ rocrate_report.rocrate <- function( safe_output_tbl_v2 <- safe_output_tbl |> dplyr::mutate( project = gsub("(?=\\.).*$", "", table, perl = TRUE), - table = gsub("^.*(?<=\\.)", "", table, perl = TRUE) + asset = gsub("^.*(?<=\\.)", "", table, perl = TRUE) ) |> - dplyr::distinct(project, table, user, fx, timestamp) + dplyr::distinct(project, asset, user, fx, timestamp) # append the list of functions to the overview table overview_tbl <- overview_tbl |> dplyr::left_join( safe_output_tbl_v2, - by = c("project" = "project", "table" = "table", "name" = "user") + by = c("project" = "project", "asset" = "asset", "name" = "user") ) |> # replace 'NA' in fx & timestamp with empty string dplyr::mutate( @@ -742,11 +732,11 @@ rocrate_report.rocrate <- function( diag_height ) { # local bindings - fx <- name <- permission <- project <- table <- NULL + fx <- name <- permission <- project <- asset <- NULL ## initialise `vars` and `labelvar` - vars <- c("project", "table") - labelvar <- c(project = "Project", table = "Data") + vars <- c("project", "asset") + labelvar <- c(project = "Project", asset = "Data") # check if `overview_tbl` has `permission` field AND include_user_perm = TRUE if ("permission" %in% colnames(overview_tbl) && include_user_perm) { @@ -853,8 +843,8 @@ rocrate_report.rocrate <- function( fx <- permission <- timestamp <- NULL ## initialise `vars` and `varslab` - vars <- c("project", "table") - varslab <- c("Project" = "project", "Data" = "table") + vars <- c("project", "asset") + varslab <- c("Project" = "project", "Data" = "asset") # check if `overview_tbl` has `permission` field AND include_user_perm = TRUE if ("permission" %in% colnames(overview_tbl) && include_user_perm) { diff --git a/R/utils-cr8tor.R b/R/utils-cr8tor.R index 5045db5..4919cac 100644 --- a/R/utils-cr8tor.R +++ b/R/utils-cr8tor.R @@ -70,7 +70,7 @@ add_safe_project_entities_cr8tor <- function(rc, proj_tbl, data_tbl) { for (i in seq_len(nrow(proj_tbl))) { project_id <- proj_tbl$id[i] - project_name <- proj_tbl$name[i] + project <- proj_tbl$name[i] project_eid <- paste0("#project:", project_id) ds_ids <- data_tbl |> @@ -86,7 +86,7 @@ add_safe_project_entities_cr8tor <- function(rc, proj_tbl, data_tbl) { rocrateR::entity( id = project_eid, type = "Project", - name = project_name, + name = project, dateCreated = now, dateModified = now, hasPart = has_part @@ -172,14 +172,14 @@ add_permission_entities_cr8tor <- function(rc, perm_expanded_tbl) { for (i in seq_len(nrow(perm_expanded_tbl))) { row <- perm_expanded_tbl[i, ] - user_id <- paste0("#person:", digest::digest(row$username)) - table_id <- paste0("#dataset:", row$table) + user_id <- id_hash("#person:", row$username) + table_id <- id_hash("#asset:", row$table) ents <- user_perm_entity( user = row$username, user_id = user_id, - table = row$table, - table_id = table_id, + asset = row$table, + asset_id = table_id, permission = row$permission ) @@ -723,7 +723,7 @@ load_cr8tor_bundle <- function(path, ...) { ) } -map_project_name_to_id <- function(project_name, proj_tbl) { - idx <- which(proj_tbl$name == project_name) - if (length(idx)) proj_tbl$id[idx[1]] else project_name +map_project_name_to_id <- function(project, proj_tbl) { + idx <- which(proj_tbl$name == project) + if (length(idx)) proj_tbl$id[idx[1]] else project } diff --git a/R/utils-opal.R b/R/utils-opal.R index 3d93189..cce520f 100644 --- a/R/utils-opal.R +++ b/R/utils-opal.R @@ -1,11 +1,11 @@ #' Add Asset Permissions to RO-Crate #' -#' Creates a Permission entity describing dataset-level access for a user +#' Creates a Permission entity describing dataset-level access for a person #' within a project and links it to the relevant assets. #' #' @param rocrate RO-Crate object, see [rocrateR::rocrate]. #' @param project Project identifier. -#' @param user User identifier. +#' @param person User identifier. #' @param assets Vector of strings with asset identifiers. #' #' @return Updated RO-Crate. @@ -31,18 +31,18 @@ add_asset_permissions_to_crate <- function( next } - # iterate through user permissions for an asset + # iterate through person permissions for an asset for (j in seq_len(nrow(perms))) { - user <- perms$user[j] + person <- perms$person[j] permission <- perms$permission[j] - user_id <- id_hash("#person:", user) + person_id <- id_hash("#person:", person) # create permission entities perm_ents <- user_asset_perm_entities( - user = user, - user_id = user_id, - asset_name = asset$name, + person = person, + person_id = person_id, + asset = asset$name, asset_id = asset_id, permission = permission, asset_type = asset_type @@ -162,7 +162,7 @@ get_asset_permissions <- function(x, project, asset_type, name) { } tibble::tibble( - user = perms$subject, + person = perms$subject, permission = perms$permission ) } @@ -373,7 +373,7 @@ get_table_permissions <- function(x, project, tables) { #' @keywords internal flatten_user_perm_entity <- function(x) { # local bindings - agent <- object <- table_id <- user_id <- NULL + agent <- object <- asset_id <- person_id <- NULL # flatten list of entities x_tbl <- x |> @@ -386,14 +386,14 @@ flatten_user_perm_entity <- function(x) { # edit tibble with entities x_tbl |> dplyr::rename( - id = "@id", + perm_id = "@id", type = "@type", - user_id = agent, - table_id = object + person_id = agent, + asset_id = object ) |> dplyr::mutate( - user_id = unlist(user_id), - table_id = unlist(table_id), + person_id = unlist(person_id), + asset_id = unlist(asset_id), ) |> # add permission field, based on `type` dplyr::mutate( @@ -592,9 +592,9 @@ update_project_datasets <- function(rocrate, project, ds_ids) { #' @noRd user_asset_perm_entities <- function( - user, - user_id, - asset_name, + person, + person_id, + asset, asset_id, permission, asset_type = c("table", "resource") @@ -603,35 +603,42 @@ user_asset_perm_entities <- function( # reuse existing function by aliasing "table" args user_perm_entity( - user = user, - user_id = user_id, - table = asset_name, - table_id = asset_id, + person = person, + person_id = person_id, + asset = asset, + asset_id = asset_id, permission = permission ) } -#' Create user permission entities +#' Create user/person permission entities #' -#' @param user String with user name. -#' @param user_id String with user `@id`. -#' @param table String with dataset/table name. -#' @param table_id String with dataset/table `@id`. +#' @param person String with person name/username. +#' @param person_id String with person `@id`. +#' @param asset String with dataset/table/resource name. +#' @param asset_id String with dataset/table `@id`. #' @param permission String with permission ('view', 'view-values', 'edit', #' 'edit-values' OR 'administrate'). #' @param ... Other additional values. #' #' @returns List of [rocrateR::entity] objects #' @keywords internal -user_perm_entity <- function(user, user_id, table, table_id, permission, ...) { +user_perm_entity <- function( + person, + person_id, + asset, + asset_id, + permission, + ... +) { # set local bindings description <- type <- NULL action_status <- "PotentialActionStatus" - agent <- list(list(`@id` = user_id)) - object <- list(list(`@id` = table_id)) + agent <- list(list(`@id` = person_id)) + object <- list(list(`@id` = asset_id)) # create combined @id - comb_id <- paste0("#perm:", digest::digest(paste0(user, "-", table))) + comb_id <- id_hash("#perm:", paste0(person, "-", asset)) # update combine @id, @type and description based on permission if (permission == "view") { diff --git a/R/utils-safe_data.R b/R/utils-safe_data.R index afe6c31..5b3765d 100644 --- a/R/utils-safe_data.R +++ b/R/utils-safe_data.R @@ -23,8 +23,8 @@ extract_safe_data.opal <- function(x, ..., rocrate = rocrateR::rocrate_5s()) { # create RO-Crate with Safe Data details for the projects found on the server purrr::reduce( projects, - \(crate, project_name) { - safe_data(crate, connection = x, project = project_name) + \(crate, p) { + safe_data(crate, connection = x, project = p) }, .init = rocrate ) @@ -80,7 +80,7 @@ extract_safe_data.rocrate <- function( #' @param id Vector of strings with the `@id`s for the datasets to be extracted. #' If not provided, extract all entities with `@type = 'Dataset'`. #' -#' @returns Data frame with safe data details. +#' @returns Data frame with Safe Data details. #' @rdname flatten_safe_data #' @keywords internal flatten_safe_data <- function(x, ...) { @@ -101,6 +101,9 @@ flatten_safe_data.rocrate <- function( id = NULL, asset_id_suffix = "#asset:" ) { + # local bindings + asset_id <- person_id <- NULL + tryCatch( { # extract asset entities @@ -109,19 +112,19 @@ flatten_safe_data.rocrate <- function( # extract @id and name for each entity lapply(function(ent) { tibble::tibble( - id = getElement(ent, "@id"), - name = getElement(ent, "name") + asset_id = getElement(ent, "@id"), + asset = getElement(ent, "name") ) }) |> # combine all rows dplyr::bind_rows() |> # filter out root (./) entity - dplyr::filter(id != "./") + dplyr::filter(asset_id != "./") # if `id` is provided, then only keep those entities if (!is.null(id)) { entities_tbl <- entities_tbl |> - dplyr::filter(id %in% !!id) + dplyr::filter(asset_id %in% !!id) } # return dataset entities diff --git a/R/utils-safe_people.R b/R/utils-safe_people.R index da607cf..98494d1 100644 --- a/R/utils-safe_people.R +++ b/R/utils-safe_people.R @@ -125,6 +125,8 @@ flatten_safe_people.default <- function(x, ...) { #' @rdname flatten_safe_people #' @export flatten_safe_people.rocrate <- function(x, ..., id = NULL) { + # local bindings + person_id <- NULL tryCatch( { # extract Person entities @@ -133,7 +135,7 @@ flatten_safe_people.rocrate <- function(x, ..., id = NULL) { # extract @id and name for each entity lapply(function(ent) { tibble::tibble( - id = getElement(ent, "@id"), + person_id = getElement(ent, "@id"), name = getElement(ent, "name"), given_name = c( getElement(ent, "givenName"), @@ -152,7 +154,7 @@ flatten_safe_people.rocrate <- function(x, ..., id = NULL) { # if `id` is provided, then only keep those entities if (!is.null(id)) { entities_tbl <- entities_tbl |> - dplyr::filter(id %in% !!id) + dplyr::filter(person_id %in% !!id) } # return dataset entities diff --git a/R/utils-safe_project.R b/R/utils-safe_project.R index 12c025b..1437d1e 100644 --- a/R/utils-safe_project.R +++ b/R/utils-safe_project.R @@ -24,11 +24,11 @@ extract_safe_project.opal <- function( # cycle through the data source (x) and extract project details for (i in seq_len(nrow(ds))) { - project_name <- ds[i, "name"] - if (!is.na(project_name) && !is.null(project_name)) { + project <- ds[i, "name"] + if (!is.na(project) && !is.null(project)) { suppressWarnings({ rocrate <- rocrate |> - safe_project(project = project_name, connection = x) + safe_project(project = project, connection = x) }) } } @@ -135,26 +135,27 @@ flatten_safe_project.rocrate <- function(x, ..., y = x) { has_part <- getElement(ent, "hasPart") |> unlist() project_id <- getElement(ent, "@id") - project_name <- getElement(ent, "name") + project <- getElement(ent, "name") - # if the current Project entity has any Datasets, extract them + # if the current Project entity has any assets, extract them if (!is.null(has_part)) { - # extract datasets by @id - table_names <- y |> - flatten_safe_data(id = has_part) |> - # extract names - getElement("name") - - return(tibble::tibble( - id = project_id, - project = project_name, - table = table_names - )) + # extract assets by @id + assets_tbl <- y |> + flatten_safe_data(id = has_part) + + proj_assets_tbl <- tibble::tibble( + project_id = project_id, + project = project + ) |> + dplyr::bind_cols(assets_tbl) + + return(proj_assets_tbl) } return(tibble::tibble( - id = project_id, - project = project_name, - table = NA + project_id = project_id, + project = project, + asset_id = NA, + asset = NA )) }) |> dplyr::bind_rows() From 8957c0d258625d0bec722f0715a100daa2a8cc48 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 18 Mar 2026 22:25:46 +0000 Subject: [PATCH 14/51] Standardise audit functions --- R/audit_safe_people.R | 183 ++++++++++++++++++----------------------- R/audit_safe_project.R | 37 +++++---- 2 files changed, 99 insertions(+), 121 deletions(-) diff --git a/R/audit_safe_people.R b/R/audit_safe_people.R index 80b2bb5..28d381d 100644 --- a/R/audit_safe_people.R +++ b/R/audit_safe_people.R @@ -44,7 +44,11 @@ audit_safe_people.opal <- function( path = NULL ) { # local bindings - project_tables_all <- subject <- type <- NULL + name <- principal <- project_tables_all <- subject <- type <- NULL + + # create RO-Create with projects and datasets, plus information of users that + # have access to them + crate <- rocrateR::rocrate_5s() # validate Opal connection is_opal_admin_con(x) @@ -57,118 +61,91 @@ audit_safe_people.opal <- function( project <- ds[, "name"] } - suppressWarnings({ - project_tables_all <- x |> - get_project_details(project) - }) - - # get permissions for each table in the project - # get table permissions - project_table_permissions_tbl <- seq_len(nrow(project_tables_all)) |> - lapply(function(i) { - get_table_permissions( - x, - project_tables_all[i, "project"][[1]], - project_tables_all[i, "table"][[1]] - ) - }) |> - dplyr::bind_rows() - - # filter out project permissions for the given user - project_table_permissions_tbl_v2 <- project_table_permissions_tbl |> - dplyr::filter(subject %in% user, type == "user") - - # check if any permission records were found for the current project - if (nrow(project_table_permissions_tbl_v2) == 0) { + # Safe People ---- + # get users' details + safe_people_tbl <- opalr::opal.get(x, "/system/subject-profiles/") |> + dplyr::bind_rows() |> + dplyr::rename(name = principal) |> + # exclude system administrators from the report + dplyr::filter(!(tolower(name) %in% c("admin", "administrator"))) |> + dplyr::filter(tolower(name) == user) + + if (nrow(safe_people_tbl) == 0) { stop( - "The given `project`, does not have any permissions set for the given `user`!", + sprintf( + "No Safe People details were found for the user '%s'!", + user + ), call. = FALSE ) } - # create RO-Create with user, projects and datasets they have access to - safe_people_crate <- rocrateR::rocrate_5s() - - ## add Safe Data and Safe Project details - for (p in unique(project_table_permissions_tbl_v2$project)) { - # filter out tables for the current project - project_tables <- project_table_permissions_tbl_v2 |> - dplyr::filter(project == p) - # add tables for the current project - safe_people_crate <- safe_people_crate |> - dsROCrate::safe_data( - project = p, - tables = project_tables$table, - connection = x - ) - # add project details - safe_people_crate <- safe_people_crate |> - dsROCrate::safe_project(project = p, connection = x) - } + crate <- safe_people_tbl$name |> + purrr::reduce( + \(crate, username) { + safe_people( + crate, + connection = x, + user = username, + set_author = FALSE, + set_project = FALSE + ) + }, + .init = crate + ) - # add Safe People details - for (i in seq_len(length(user))) { - safe_people_crate <- safe_people_crate |> - dsROCrate::safe_people( - user = user[i], - connection = x, - set_author = FALSE, - set_project = FALSE - ) - } + # Safe Projects ---- + crate <- project |> + purrr::reduce( + \(crate, p) { + safe_project(crate, connection = x, project = p) + }, + .init = crate + ) + + # Safe Data ---- + crate <- project |> + purrr::reduce( + \(crate, p) { + safe_data(crate, connection = x, project = p) + }, + .init = crate + ) - # extract Dataset entities from the RO-Crate: @id & name - safe_data_entities_tbl <- safe_people_crate |> - flatten_safe_data() |> - dplyr::rename("table_id" = "id") - - # extract Person entities from the RO-Crate: @id & name - safe_people_entities_tbl <- safe_people_crate |> - flatten_safe_people() |> - dplyr::rename("user_id" = "id") - - ## combine the table permissions with Dataset & People entities' @ids - project_table_permissions_tbl_v3 <- project_table_permissions_tbl |> - dplyr::filter(subject %in% user, type == "user") |> - dplyr::left_join(safe_data_entities_tbl, by = c("table" = "name")) |> - dplyr::left_join(safe_people_entities_tbl, by = c("subject" = "name")) |> - dplyr::rename(user = subject) - - ## generate user permission entities and add to the RO-Crate - user_perm_entity_lst <- project_table_permissions_tbl_v3 |> - purrr::pmap(user_perm_entity) |> - purrr::list_c() - - # ignore warnings about existing permission entities - suppressWarnings({ - safe_people_crate <- user_perm_entity_lst |> - purrr::reduce( - rocrateR::add_entity, - overwrite = TRUE, - .init = safe_people_crate - ) - }) - - # add Safe Setting details - safe_people_crate <- x |> - extract_safe_setting(rocrate = safe_people_crate) - - # add Safe Output details - safe_people_crate <- x |> - extract_safe_output( - path = path, - user = safe_people_entities_tbl$name, - logs_to = logs_to, - logs_from = logs_from, - rocrate = safe_people_crate + # remove permissions associated with admin users + non_admin_user_ids <- safe_people_tbl$name |> + purrr::map_chr(id_hash, prefix = "#person:") + admin_perm_ents <- crate$`@graph` |> + purrr::keep(\(x) grepl("^#perm:", getElement(x, "@id"))) |> + purrr::discard(\(x) getElement(x, "agent")[[1]] %in% non_admin_user_ids) + crate <- admin_perm_ents |> + purrr::reduce(rocrateR::remove_entity, .init = crate) + + # Safe Settings ---- + crate <- safe_setting(x, rocrate = crate) + + # Safe Outputs ---- + crate <- safe_people_tbl$name |> + purrr::reduce( + \(crate, u) { + safe_output( + crate, + connection = x, + path = path, + user = u, + logs_to = logs_to, + logs_from = logs_from + ) + }, + .init = crate ) # attach input args as attributes to the RO-Crate - attr(safe_people_crate, "audit_type") <- "Safe People" - attr(safe_people_crate, "path") <- path - attr(safe_people_crate, "project") <- project - attr(safe_people_crate, "user") <- user + attr(crate, "audit_type") <- "Safe People" + attr(crate, "path") <- path + attr(crate, "project") <- project + attr(crate, "user") <- user # return new RO-Crate - return(safe_people_crate) + return(crate) } diff --git a/R/audit_safe_project.R b/R/audit_safe_project.R index f482384..851d4f0 100644 --- a/R/audit_safe_project.R +++ b/R/audit_safe_project.R @@ -31,7 +31,7 @@ audit_safe_project.opal <- function( path = NULL ) { # local bindings - name <- principal <- project_tables_all <- subject <- table <- type <- NULL + name <- principal <- NULL # create RO-Create with projects and datasets, plus information of users that # have access to them @@ -73,8 +73,8 @@ audit_safe_project.opal <- function( # Safe Projects ---- crate <- project |> purrr::reduce( - \(crate, project_name) { - safe_project(crate, connection = x, project = project_name) + \(crate, p) { + safe_project(crate, connection = x, project = p) }, .init = crate ) @@ -82,8 +82,8 @@ audit_safe_project.opal <- function( # Safe Data ---- crate <- project |> purrr::reduce( - \(crate, project_name) { - safe_data(crate, connection = x, project = project_name) + \(crate, p) { + safe_data(crate, connection = x, project = p) }, .init = crate ) @@ -101,19 +101,20 @@ audit_safe_project.opal <- function( crate <- safe_setting(x, rocrate = crate) # Safe Outputs ---- - for (u in safe_people_tbl$name) { - # # suppress warnings, as some users might not have logs in the given period - # suppressWarnings({ - crate <- x |> - extract_safe_output( - path = path, - user = u, - logs_to = logs_to, - logs_from = logs_from, - rocrate = crate, - ) - # }) - } + crate <- safe_people_tbl$name |> + purrr::reduce( + \(crate, u) { + safe_output( + crate, + connection = x, + path = path, + user = u, + logs_to = logs_to, + logs_from = logs_from + ) + }, + .init = crate + ) # attach input args as attributes to the RO-Crate attr(crate, "audit_type") <- "Safe Project" From 0369e31dd3a5776fbbeb06b855b2508f21dcad21 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 18 Mar 2026 22:26:06 +0000 Subject: [PATCH 15/51] New build --- man/flatten_safe_data.Rd | 2 +- man/user_perm_entity.Rd | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/man/flatten_safe_data.Rd b/man/flatten_safe_data.Rd index d4925d8..1ae4c16 100644 --- a/man/flatten_safe_data.Rd +++ b/man/flatten_safe_data.Rd @@ -20,7 +20,7 @@ generated with the \code{\link[=extract_safe_data]{extract_safe_data()}} functio If not provided, extract all entities with \verb{@type = 'Dataset'}.} } \value{ -Data frame with safe data details. +Data frame with Safe Data details. } \description{ Flatten object with Safe Data details diff --git a/man/user_perm_entity.Rd b/man/user_perm_entity.Rd index 87d6e04..fac1c4c 100644 --- a/man/user_perm_entity.Rd +++ b/man/user_perm_entity.Rd @@ -2,18 +2,18 @@ % Please edit documentation in R/utils-opal.R \name{user_perm_entity} \alias{user_perm_entity} -\title{Create user permission entities} +\title{Create user/person permission entities} \usage{ -user_perm_entity(user, user_id, table, table_id, permission, ...) +user_perm_entity(person, person_id, asset, asset_id, permission, ...) } \arguments{ -\item{user}{String with user name.} +\item{person}{String with person name/username.} -\item{user_id}{String with user \verb{@id}.} +\item{person_id}{String with person \verb{@id}.} -\item{table}{String with dataset/table name.} +\item{asset}{String with dataset/table/resource name.} -\item{table_id}{String with dataset/table \verb{@id}.} +\item{asset_id}{String with dataset/table \verb{@id}.} \item{permission}{String with permission ('view', 'view-values', 'edit', 'edit-values' OR 'administrate').} @@ -24,6 +24,6 @@ user_perm_entity(user, user_id, table, table_id, permission, ...) List of \link[rocrateR:entity]{rocrateR::entity} objects } \description{ -Create user permission entities +Create user/person permission entities } \keyword{internal} From e9437131de72568f69452903b95fcb9937edf756 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 18 Mar 2026 22:26:29 +0000 Subject: [PATCH 16/51] Update tests to capture changes done to the code --- tests/testthat/test-audit_safe_people.R | 2 +- tests/testthat/test-audit_safe_project.R | 2 +- tests/testthat/test-audit_study.R | 2 +- tests/testthat/test-rocrate_report.R | 56 ++++++++++++++++-------- tests/testthat/test-utils-opal.R | 16 +++---- tests/testthat/test-utils-safe_data.R | 4 +- tests/testthat/test-utils-safe_people.R | 7 +-- tests/testthat/test-utils-safe_project.R | 17 ++++--- 8 files changed, 64 insertions(+), 42 deletions(-) diff --git a/tests/testthat/test-audit_safe_people.R b/tests/testthat/test-audit_safe_people.R index 07baf89..c02d645 100644 --- a/tests/testthat/test-audit_safe_people.R +++ b/tests/testthat/test-audit_safe_people.R @@ -63,7 +63,7 @@ test_that("opal method errors for unknown project", { project = "NON_EXISTENT_PROJECT", user = attr(opal_con, "PEOPLE") ), - "The given `project`, does not have any permissions set for the given `user`!", + "The `project = 'NON_EXISTENT_PROJECT'` was not found in the given Opal connection!", fixed = TRUE ) }) diff --git a/tests/testthat/test-audit_safe_project.R b/tests/testthat/test-audit_safe_project.R index a7b868b..8626a84 100644 --- a/tests/testthat/test-audit_safe_project.R +++ b/tests/testthat/test-audit_safe_project.R @@ -55,7 +55,7 @@ test_that("opal method errors for unknown project", { expect_error( audit_safe_project(opal_con, project = "NON_EXISTENT_PROJECT"), - "No data details were found", + "The `project = 'NON_EXISTENT_PROJECT'` was not found", fixed = TRUE ) diff --git a/tests/testthat/test-audit_study.R b/tests/testthat/test-audit_study.R index 24cac16..cc6c9d7 100644 --- a/tests/testthat/test-audit_study.R +++ b/tests/testthat/test-audit_study.R @@ -62,7 +62,7 @@ test_that("list method errors for unknown project", { expect_error( audit_study(list(demo = opal_con), project = "NON_EXISTENT_PROJECT"), - "No data details were found", + "The `project = 'NON_EXISTENT_PROJECT'` was not found", fixed = TRUE ) diff --git a/tests/testthat/test-rocrate_report.R b/tests/testthat/test-rocrate_report.R index afdcd0c..7fa7436 100644 --- a/tests/testthat/test-rocrate_report.R +++ b/tests/testthat/test-rocrate_report.R @@ -109,12 +109,19 @@ test_that("rocrate_report.rocrate returns expected structure", { extract_safe_setting = function(...) NULL, extract_safe_output = function(...) NULL, flatten_safe_people = function(...) { - tibble::tibble(id = "u1", name = "dsuser", project = "P1") + tibble::tibble(person_id = "u1", name = "dsuser", project = "P1") }, flatten_safe_project = function(...) { - tibble::tibble(id = "p1", project = "P1", table = "T1") + tibble::tibble( + project_id = "p1", + project = "P1", + asset_id = "t1", + asset = "T1" + ) + }, + flatten_safe_data = function(...) { + tibble::tibble(asset_id = "t1", asset = "T1") }, - flatten_safe_data = function(...) tibble::tibble(id = "t1", name = "T1"), flatten_safe_output = function(...) tibble::tibble(), flatten_user_perm_entity = function(...) NULL, .overview_diagram = function(...) list(diag_lst = "diag", diag_path = NULL), @@ -180,16 +187,21 @@ test_that("rocrate_report.list aggregates multiple servers", { fake_rocrate <- structure(list(), class = "rocrate") server_output <- list( - safe_people = tibble::tibble(id = "u1", name = "dsuser"), - safe_project = tibble::tibble(id = "p1", table = "T1"), - safe_data = tibble::tibble(id = "t1", name = "T1"), + safe_people = tibble::tibble(id_person = "u1", name = "dsuser"), + safe_project = tibble::tibble( + id_project = "p1", + project = "P1", + asset_id = "t1", + asset = "T1" + ), + safe_data = tibble::tibble(asset_id = "t1", asset = "T1"), safe_data_permissions = NULL, safe_setting = tibble::tibble(), safe_output = tibble::tibble(), overview_data = tibble::tibble( project = "P1", - table = "T1", - user = "dsuser" + asset = "T1", + person = "dsuser" ) ) @@ -223,7 +235,7 @@ test_that("rocrate_report.list aggregates multiple servers", { test_that(".tidy_overview collapses permissions correctly", { df <- tibble::tibble( project = "P1", - table = "T1", + asset = "T1", name = "dsuser", permission = c("read", "write") ) @@ -270,11 +282,14 @@ test_that("rocrate_report works end-to-end with real dsROCrate audit outputs", { opal_con <- opal_demo_con() # generate audit RO-Crate for a Safe Project - roc <- audit_safe_project( - opal_con, - project = "CNSIM", - path = tmp_dir - ) + # suppress warnings about missing logs + suppressWarnings({ + roc <- audit_safe_project( + opal_con, + project = "CNSIM", + path = tmp_dir + ) + }) out_file <- file.path(tmp_dir, "report.md") @@ -310,11 +325,14 @@ test_that("rocrate_report.character loads crate from disk", { opal_con <- opal_demo_con() # generate audit RO-Crate for a Safe Project - roc <- audit_safe_project( - opal_con, - project = "CNSIM", - path = tmp_dir - ) + # suppress warnings about missing logs + suppressWarnings({ + roc <- audit_safe_project( + opal_con, + project = "CNSIM", + path = tmp_dir + ) + }) # write crate to disk (real metadata file) path_to_rocrate_bag <- rocrateR::bag_rocrate(roc, path = tmp_dir) diff --git a/tests/testthat/test-utils-opal.R b/tests/testthat/test-utils-opal.R index 63899f5..dcc6835 100644 --- a/tests/testthat/test-utils-opal.R +++ b/tests/testthat/test-utils-opal.R @@ -154,10 +154,10 @@ test_that("update_project_datasets updates project entities of an RO-Crate", { test_that("user_perm_entity works for all values of 'permission'", { input_tbl <- tibble::tibble( - user = "dsuser", - user_id = "dsuser", - table = "tab1", - table_id = "tab1", + person = "dsuser", + person_id = "dsuser", + asset = "tab1", + asset_id = "tab1", permission = c( "view", "view-values", @@ -177,10 +177,10 @@ test_that("user_perm_entity works for all values of 'permission'", { test_that("user_perm_entity returns NULL for unknown 'permission'", { input_tbl <- tibble::tibble( - user = "dsuser", - user_id = "dsuser", - table = "tab1", - table_id = "tab1", + person = "dsuser", + person_id = "dsuser", + asset = "tab1", + asset_id = "tab1", permission = "INVALID" ) diff --git a/tests/testthat/test-utils-safe_data.R b/tests/testthat/test-utils-safe_data.R index c3ac3c0..c9036db 100644 --- a/tests/testthat/test-utils-safe_data.R +++ b/tests/testthat/test-utils-safe_data.R @@ -169,7 +169,7 @@ test_that("flatten_safe_data.rocrate extracts id and name correctly", { res <- flatten_safe_data(roc) expect_s3_class(res, "data.frame") - expect_true(all(c("id", "name") %in% names(res))) + expect_true(all(c("asset_id", "asset") %in% names(res))) expect_equal(nrow(res), 2) }) @@ -197,7 +197,7 @@ test_that("flatten_safe_data.rocrate filters by id argument", { res <- flatten_safe_data(roc, id = "#asset:A") expect_equal(nrow(res), 1) - expect_equal(res$id, "#asset:A") + expect_equal(res$asset_id, "#asset:A") }) test_that("flatten_safe_data.rocrate returns empty tibble on error", { diff --git a/tests/testthat/test-utils-safe_people.R b/tests/testthat/test-utils-safe_people.R index 31bc897..e34ef11 100644 --- a/tests/testthat/test-utils-safe_people.R +++ b/tests/testthat/test-utils-safe_people.R @@ -200,9 +200,10 @@ test_that("flatten_safe_people.rocrate extracts person metadata correctly", { expect_s3_class(res, "data.frame") expect_true(all( - c("id", "name", "given_name", "family_name", "organisation") %in% names(res) + c("person_id", "name", "given_name", "family_name", "organisation") %in% + names(res) )) - expect_equal(res$id, "#p1") + expect_equal(res$person_id, "#p1") expect_equal(res$name, "Jane Doe") }) @@ -222,7 +223,7 @@ test_that("flatten_safe_people.rocrate filters by id argument", { res <- flatten_safe_people(roc, id = "#p2") expect_equal(nrow(res), 1) - expect_equal(res$id, "#p2") + expect_equal(res$person_id, "#p2") }) test_that("flatten_safe_people.rocrate returns empty tibble on malformed input", { diff --git a/tests/testthat/test-utils-safe_project.R b/tests/testthat/test-utils-safe_project.R index 7482061..7e51e7c 100644 --- a/tests/testthat/test-utils-safe_project.R +++ b/tests/testthat/test-utils-safe_project.R @@ -215,8 +215,8 @@ test_that("flatten_safe_project.rocrate returns tibble", { # minimal stub for flatten_safe_data used internally flatten_safe_data <- function(x, ..., id = NULL) { tibble::tibble( - id = id, - name = c("table1", "table2") + asset_id = id, + asset = c("table1", "table2") ) } @@ -225,7 +225,10 @@ test_that("flatten_safe_project.rocrate returns tibble", { out <- flatten_safe_project(rocrate) expect_s3_class(out, "tbl_df") - expect_true(all(c("id", "project", "table") %in% names(out))) + print(names(out)) + expect_true(all( + c("project_id", "project", "asset_id", "asset") %in% names(out) + )) }) test_that("flatten_safe_project.rocrate extracts project metadata correctly", { @@ -258,8 +261,8 @@ test_that("flatten_safe_project.rocrate extracts project metadata correctly", { flatten_safe_data <- function(x, ..., id = NULL) { tibble::tibble( - id = id, - name = paste0("name_", id) + asset_id = id, + asset = paste0("name_", id) ) } @@ -268,7 +271,7 @@ test_that("flatten_safe_project.rocrate extracts project metadata correctly", { out <- flatten_safe_project(rocrate) expect_true("Project 1" %in% out$project) - expect_true(any(grepl("name_", out$table))) + expect_true(any(grepl("name_", out$asset))) }) test_that("flatten_safe_project.rocrate handles project without hasPart", { @@ -286,7 +289,7 @@ test_that("flatten_safe_project.rocrate handles project without hasPart", { out <- flatten_safe_project(rocrate) expect_equal(nrow(out), 1) - expect_true(is.na(out$table)) + expect_true(is.na(out$asset)) }) test_that("flatten_safe_project.rocrate returns empty tibble on error", { From 0bad5951c7efa3b26589fe046103b598722983eb Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 09:41:54 +0000 Subject: [PATCH 17/51] Add new internal generic, audit_engine, to power the auditing functions --- R/audit_engine.R | 134 +++++++++++++++++++++++++++++++++++++++++ R/audit_safe_people.R | 119 ++++-------------------------------- R/audit_safe_project.R | 99 ++++-------------------------- 3 files changed, 157 insertions(+), 195 deletions(-) create mode 100644 R/audit_engine.R diff --git a/R/audit_engine.R b/R/audit_engine.R new file mode 100644 index 0000000..5c5b025 --- /dev/null +++ b/R/audit_engine.R @@ -0,0 +1,134 @@ +#' Audit Engine +#' +#' @param x This can be a connection to a 'DataSHIELD' server (e.g., object with +#' the `opal` class, see [opalr::opal.login()]). +#' @param ... Other optional arguments, see full documentation for details. +#' @param project String with project name(s) from which to extra Safe Project +#' details. +#' @param user String with the user name for which to extract Safe People +#' details. +#' @param logs_from Lower limit timestamp to filter out the outputs generated +#' (default: `-Inf`, everything up to `logs_to`) +#' @param logs_to Upper limit timestamp to filter out the outputs generated +#' (default: `Inf`, everything from `logs_from` onwards). +#' @param path String with path pointing to the root of the RO-Crate. This will +#' be used to store log files. If not provided, logs will be stored within +#' the RO-Crate returned by this function. +#' +#' @returns Audit RO-Crate with 5 Safes Components. +#' @keywords internal +audit_engine <- function(x, ...) { + UseMethod("audit_engine") +} + +#' @rdname audit_engine +#' @export +audit_engine.opal <- function( + x, + ..., + project = NULL, + user = NULL, + logs_from = -Inf, + logs_to = Inf, + path = NULL +) { + # local bindings + name <- principal <- NULL + + # create RO-Create with the 5 safes profile + crate <- rocrateR::rocrate_5s() + + # validate Opal connection + is_opal_admin_con(x) + + # if `project` is missing, then extract all project names + if (is.null(project)) { + # extract all data sources + ds <- opalr::opal.datasources(x) + + project <- ds[, "name"] + } + + # Safe People ---- + # get users' details + safe_people_tbl <- opalr::opal.get(x, "/system/subject-profiles/") |> + dplyr::bind_rows() |> + dplyr::rename(name = principal) |> + # exclude system administrators from the report + dplyr::filter(!(tolower(name) %in% c("admin", "administrator"))) + + if (!is.null(user)) { + safe_people_tbl <- safe_people_tbl |> + dplyr::filter(tolower(name) %in% user) + + if (nrow(safe_people_tbl) == 0) { + stop( + sprintf( + "No Safe People details were found for the user: %s!", + paste0("'", user, "'", collapse = ", ") + ), + call. = FALSE + ) + } + } + + crate <- safe_people_tbl$name |> + purrr::reduce( + \(crate, u) { + safe_people( + crate, + connection = x, + user = u, + set_author = FALSE, + set_project = FALSE + ) + }, + .init = crate + ) + + # Safe Projects ---- + crate <- project |> + purrr::reduce( + \(crate, p) { + safe_project(crate, connection = x, project = p) + }, + .init = crate + ) + + # Safe Data ---- + crate <- project |> + purrr::reduce( + \(crate, p) { + safe_data(crate, connection = x, project = p) + }, + .init = crate + ) + + # remove permissions associated with admin users + non_admin_user_ids <- safe_people_tbl$name |> + purrr::map_chr(id_hash, prefix = "#person:") + admin_perm_ents <- crate$`@graph` |> + purrr::keep(\(x) grepl("^#perm:", getElement(x, "@id"))) |> + purrr::discard(\(x) getElement(x, "agent")[[1]] %in% non_admin_user_ids) + crate <- admin_perm_ents |> + purrr::reduce(rocrateR::remove_entity, .init = crate) + + # Safe Settings ---- + crate <- safe_setting(x, rocrate = crate) + + # Safe Outputs ---- + crate <- safe_people_tbl$name |> + purrr::reduce( + \(crate, u) { + safe_output( + crate, + connection = x, + path = path, + user = u, + logs_to = logs_to, + logs_from = logs_from + ) + }, + .init = crate + ) +} diff --git a/R/audit_safe_people.R b/R/audit_safe_people.R index 28d381d..6b069a6 100644 --- a/R/audit_safe_people.R +++ b/R/audit_safe_people.R @@ -3,20 +3,10 @@ #' Audit Safe People details from a 'DataSHIELD' server, an RO-Crate object or #' a file path pointing to an RO-Crate. #' -#' @inheritParams init -#' @param x This can be a connection to a 'DataSHIELD' server (e.g., object with -#' the `opal` class, see [opalr::opal.login()]). +#' @inheritParams audit_engine #' @param ... Other optional arguments, see full documentation for details. -#' @param user String with the user name for which to extract Safe People -#' details. -#' @param project String with project name(s) from which to extra Safe People -#' details. -#' @param logs_from Lower limit timestamp to filter out the outputs generated -#' (default: `-Inf`, everything up to `logs_to`) -#' @param logs_to Upper limit timestamp to filter out the outputs generated -#' (default: `Inf`, everything from `logs_from` onwards). #' -#' @returns Updated RO-Crate object with Safe People information. +#' @returns Audit RO-Crate with 5 Safes Components. #' @export #' # @examples @@ -43,102 +33,15 @@ audit_safe_people.opal <- function( logs_to = Inf, path = NULL ) { - # local bindings - name <- principal <- project_tables_all <- subject <- type <- NULL - - # create RO-Create with projects and datasets, plus information of users that - # have access to them - crate <- rocrateR::rocrate_5s() - - # validate Opal connection - is_opal_admin_con(x) - - # if `project` is missing, then extract all project names - if (is.null(project)) { - # extract all data sources - ds <- opalr::opal.datasources(x) - - project <- ds[, "name"] - } - - # Safe People ---- - # get users' details - safe_people_tbl <- opalr::opal.get(x, "/system/subject-profiles/") |> - dplyr::bind_rows() |> - dplyr::rename(name = principal) |> - # exclude system administrators from the report - dplyr::filter(!(tolower(name) %in% c("admin", "administrator"))) |> - dplyr::filter(tolower(name) == user) - - if (nrow(safe_people_tbl) == 0) { - stop( - sprintf( - "No Safe People details were found for the user '%s'!", - user - ), - call. = FALSE - ) - } - - crate <- safe_people_tbl$name |> - purrr::reduce( - \(crate, username) { - safe_people( - crate, - connection = x, - user = username, - set_author = FALSE, - set_project = FALSE - ) - }, - .init = crate - ) - - # Safe Projects ---- - crate <- project |> - purrr::reduce( - \(crate, p) { - safe_project(crate, connection = x, project = p) - }, - .init = crate - ) - - # Safe Data ---- - crate <- project |> - purrr::reduce( - \(crate, p) { - safe_data(crate, connection = x, project = p) - }, - .init = crate - ) - - # remove permissions associated with admin users - non_admin_user_ids <- safe_people_tbl$name |> - purrr::map_chr(id_hash, prefix = "#person:") - admin_perm_ents <- crate$`@graph` |> - purrr::keep(\(x) grepl("^#perm:", getElement(x, "@id"))) |> - purrr::discard(\(x) getElement(x, "agent")[[1]] %in% non_admin_user_ids) - crate <- admin_perm_ents |> - purrr::reduce(rocrateR::remove_entity, .init = crate) - - # Safe Settings ---- - crate <- safe_setting(x, rocrate = crate) - - # Safe Outputs ---- - crate <- safe_people_tbl$name |> - purrr::reduce( - \(crate, u) { - safe_output( - crate, - connection = x, - path = path, - user = u, - logs_to = logs_to, - logs_from = logs_from - ) - }, - .init = crate - ) + # generate audit crate + crate <- audit_engine( + x, + project = project, + user = user, + logs_from = logs_from, + logs_to = logs_to, + path = path + ) # attach input args as attributes to the RO-Crate attr(crate, "audit_type") <- "Safe People" diff --git a/R/audit_safe_project.R b/R/audit_safe_project.R index 851d4f0..92ff289 100644 --- a/R/audit_safe_project.R +++ b/R/audit_safe_project.R @@ -6,7 +6,7 @@ #' @inheritParams audit_safe_people #' @param ... Other optional arguments, see full documentation for details. #' -#' @returns Updated RO-Crate object with Safe Project information. +#' @returns Audit RO-Crate with 5 Safes Components. #' @export audit_safe_project <- function(x, ...) { UseMethod("audit_safe_project") @@ -25,96 +25,21 @@ audit_safe_project.default <- function(x, ...) { audit_safe_project.opal <- function( x, ..., - project = NULL, + project, + user = NULL, logs_from = -Inf, logs_to = Inf, path = NULL ) { - # local bindings - name <- principal <- NULL - - # create RO-Create with projects and datasets, plus information of users that - # have access to them - crate <- rocrateR::rocrate_5s() - - # validate Opal connection - is_opal_admin_con(x) - - # if `project` is missing, then extract all project names - if (is.null(project)) { - # extract all data sources - ds <- opalr::opal.datasources(x) - - project <- ds[, "name"] - } - - # Safe People ---- - # get users' details - safe_people_tbl <- opalr::opal.get(x, "/system/subject-profiles/") |> - dplyr::bind_rows() |> - dplyr::rename(name = principal) |> - # exclude system administrators from the report - dplyr::filter(!(tolower(name) %in% c("admin", "administrator"))) - - crate <- safe_people_tbl$name |> - purrr::reduce( - \(crate, username) { - safe_people( - crate, - connection = x, - user = username, - set_author = FALSE, - set_project = FALSE - ) - }, - .init = crate - ) - - # Safe Projects ---- - crate <- project |> - purrr::reduce( - \(crate, p) { - safe_project(crate, connection = x, project = p) - }, - .init = crate - ) - - # Safe Data ---- - crate <- project |> - purrr::reduce( - \(crate, p) { - safe_data(crate, connection = x, project = p) - }, - .init = crate - ) - - # remove permissions associated with admin users - non_admin_user_ids <- safe_people_tbl$name |> - purrr::map_chr(id_hash, prefix = "#person:") - admin_perm_ents <- crate$`@graph` |> - purrr::keep(\(x) grepl("^#perm:", getElement(x, "@id"))) |> - purrr::discard(\(x) getElement(x, "agent")[[1]] %in% non_admin_user_ids) - crate <- admin_perm_ents |> - purrr::reduce(rocrateR::remove_entity, .init = crate) - - # Safe Settings ---- - crate <- safe_setting(x, rocrate = crate) - - # Safe Outputs ---- - crate <- safe_people_tbl$name |> - purrr::reduce( - \(crate, u) { - safe_output( - crate, - connection = x, - path = path, - user = u, - logs_to = logs_to, - logs_from = logs_from - ) - }, - .init = crate - ) + # generate audit crate + crate <- audit_engine( + x, + project = project, + user = user, + logs_from = logs_from, + logs_to = logs_to, + path = path + ) # attach input args as attributes to the RO-Crate attr(crate, "audit_type") <- "Safe Project" From 733d77839b8763ab532df29b6e943a587be389ab Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 11:35:03 +0000 Subject: [PATCH 18/51] Update audit_cr8tor from a single function to an S3 generic, so the input can take different objects, including path to cr8tor bundle and a cr8tor bundle list --- R/audit_cr8tor.R | 51 ++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/R/audit_cr8tor.R b/R/audit_cr8tor.R index 4bb10aa..f561d6b 100644 --- a/R/audit_cr8tor.R +++ b/R/audit_cr8tor.R @@ -4,28 +4,41 @@ #' with pre-deployment governance details. This then can be rendered with #' [rocrate_report()]. #' -#' @param path Path to cr8tor archive. +#' @param x Path to cr8tor archive / governance bundle. #' @param ... Additional arguments for [rocrateR::load_rocrate]. -#' @return RO-Crate audit object +#' @return RO-Crate audit object. #' #' @references https://karectl-crates.github.io/cr8tor-metamodel/ #' @export -audit_cr8tor <- function(path, ...) { - bundle <- load_cr8tor_bundle(path, ...) +audit_cr8tor <- function(x, ...) { + UseMethod("audit_cr8tor") +} + +#' @rdname audit_cr8tor +#' @export +audit_cr8tor.character <- function(x, ...) { + bundle <- load_cr8tor_bundle(x, ...) + # call next method + audit_cr8tor(bundle) +} + +#' @rdname audit_cr8tor +#' @export +audit_cr8tor.cr8tor <- function(x, ...) { audit <- list( - metadata = extract_cr8tor_metadata(bundle), - integrity = extract_integrity_cr8tor(bundle), - safe_people = extract_safe_people_cr8tor(bundle), - safe_projects = extract_safe_projects_cr8tor(bundle), - safe_data = extract_safe_data_cr8tor(bundle), - safe_settings = extract_safe_settings_cr8tor(bundle), - safe_outputs = extract_safe_outputs_cr8tor(bundle), - user_projects = extract_user_projects_cr8tor(bundle), - user_groups = extract_user_groups_cr8tor(bundle), - groups = extract_groups_cr8tor(bundle), - permissions = extract_permissions_cr8tor(bundle) #, - # lineage = extract_lineage_cr8tor(bundle), + metadata = extract_cr8tor_metadata(x), + integrity = extract_integrity_cr8tor(x), + safe_people = extract_safe_people_cr8tor(x), + safe_projects = extract_safe_projects_cr8tor(x), + safe_data = extract_safe_data_cr8tor(x), + safe_settings = extract_safe_settings_cr8tor(x), + safe_outputs = extract_safe_outputs_cr8tor(x), + user_projects = extract_user_projects_cr8tor(x), + user_groups = extract_user_groups_cr8tor(x), + groups = extract_groups_cr8tor(x), + permissions = extract_permissions_cr8tor(x) #, + # lineage = extract_lineage_cr8tor(x), ) as_rocrate_audit(audit) @@ -67,12 +80,12 @@ as_rocrate_audit <- function(audit) { rc <- rc |> add_safe_project_entities_cr8tor( audit$safe_projects, - audit$safe_data$tables + audit$safe_data$assets ) # ---- Safe Data ---- rc <- rc |> - add_safe_data_entities_cr8tor(audit$safe_data$tables) + add_safe_data_entities_cr8tor(audit$safe_data$assets) # ---- Permissions ---- rc <- rc |> @@ -80,7 +93,7 @@ as_rocrate_audit <- function(audit) { expand_group_permissions_to_users( perm_tbl = audit$permissions, membership_tbl = audit$user_groups, - data_tbl = audit$safe_data$tables + data_tbl = audit$safe_data$assets ) |> dedupe_effective_permissions() ) From 5dfb6d057dca5a38551c5312e13fe47efe7c61bf Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 11:36:05 +0000 Subject: [PATCH 19/51] Phase out the internal load_rocrate in favour of rocrateR::load_rocrate --- R/rocrate_report.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/rocrate_report.R b/R/rocrate_report.R index 1841e5a..11041cb 100644 --- a/R/rocrate_report.R +++ b/R/rocrate_report.R @@ -28,7 +28,7 @@ rocrate_report.character <- function( max_line_length = 200 ) { # attempt loading the RO-Crate - rocrate <- load_rocrate(x) + rocrate <- rocrateR::load_rocrate(x) # call the next generic method rocrate |> From f79e6e1fa77a176a79bd2d15bbcfbf1725f02c60 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 11:36:40 +0000 Subject: [PATCH 20/51] Phase out internal load_rocrate in favour of rocrateR::load_rocrate --- R/utils-rocrate.R | 69 ----------------------------------------------- 1 file changed, 69 deletions(-) diff --git a/R/utils-rocrate.R b/R/utils-rocrate.R index a151a47..845aff3 100644 --- a/R/utils-rocrate.R +++ b/R/utils-rocrate.R @@ -42,72 +42,3 @@ load_content <- function(rocrate, roc_path) { return(rocrate) } - -#' Load RO-Crate from file -#' -#' @param x String with path to RO-Crate -#' -#' @returns RO-Crate object. -#' @keywords internal -load_rocrate <- function(x) { - # check if the given file, `x`, exists - if (!file.exists(x)) { - stop("The given file:\n `", x, "`\nis not a valid path!", call. = FALSE) - } - - # initialise local variables - roc_path <- rocrate <- NULL - - # check if the given path points to an RO-Crate bag (zip file) - if (grepl("zip$", tolower(x))) { - # create temp directory to extract contents of RO-Crate - tempdir_name <- file.path(tempdir(), digest::digest(Sys.time())) - dir.create(tempdir_name, recursive = TRUE) - on.exit(unlink(tempdir_name, force = TRUE, recursive = TRUE)) - - # unbag RO-Crate - roc_path <- tryCatch( - { - rocrateR::unbag_rocrate(x, output = tempdir_name, quiet = TRUE) - }, - error = function(e) { - x - } - ) - } else { - roc_path <- x - } - - # load RO-Crate - rocrate <- tryCatch( - { - # list JSON files, if roc_path points to a directory - if (dir.exists(roc_path)) { - roc_path_files <- list.files( - roc_path, - pattern = "[json|JSON]$", - recursive = TRUE, - full.names = TRUE - ) - roc_path_files <- roc_path_files[1] - roc_path <- dirname(roc_path_files) - } else { - roc_path_files <- roc_path - roc_path <- dirname(roc_path) - } - rocrateR::read_rocrate(roc_path_files) - }, - error = function(e) { - NULL - } - ) - - # check if the RO-Crate was loaded correctly - if (is.null(rocrate)) { - stop("Unable to load an RO-Crate from the given file:\n `", x, "`") - } - - # check if any of the entities with `@type = 'File'` have empty `content` - rocrate <- rocrate |> - load_content(roc_path = roc_path) -} From 263af05ccaef9e6e08981d06e3362c5837015e6b Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 11:39:15 +0000 Subject: [PATCH 21/51] Update internal functions to use asset, instead of table, table_id >> asset_id, etc. to standardise naming convention across audits --- R/utils-cr8tor.R | 76 ++++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/R/utils-cr8tor.R b/R/utils-cr8tor.R index 4919cac..5097daa 100644 --- a/R/utils-cr8tor.R +++ b/R/utils-cr8tor.R @@ -17,7 +17,7 @@ add_safe_people_entities_cr8tor <- function(rc, people_tbl, membership_tbl) { for (i in seq_len(nrow(people_tbl))) { p <- people_tbl[i, ] - person_id <- paste0("#person:", digest::digest(p$username)) + person_id <- id_hash("#person:", p$username) # projects user belongs to projs <- membership_tbl |> @@ -26,7 +26,7 @@ add_safe_people_entities_cr8tor <- function(rc, people_tbl, membership_tbl) { unique() memberOf <- purrr::map(projs, \(pr) { - list(`@id` = paste0("#project:", pr)) + list(`@id` = id_hash("#project:", pr)) }) display_name <- paste(p$given_name, p$family_name) @@ -58,26 +58,26 @@ add_safe_people_entities_cr8tor <- function(rc, people_tbl, membership_tbl) { #' @param proj_tbl Tibble with project metadata. #' Columns: id, name. #' @param data_tbl Tibble with dataset metadata. -#' Columns: project, table. +#' Columns: project, asset. #' #' @return Updated RO-Crate #' @noRd add_safe_project_entities_cr8tor <- function(rc, proj_tbl, data_tbl) { # local bindings - project <- NULL + asset <- project <- NULL now <- format(Sys.time(), "%Y-%m-%dT%H:%M:%OS3Z", tz = "UTC") for (i in seq_len(nrow(proj_tbl))) { project_id <- proj_tbl$id[i] project <- proj_tbl$name[i] - project_eid <- paste0("#project:", project_id) + project_eid <- id_hash("#project:", project_id) ds_ids <- data_tbl |> dplyr::filter(project == project_id) |> - dplyr::pull(table) |> + dplyr::pull(asset) |> unique() |> - (\(x) paste0("#dataset:", x))() + (\(x) id_hash("#asset:", x))() has_part <- purrr::map(ds_ids, \(x) list(`@id` = x)) @@ -104,21 +104,21 @@ add_safe_project_entities_cr8tor <- function(rc, proj_tbl, data_tbl) { #' #' @param rc RO-Crate object, see [rocrateR::rocrate]. #' @param tbl Tibble with dataset metadata. -#' Columns: project, table. +#' Columns: project, asset. #' #' @return Updated RO-Crate #' @noRd add_safe_data_entities_cr8tor <- function(rc, tbl) { for (i in seq_len(nrow(tbl))) { - dataset_id <- paste0("#dataset:", tbl$table[i]) - project_id <- paste0("#project:", tbl$project[i]) + dataset_id <- id_hash("#asset:", tbl$asset[i]) + project_id <- id_hash("#project:", tbl$project[i]) rc <- rc |> rocrateR::add_entity( rocrateR::entity( id = dataset_id, type = "Dataset", - name = tbl$table[i], + name = tbl$asset[i], isPartOf = list(`@id` = project_id) ) ) @@ -140,7 +140,7 @@ add_safe_data_entities_cr8tor <- function(rc, tbl) { add_group_entities_cr8tor <- function(rc, groups_tbl) { for (i in seq_len(nrow(groups_tbl))) { g <- groups_tbl[i, ] - gid <- paste0("#group:", g$group_id) + gid <- id_hash("#group:", g$group_id) rc <- rc |> rocrateR::add_entity( @@ -149,7 +149,7 @@ add_group_entities_cr8tor <- function(rc, groups_tbl) { type = "Organization", name = g$group_id, description = g$description, - parentOrganization = list(`@id` = paste0("#project:", g$project)) + parentOrganization = list(`@id` = id_hash("#project:", g$project)) ) ) } @@ -159,12 +159,12 @@ add_group_entities_cr8tor <- function(rc, groups_tbl) { #' Add Permission entities (Opal-level) #' -#' Expands user-table permission matrix into RO-Crate Action entities. +#' Expands user-asset permission matrix into RO-Crate Action entities. #' Uses `user_perm_entity()` to generate Read/Write/Control actions. #' #' @param rc RO-Crate object, see [rocrateR::rocrate]. #' @param perm_expanded_tbl Tibble with user permissions expanded. -#' Columns: username, table, permission. +#' Columns: username, asset, permission. #' #' @return Updated RO-Crate #' @noRd @@ -172,14 +172,14 @@ add_permission_entities_cr8tor <- function(rc, perm_expanded_tbl) { for (i in seq_len(nrow(perm_expanded_tbl))) { row <- perm_expanded_tbl[i, ] - user_id <- id_hash("#person:", row$username) - table_id <- id_hash("#asset:", row$table) + person_id <- id_hash("#person:", row$username) + asset_id <- id_hash("#asset:", row$asset) ents <- user_perm_entity( - user = row$username, - user_id = user_id, - asset = row$table, - asset_id = table_id, + person = row$username, + person_id = person_id, + asset = row$asset, + asset_id = asset_id, permission = row$permission ) @@ -200,7 +200,7 @@ add_safe_setting_entities_cr8tor <- function(rc, tbl) { rc <- rc |> rocrateR::add_entity( rocrateR::entity( - id = paste0("#setting:", nm), + id = id_hash("#setting:", nm), type = "PropertyValue", name = nm, value = as.character(tbl[[i]]) @@ -227,14 +227,14 @@ add_safe_output_entities_cr8tor <- function(rc, tbl) { ) } -#' Keep strongest permission per user-table pair +#' Keep strongest permission per user-asset pair #' -#' @param perm_tbl Tibble with username, table, permission. +#' @param perm_tbl Tibble with username, asset, permission. #' @return Deduplicated tibble #' @noRd dedupe_effective_permissions <- function(perm_tbl) { # local bindings - permission <- strength <- username <- NULL + asset <- permission <- strength <- username <- NULL strength_order <- c( "view", "view-values", @@ -247,13 +247,13 @@ dedupe_effective_permissions <- function(perm_tbl) { dplyr::mutate( strength = match(permission, strength_order) ) |> - dplyr::group_by(username, table) |> + dplyr::group_by(username, asset) |> dplyr::slice_max(strength, n = 1, with_ties = FALSE) |> dplyr::ungroup() |> dplyr::select(-strength) } -#' Expand cr8tor group permissions to user-table permissions +#' Expand cr8tor group permissions to user-asset permissions #' #' Converts: #' Group → Project permissions @@ -264,7 +264,7 @@ dedupe_effective_permissions <- function(perm_tbl) { #' @param membership_tbl Tibble from extract_user_groups_cr8tor(). #' @param data_tbl Tibble from extract_safe_data_cr8tor()$tables. #' -#' @return Tibble with username, project, table, permission +#' @return Tibble with username, project, asset, permission #' @noRd expand_group_permissions_to_users <- function( perm_tbl, @@ -272,7 +272,7 @@ expand_group_permissions_to_users <- function( data_tbl ) { # local bindings - project <- role <- user <- username <- NULL + asset <- project <- role <- user <- username <- NULL # map cr8tor role to Opal permission role_to_permission <- function(role) { @@ -308,7 +308,7 @@ expand_group_permissions_to_users <- function( dplyr::transmute( username, project, - table, + asset, permission = role_to_permission(role) ) |> dplyr::distinct() @@ -363,9 +363,9 @@ extract_integrity_cr8tor <- function(bundle) { extract_lineage_cr8tor <- function(bundle) { users <- extract_safe_people_cr8tor(bundle)$users$username proj <- extract_safe_projects_cr8tor(bundle)$name - tables <- extract_safe_data_cr8tor(bundle)$tables$table + assets <- extract_safe_data_cr8tor(bundle)$assets$asset - expand.grid(user = users, project = proj, table = tables) + expand.grid(user = users, project = proj, asset = assets) } #' Extract Safe Data (datasets & tables) @@ -385,7 +385,7 @@ extract_safe_data_cr8tor <- function(bundle) { ing_yaml <- yaml::yaml.load(paste(ing$content[[1]], collapse = "\n")) proj_tbl <- extract_safe_projects_cr8tor(bundle) - tables <- ing_yaml$datasets |> + assets <- ing_yaml$datasets |> purrr::map(function(ds) { # project name from locations yaml_project <- ds$locations[[1]]$opal_project_name %||% NA_character_ @@ -396,7 +396,7 @@ extract_safe_data_cr8tor <- function(bundle) { tibble::tibble( project = project_id, dataset = ds$name, - table = tbl$name, + asset = tbl$name, n_cols = length(tbl$columns) ) }) |> @@ -405,8 +405,8 @@ extract_safe_data_cr8tor <- function(bundle) { purrr::list_c() tibble::tibble( - tables = tables, - n_tables = nrow(tables) + assets = assets, + n_assets = nrow(assets) ) } @@ -655,7 +655,7 @@ find_bagit_root <- function(path) { link_people_to_root <- function(rc, usernames) { authors <- lapply(usernames, \(u) { - list(`@id` = paste0("#person:", digest::digest(u))) + list(`@id` = id_hash("#person:", u)) }) rocrateR::add_entity_value( @@ -719,7 +719,7 @@ load_cr8tor_bundle <- function(path, ...) { config = config, root = tmp_root ), - class = "cr8tor" + class = c("cr8tor", "cr8tor_bundle", "list") ) } From 80ebdfbb8c7b07d970fdeac51a7f465212eb04f1 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 11:41:12 +0000 Subject: [PATCH 22/51] Add initial draft of print generic for cr8tor/cr8tor_bundle objects --- R/print.R | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 R/print.R diff --git a/R/print.R b/R/print.R new file mode 100644 index 0000000..d963720 --- /dev/null +++ b/R/print.R @@ -0,0 +1,31 @@ +#' @export +print.cr8tor_bundle <- function(x, ...) { + cat("\n") + + is_valid_roc <- function(x) { + inherits(x$rocrate, "rocrate") && + rocrateR::is_rocrate(x$rocrate, error = FALSE) + } + + if (is_valid_roc(x)) { + cat("\U2714 Valid RO-Crate\n") + } else { + cat("\U2716 Invalid RO-Crate\n") + } + + # resources <- unique(basename(x$resources)) + # if (length(resources) > 0) { + # cat("Resources: ", paste0(resources, collapse = ", "), "\n") + # } + # if (length(x$errors)) { + # cat("\nErrors:\n") + # cat(paste0(" - ", x$errors, collapse = "\n"), "\n") + # } + # + # if (length(x$warnings)) { + # cat("\nWarnings:\n") + # cat(paste0(" - ", x$warnings, collapse = "\n"), "\n") + # } + + invisible(x) +} From a747f601a0b1d48cea5e375f56b1952bf4a51fff Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 11:41:42 +0000 Subject: [PATCH 23/51] New build --- NAMESPACE | 4 ++++ man/audit_cr8tor.Rd | 12 +++++++--- man/audit_engine.Rd | 48 +++++++++++++++++++++++++++++++++++++++ man/audit_safe_people.Rd | 4 ++-- man/audit_safe_project.Rd | 10 +++++--- man/audit_study.Rd | 2 +- man/load_rocrate.Rd | 18 --------------- man/safe_engine.Rd | 21 +++++++++++++++++ 8 files changed, 92 insertions(+), 27 deletions(-) create mode 100644 man/audit_engine.Rd delete mode 100644 man/load_rocrate.Rd create mode 100644 man/safe_engine.Rd diff --git a/NAMESPACE b/NAMESPACE index 59f7d23..b0b365c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,5 +1,8 @@ # Generated by roxygen2: do not edit by hand +S3method(audit_cr8tor,character) +S3method(audit_cr8tor,cr8tor) +S3method(audit_engine,opal) S3method(audit_safe_people,default) S3method(audit_safe_people,opal) S3method(audit_safe_project,default) @@ -29,6 +32,7 @@ S3method(flatten_safe_setting,default) S3method(flatten_safe_setting,rocrate) S3method(init,opal) S3method(init,rocrate) +S3method(print,cr8tor_bundle) S3method(rocrate_report,character) S3method(rocrate_report,default) S3method(rocrate_report,list) diff --git a/man/audit_cr8tor.Rd b/man/audit_cr8tor.Rd index 911dd71..9a77608 100644 --- a/man/audit_cr8tor.Rd +++ b/man/audit_cr8tor.Rd @@ -2,17 +2,23 @@ % Please edit documentation in R/audit_cr8tor.R \name{audit_cr8tor} \alias{audit_cr8tor} +\alias{audit_cr8tor.character} +\alias{audit_cr8tor.cr8tor} \title{Audit cr8tor project archive} \usage{ -audit_cr8tor(path, ...) +audit_cr8tor(x, ...) + +\method{audit_cr8tor}{character}(x, ...) + +\method{audit_cr8tor}{cr8tor}(x, ...) } \arguments{ -\item{path}{Path to cr8tor archive.} +\item{x}{Path to cr8tor archive / governance bundle.} \item{...}{Additional arguments for \link[rocrateR:load_rocrate]{rocrateR::load_rocrate}.} } \value{ -RO-Crate audit object +RO-Crate audit object. } \description{ This audit loads a cr8tor project archive and generates an RO-Crate object diff --git a/man/audit_engine.Rd b/man/audit_engine.Rd new file mode 100644 index 0000000..2d7ca4e --- /dev/null +++ b/man/audit_engine.Rd @@ -0,0 +1,48 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/audit_engine.R +\name{audit_engine} +\alias{audit_engine} +\alias{audit_engine.opal} +\title{Audit Engine} +\usage{ +audit_engine(x, ...) + +\method{audit_engine}{opal}( + x, + ..., + project = NULL, + user = NULL, + logs_from = -Inf, + logs_to = Inf, + path = NULL +) +} +\arguments{ +\item{x}{This can be a connection to a 'DataSHIELD' server (e.g., object with +the \code{opal} class, see \code{\link[opalr:opal.login]{opalr::opal.login()}}).} + +\item{...}{Other optional arguments, see full documentation for details.} + +\item{project}{String with project name(s) from which to extra Safe Project +details.} + +\item{user}{String with the user name for which to extract Safe People +details.} + +\item{logs_from}{Lower limit timestamp to filter out the outputs generated +(default: \code{-Inf}, everything up to \code{logs_to})} + +\item{logs_to}{Upper limit timestamp to filter out the outputs generated +(default: \code{Inf}, everything from \code{logs_from} onwards).} + +\item{path}{String with path pointing to the root of the RO-Crate. This will +be used to store log files. If not provided, logs will be stored within +the RO-Crate returned by this function.} +} +\value{ +Audit RO-Crate with 5 Safes Components. +} +\description{ +Audit Engine +} +\keyword{internal} diff --git a/man/audit_safe_people.Rd b/man/audit_safe_people.Rd index 2ec7bda..e8a7e16 100644 --- a/man/audit_safe_people.Rd +++ b/man/audit_safe_people.Rd @@ -29,7 +29,7 @@ the \code{opal} class, see \code{\link[opalr:opal.login]{opalr::opal.login()}}). \item{user}{String with the user name for which to extract Safe People details.} -\item{project}{String with project name(s) from which to extra Safe People +\item{project}{String with project name(s) from which to extra Safe Project details.} \item{logs_from}{Lower limit timestamp to filter out the outputs generated @@ -43,7 +43,7 @@ be used to store log files. If not provided, logs will be stored within the RO-Crate returned by this function.} } \value{ -Updated RO-Crate object with Safe People information. +Audit RO-Crate with 5 Safes Components. } \description{ Audit Safe People details from a 'DataSHIELD' server, an RO-Crate object or diff --git a/man/audit_safe_project.Rd b/man/audit_safe_project.Rd index 6b26c6c..f39c5fd 100644 --- a/man/audit_safe_project.Rd +++ b/man/audit_safe_project.Rd @@ -13,7 +13,8 @@ audit_safe_project(x, ...) \method{audit_safe_project}{opal}( x, ..., - project = NULL, + project, + user = NULL, logs_from = -Inf, logs_to = Inf, path = NULL @@ -25,7 +26,10 @@ the \code{opal} class, see \code{\link[opalr:opal.login]{opalr::opal.login()}}). \item{...}{Other optional arguments, see full documentation for details.} -\item{project}{String with project name(s) from which to extra Safe People +\item{project}{String with project name(s) from which to extra Safe Project +details.} + +\item{user}{String with the user name for which to extract Safe People details.} \item{logs_from}{Lower limit timestamp to filter out the outputs generated @@ -39,7 +43,7 @@ be used to store log files. If not provided, logs will be stored within the RO-Crate returned by this function.} } \value{ -Updated RO-Crate object with Safe Project information. +Audit RO-Crate with 5 Safes Components. } \description{ Audit Safe Project details from a 'DataSHIELD' server, an RO-Crate object or diff --git a/man/audit_study.Rd b/man/audit_study.Rd index b6efab8..e9e9976 100644 --- a/man/audit_study.Rd +++ b/man/audit_study.Rd @@ -35,7 +35,7 @@ the \code{opal} class, see \code{\link[opalr:opal.login]{opalr::opal.login()}}). \item{...}{Other optional arguments, see full documentation for details.} -\item{project}{String with project name(s) from which to extra Safe People +\item{project}{String with project name(s) from which to extra Safe Project details.} \item{logs_from}{Lower limit timestamp to filter out the outputs generated diff --git a/man/load_rocrate.Rd b/man/load_rocrate.Rd deleted file mode 100644 index 1d2f9c8..0000000 --- a/man/load_rocrate.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils-rocrate.R -\name{load_rocrate} -\alias{load_rocrate} -\title{Load RO-Crate from file} -\usage{ -load_rocrate(x) -} -\arguments{ -\item{x}{String with path to RO-Crate} -} -\value{ -RO-Crate object. -} -\description{ -Load RO-Crate from file -} -\keyword{internal} diff --git a/man/safe_engine.Rd b/man/safe_engine.Rd new file mode 100644 index 0000000..51834f3 --- /dev/null +++ b/man/safe_engine.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/safe_engine.R +\name{safe_engine} +\alias{safe_engine} +\title{Generic Safe Principle Engine} +\usage{ +safe_engine(roc, entities = NULL, link_fns = NULL, attrs = NULL) +} +\arguments{ +\item{roc}{RO-Crate object, see \link[rocrateR:rocrate]{rocrateR::rocrate}.} + +\item{entities}{List of entities to be added.} + +\item{link_fns}{List of functions performing the linking.} + +\item{attrs}{Named list of attributes to attach.} +} +\description{ +Internal engine used by all safe_*() methods. +} +\keyword{internal} From d93ef828dd824fe4f737293cd1425ced79ce42b5 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 19 Mar 2026 11:41:56 +0000 Subject: [PATCH 24/51] Minor changes to tests --- tests/testthat/test-audit_safe_people.R | 2 +- tests/testthat/test-audit_safe_project.R | 3 ++- tests/testthat/test-rocrate_report.R | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/testthat/test-audit_safe_people.R b/tests/testthat/test-audit_safe_people.R index c02d645..76df67d 100644 --- a/tests/testthat/test-audit_safe_people.R +++ b/tests/testthat/test-audit_safe_people.R @@ -24,7 +24,7 @@ test_that("opal method returns RO-Crate with expected attributes", { expect_s3_class(crate, "rocrate") expect_equal(attr(crate, "audit_type"), "Safe People") - expect_true("project" %in% names(attributes(crate))) + expect_true("user" %in% names(attributes(crate))) # close connection to OBiBa's Opal demo server opalr::opal.logout(opal_con) diff --git a/tests/testthat/test-audit_safe_project.R b/tests/testthat/test-audit_safe_project.R index 8626a84..4f481b9 100644 --- a/tests/testthat/test-audit_safe_project.R +++ b/tests/testthat/test-audit_safe_project.R @@ -18,7 +18,7 @@ test_that("opal method returns RO-Crate with expected attributes", { # ignore warning about empty logs suppressWarnings( - crate <- audit_safe_project(opal_con) + crate <- audit_safe_project(opal_con, project = attr(opal_con, "PROJECT")) ) expect_s3_class(crate, "rocrate") @@ -71,6 +71,7 @@ test_that("path argument is stored as attribute", { suppressWarnings( crate <- audit_safe_project( opal_con, + project = attr(opal_con, "PROJECT"), path = tempdir() ) ) diff --git a/tests/testthat/test-rocrate_report.R b/tests/testthat/test-rocrate_report.R index 7fa7436..f9bd577 100644 --- a/tests/testthat/test-rocrate_report.R +++ b/tests/testthat/test-rocrate_report.R @@ -8,7 +8,7 @@ test_that("rocrate_report.default errors", { test_that("rocrate_report.character errors for invalid path", { expect_error( rocrate_report("nonexistent_path", render = FALSE), - "is not a valid path" + "The provided path does not exist" ) }) @@ -25,7 +25,7 @@ test_that("rocrate_report.character errors if read_rocrate fails", { code = { expect_error( rocrate_report(tmp_file, render = FALSE), - "Unable to load an RO-Crate" + "Could not determine how to load RO-Crate from provided input" ) }, .package = "rocrateR" From 8c02fed0ed537c7fc2b2819a7d9cd6e91852416d Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 20 Mar 2026 15:23:29 +0000 Subject: [PATCH 25/51] Update audit_engine to require project and check if the given values are valid projects on the provided connection --- R/audit_engine.R | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/R/audit_engine.R b/R/audit_engine.R index 5c5b025..ef2be72 100644 --- a/R/audit_engine.R +++ b/R/audit_engine.R @@ -41,12 +41,23 @@ audit_engine.opal <- function( # validate Opal connection is_opal_admin_con(x) - # if `project` is missing, then extract all project names + # if `project` is missing, then ~extract all project names~ error if (is.null(project)) { - # extract all data sources - ds <- opalr::opal.datasources(x) + stop("A `project` name is required!", call. = FALSE) + } - project <- ds[, "name"] + # extract all data sources to verify `project` contains a valid value. + ds <- opalr::opal.datasources(x) + server_prjs <- ds[, "name"] + idx <- project %in% server_prjs + if (!all(idx)) { + stop( + "The following project", + ifelse(length(idx) == 1, " is ", "s are "), + "not valid: \n", + paste0(" - ", project[!idx], collapse = "\n"), + call. = FALSE + ) } # Safe People ---- From 3fd36d57ea366bca3c168495c3867280743dbef7 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 20 Mar 2026 15:24:00 +0000 Subject: [PATCH 26/51] Update safe_people.opal generic to include givenName and familyName as properties (if available) --- R/safe_people.R | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/R/safe_people.R b/R/safe_people.R index b1bd2c9..4426eb5 100644 --- a/R/safe_people.R +++ b/R/safe_people.R @@ -109,6 +109,14 @@ safe_people.opal <- function( id = c(getElement(user, "@id"), getElement(user, "id")), type = "Person", name = c(getElement(user, "name"), getElement(user, "username")), + givenName = c( + getElement(user, "givenName"), + getElement(user, "firstname") + ), + familyName = c( + getElement(user, "familyName"), + getElement(user, "surname") + ), affiliation = list(`@id` = c(getElement(user, "affiliation"))) ) } else { From ee0ffbbd4130ff964951f8a912f4289aac7f961b Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 20 Mar 2026 15:24:46 +0000 Subject: [PATCH 27/51] Update audit_cr8tor and supporting utilitarian functions to make no assumptions of the project names and format --- R/audit_cr8tor.R | 9 +++-- R/utils-cr8tor.R | 85 +++++++++++++++++++++++++++++++++--------------- 2 files changed, 65 insertions(+), 29 deletions(-) diff --git a/R/audit_cr8tor.R b/R/audit_cr8tor.R index f561d6b..f688998 100644 --- a/R/audit_cr8tor.R +++ b/R/audit_cr8tor.R @@ -6,7 +6,8 @@ #' #' @param x Path to cr8tor archive / governance bundle. #' @param ... Additional arguments for [rocrateR::load_rocrate]. -#' @return RO-Crate audit object. +#' +#' @returns Audit RO-Crate with 5 Safes Components. #' #' @references https://karectl-crates.github.io/cr8tor-metamodel/ #' @export @@ -91,7 +92,11 @@ as_rocrate_audit <- function(audit) { rc <- rc |> add_permission_entities_cr8tor( expand_group_permissions_to_users( - perm_tbl = audit$permissions, + perm_tbl = audit$permissions |> + dplyr::left_join( + audit$safe_projects, + by = c("project" = "project_id") + ), membership_tbl = audit$user_groups, data_tbl = audit$safe_data$assets ) |> diff --git a/R/utils-cr8tor.R b/R/utils-cr8tor.R index 5097daa..2f3cf47 100644 --- a/R/utils-cr8tor.R +++ b/R/utils-cr8tor.R @@ -29,17 +29,14 @@ add_safe_people_entities_cr8tor <- function(rc, people_tbl, membership_tbl) { list(`@id` = id_hash("#project:", pr)) }) - display_name <- paste(p$given_name, p$family_name) - if (is.na(display_name) || trimws(display_name) == "") { - display_name <- p$username - } - rc <- rc |> rocrateR::add_entity( rocrateR::entity( id = person_id, type = "Person", - name = display_name, + name = p$username, + givenName = p$given_name, + familyName = p$family_name, email = p$email, affiliation = p$affiliation, memberOf = memberOf @@ -69,22 +66,21 @@ add_safe_project_entities_cr8tor <- function(rc, proj_tbl, data_tbl) { now <- format(Sys.time(), "%Y-%m-%dT%H:%M:%OS3Z", tz = "UTC") for (i in seq_len(nrow(proj_tbl))) { - project_id <- proj_tbl$id[i] + project_id <- proj_tbl$project_id[i] project <- proj_tbl$name[i] - project_eid <- id_hash("#project:", project_id) ds_ids <- data_tbl |> dplyr::filter(project == project_id) |> dplyr::pull(asset) |> unique() |> - (\(x) id_hash("#asset:", x))() + (\(x) id_hash("#asset:", paste0(project, x)))() has_part <- purrr::map(ds_ids, \(x) list(`@id` = x)) rc <- rc |> rocrateR::add_entity( rocrateR::entity( - id = project_eid, + id = id_hash("#project:", project), type = "Project", name = project, dateCreated = now, @@ -110,13 +106,13 @@ add_safe_project_entities_cr8tor <- function(rc, proj_tbl, data_tbl) { #' @noRd add_safe_data_entities_cr8tor <- function(rc, tbl) { for (i in seq_len(nrow(tbl))) { - dataset_id <- id_hash("#asset:", tbl$asset[i]) + asset_id <- id_hash("#asset:", paste0(tbl$project[i], tbl$asset[i])) project_id <- id_hash("#project:", tbl$project[i]) rc <- rc |> rocrateR::add_entity( rocrateR::entity( - id = dataset_id, + id = asset_id, type = "Dataset", name = tbl$asset[i], isPartOf = list(`@id` = project_id) @@ -173,7 +169,7 @@ add_permission_entities_cr8tor <- function(rc, perm_expanded_tbl) { row <- perm_expanded_tbl[i, ] person_id <- id_hash("#person:", row$username) - asset_id <- id_hash("#asset:", row$asset) + asset_id <- id_hash("#asset:", paste0(row$project, row$asset)) ents <- user_perm_entity( person = row$username, @@ -272,7 +268,7 @@ expand_group_permissions_to_users <- function( data_tbl ) { # local bindings - asset <- project <- role <- user <- username <- NULL + asset <- name <- project <- role <- user <- username <- NULL # map cr8tor role to Opal permission role_to_permission <- function(role) { @@ -305,6 +301,7 @@ expand_group_permissions_to_users <- function( # 3. Map roles to permissions perm_tables |> + dplyr::mutate(project = name) |> dplyr::transmute( username, project, @@ -383,6 +380,8 @@ extract_safe_data_cr8tor <- function(bundle) { } ing_yaml <- yaml::yaml.load(paste(ing$content[[1]], collapse = "\n")) + # extract groups and projects + group_tbl <- extract_groups_cr8tor(bundle) proj_tbl <- extract_safe_projects_cr8tor(bundle) assets <- ing_yaml$datasets |> @@ -488,6 +487,13 @@ extract_user_groups_cr8tor <- function(bundle) { } extract_user_projects_cr8tor <- function(bundle) { + # local bindings + description <- group_id <- NULL + # extract group details + grp_tbl <- extract_groups_cr8tor(bundle) + # extract project details + prj_tbl <- extract_projects_cr8tor(bundle) + # extract user docs user_docs <- bundle$resources[ grepl("user-.*\\.ya?ml$", names(bundle$resources)) ] @@ -499,16 +505,20 @@ extract_user_projects_cr8tor <- function(bundle) { if (length(groups) == 0) { return(NULL) } - purrr::map(groups, function(g) { - grp <- g$value - project <- sub("-(admin|analyst)$", "", grp) + usr_grp_tbl <- purrr::map(groups, function(g) { tibble::tibble( username = username, - project = project + group_id = g$value ) }) |> purrr::list_c() + + # combine user x groups x projects + usr_grp_tbl |> + dplyr::left_join(grp_tbl, by = "group_id") |> + dplyr::select(-description, -group_id) |> + dplyr::left_join(prj_tbl, by = "project") }) |> purrr::list_c() |> dplyr::distinct() @@ -589,6 +599,20 @@ extract_permissions_cr8tor <- function(bundle) { purrr::list_c() } +extract_projects_cr8tor <- function(bundle) { + prj_docs <- bundle$resources[ + grepl("project-.*\\.ya?ml$", names(bundle$resources)) + ] + + purrr::map(prj_docs, function(doc) { + tibble::tibble( + project = doc$metadata$name, + description = doc$spec$description %||% NA_character_ + ) + }) |> + purrr::list_c() +} + #' Extract Safe Projects #' #' @param bundle cr8tor_bundle @@ -600,12 +624,16 @@ extract_safe_projects_cr8tor <- function(bundle) { # deployment spec proj_docs <- bundle$resources[ - grepl("project-.*\\.ya?ml$", names(bundle$resources)) + grepl( + sprintf("project-%s.*\\.ya?ml$", proj$identifier), + names(bundle$resources) + ) ] tibble::tibble( - id = proj$identifier %||% proj$name %||% NA_character_, - name = proj$name %||% NA_character_, + project_id = proj$identifier, + name = proj$identifier %||% NA_character_, + description = proj$name %||% NA_character_, uuid = proj$`@id` %||% NA_character_, deployment_defined = length(proj_docs) > 0 ) @@ -674,20 +702,20 @@ link_people_to_root <- function(rc, usernames) { #' * resources/ → deployment & governance YAML specs. #' * config.toml → platform configuration. #' -#' @param path Path to cr8tor ZIP archive. +#' @param x Path to cr8tor ZIP archive. #' @param ... Unused. #' #' @return Object of class `cr8tor`. #' @export -load_cr8tor_bundle <- function(path, ...) { +load_cr8tor_bundle <- function(x, ...) { tmp <- tempfile("cr8tor_") dir.create(tmp, recursive = TRUE, showWarnings = FALSE) - utils::unzip(path, exdir = tmp) + utils::unzip(x, exdir = tmp) # load RO-Crate layer rocrate <- rocrateR::load_rocrate( - path, #file.path(tmp, "bagit"), + x, #file.path(tmp, "bagit"), load_content = TRUE, ... ) @@ -724,6 +752,9 @@ load_cr8tor_bundle <- function(path, ...) { } map_project_name_to_id <- function(project, proj_tbl) { - idx <- which(proj_tbl$name == project) - if (length(idx)) proj_tbl$id[idx[1]] else project + idx <- which(proj_tbl$description == project) + if (length(idx) == 0) { + idx <- which(proj_tbl$name == project) + } + if (length(idx)) proj_tbl$project_id[idx[1]] else project } From 3265d075e456abe35e512299dbf699ee9005511b Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 20 Mar 2026 15:25:54 +0000 Subject: [PATCH 28/51] Update tests to capture new changes in requiring a project for audits --- tests/testthat/test-audit_safe_people.R | 9 +++++++-- tests/testthat/test-audit_safe_project.R | 2 +- tests/testthat/test-audit_study.R | 10 +++++++--- tests/testthat/test-utils-connection.R | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/tests/testthat/test-audit_safe_people.R b/tests/testthat/test-audit_safe_people.R index 76df67d..ac4325a 100644 --- a/tests/testthat/test-audit_safe_people.R +++ b/tests/testthat/test-audit_safe_people.R @@ -18,7 +18,11 @@ test_that("opal method returns RO-Crate with expected attributes", { # ignore warning about empty logs suppressWarnings( - crate <- audit_safe_people(opal_con, user = attr(opal_con, "PEOPLE")) + crate <- audit_safe_people( + opal_con, + project = attr(opal_con, "PROJECT"), + user = attr(opal_con, "PEOPLE") + ) ) expect_s3_class(crate, "rocrate") @@ -63,7 +67,7 @@ test_that("opal method errors for unknown project", { project = "NON_EXISTENT_PROJECT", user = attr(opal_con, "PEOPLE") ), - "The `project = 'NON_EXISTENT_PROJECT'` was not found in the given Opal connection!", + "The following project is not valid", fixed = TRUE ) }) @@ -77,6 +81,7 @@ test_that("path argument is stored as attribute", { crate <- audit_safe_people( opal_con, path = tempdir(), + project = attr(opal_con, "PROJECT"), user = attr(opal_con, "PEOPLE") ) ) diff --git a/tests/testthat/test-audit_safe_project.R b/tests/testthat/test-audit_safe_project.R index 4f481b9..6880c40 100644 --- a/tests/testthat/test-audit_safe_project.R +++ b/tests/testthat/test-audit_safe_project.R @@ -55,7 +55,7 @@ test_that("opal method errors for unknown project", { expect_error( audit_safe_project(opal_con, project = "NON_EXISTENT_PROJECT"), - "The `project = 'NON_EXISTENT_PROJECT'` was not found", + "The following project is not valid", fixed = TRUE ) diff --git a/tests/testthat/test-audit_study.R b/tests/testthat/test-audit_study.R index cc6c9d7..ff5bc1c 100644 --- a/tests/testthat/test-audit_study.R +++ b/tests/testthat/test-audit_study.R @@ -27,7 +27,10 @@ test_that("list method returns list with expected attributes", { # ignore warning about empty logs suppressWarnings( - crate <- audit_study(list(demo = opal_con)) + crate <- audit_study( + list(demo = opal_con), + project = attr(opal_con, "PROJECT") + ) ) expect_equal(attr(crate, "audit_type"), "Study") @@ -62,7 +65,7 @@ test_that("list method errors for unknown project", { expect_error( audit_study(list(demo = opal_con), project = "NON_EXISTENT_PROJECT"), - "The `project = 'NON_EXISTENT_PROJECT'` was not found", + "The following project is not valid:", fixed = TRUE ) @@ -78,7 +81,8 @@ test_that("path argument is stored as attribute", { suppressWarnings( crate <- audit_study( list(demo = opal_con), - path = tempdir() + path = tempdir(), + project = attr(opal_con, "PROJECT") ) ) diff --git a/tests/testthat/test-utils-connection.R b/tests/testthat/test-utils-connection.R index 0f72e69..ba197ad 100644 --- a/tests/testthat/test-utils-connection.R +++ b/tests/testthat/test-utils-connection.R @@ -110,7 +110,7 @@ test_that("parse_user_profiles.opal() handles missing userInfo column", { test_that("parse_user_profiles.opal() parses JSON userInfo and NA correctly", { opal_con <- structure(list(), class = "opal") - json <- '{"firstName":"John","lastName":"Doe"}' + json <- '{"givenName":"John","familyName":"Doe"}' local_mocked_bindings( `opal.get` = function(...) { From 694df41c56b0f72d2975a9707bcad8e9c354b49f Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 20 Mar 2026 15:26:13 +0000 Subject: [PATCH 29/51] New build --- man/audit_cr8tor.Rd | 2 +- man/load_cr8tor_bundle.Rd | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/man/audit_cr8tor.Rd b/man/audit_cr8tor.Rd index 9a77608..38ee1fd 100644 --- a/man/audit_cr8tor.Rd +++ b/man/audit_cr8tor.Rd @@ -18,7 +18,7 @@ audit_cr8tor(x, ...) \item{...}{Additional arguments for \link[rocrateR:load_rocrate]{rocrateR::load_rocrate}.} } \value{ -RO-Crate audit object. +Audit RO-Crate with 5 Safes Components. } \description{ This audit loads a cr8tor project archive and generates an RO-Crate object diff --git a/man/load_cr8tor_bundle.Rd b/man/load_cr8tor_bundle.Rd index 80953e6..b391ee6 100644 --- a/man/load_cr8tor_bundle.Rd +++ b/man/load_cr8tor_bundle.Rd @@ -4,10 +4,10 @@ \alias{load_cr8tor_bundle} \title{Load cr8tor governance bundle / project archive} \usage{ -load_cr8tor_bundle(path, ...) +load_cr8tor_bundle(x, ...) } \arguments{ -\item{path}{Path to cr8tor ZIP archive.} +\item{x}{Path to cr8tor ZIP archive.} \item{...}{Unused.} } From d0f170a84d8833edc82c5bd560ab3a8aa630aad4 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 23 Mar 2026 15:47:26 +0000 Subject: [PATCH 30/51] Add new function audit_governance to audit intent vs deployment --- R/audit_governance.R | 83 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 R/audit_governance.R diff --git a/R/audit_governance.R b/R/audit_governance.R new file mode 100644 index 0000000..22269a6 --- /dev/null +++ b/R/audit_governance.R @@ -0,0 +1,83 @@ +#' Audit Governance +#' +#' Audit Governance for a project. This function takes: +#' +#' - a `cr8tor` archive / governance bundle (intent) +#' - a `server` object to a DataSHIELD server (deployment) +#' +#' @param x List with two named elements (`cr8tor` and `server`). +#' @param ... Arguments passed on to [rocrateR::load_rocrate()] (excluding +#' `path`) and [audit_safe_project()] (excluding `project` and `user`). +#' +#' @returns Audit RO-Crates with 5 Safes Components. +#' @export +audit_governance <- function(x, ...) { + UseMethod("audit_governance") +} + +#' @rdname audit_governance +#' @export +audit_governance.list <- function(x, ...) { + # check that both `cr8tor` and `server` values are provided + idx <- c("cr8tor", "server") %in% names(x) + if (!all(idx)) { + stop( + "Both a `cr8tor` and `server` are required! Missing: \n", + paste0(" - ", c("cr8tor", "server")[!idx], collapse = "\n"), + call. = FALSE + ) + } + + # capture additional args + args <- list(...) + arg_names <- names(args) + # exclude args that should not be passed to either function + args_cr8tor <- args[!(arg_names %in% "path")] + args_server <- args[!(arg_names %in% c("project", "user"))] + + # generate audits for each component + ## cr8tor + # utils::capture.output( + suppressMessages(suppressWarnings({ + cr8tor_audit_roc <- do.call( + audit_cr8tor, + c(x = getElement(x, "cr8tor"), args_cr8tor) + ) + })) #, + # file = nullfile() + # ) + + ## extract Project(s) and People from the cr8tor audit crate + safe_project_tbl <- cr8tor_audit_roc |> + flatten_safe_project() + safe_people_tbl <- cr8tor_audit_roc |> + flatten_safe_people() + + ## server + # utils::capture.output( + suppressMessages(suppressWarnings({ + server_audit_roc <- do.call( + audit_safe_project, + c( + x = getElement(x, "server"), + project = safe_project_tbl$project, + user = safe_people_tbl$name, + args_server + ) + ) + })) #, + # file = nullfile() + # ) + + # combine audit RO-Crate + gov_audit <- list( + intent = cr8tor_audit_roc, + deployment = server_audit_roc + ) + + # attach input args as attributes to the RO-Crate + attr(gov_audit, "audit_type") <- "Governance audit" + + # return list with new RO-Crates + return(gov_audit) +} From 68cd8c6951ac070bf483843b1ce0e246b2e39d98 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Mon, 23 Mar 2026 15:47:51 +0000 Subject: [PATCH 31/51] New build --- NAMESPACE | 2 ++ man/audit_governance.Rd | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 man/audit_governance.Rd diff --git a/NAMESPACE b/NAMESPACE index b0b365c..d139b97 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -3,6 +3,7 @@ S3method(audit_cr8tor,character) S3method(audit_cr8tor,cr8tor) S3method(audit_engine,opal) +S3method(audit_governance,list) S3method(audit_safe_people,default) S3method(audit_safe_people,opal) S3method(audit_safe_project,default) @@ -60,6 +61,7 @@ S3method(safe_setting,opal) S3method(safe_setting,rocrate) export(armadillo_login) export(audit_cr8tor) +export(audit_governance) export(audit_safe_people) export(audit_safe_project) export(audit_study) diff --git a/man/audit_governance.Rd b/man/audit_governance.Rd new file mode 100644 index 0000000..1f5154a --- /dev/null +++ b/man/audit_governance.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/audit_governance.R +\name{audit_governance} +\alias{audit_governance} +\alias{audit_governance.list} +\title{Audit Governance} +\usage{ +audit_governance(x, ...) + +\method{audit_governance}{list}(x, ...) +} +\arguments{ +\item{x}{List with two named elements (\code{cr8tor} and \code{server}).} + +\item{...}{Arguments passed on to \code{\link[rocrateR:load_rocrate]{rocrateR::load_rocrate()}} (excluding +\code{path}) and \code{\link[=audit_safe_project]{audit_safe_project()}} (excluding \code{project} and \code{user}).} +} +\value{ +Audit RO-Crates with 5 Safes Components. +} +\description{ +Audit Governance for a project. This function takes: +} +\details{ +\itemize{ +\item a \code{cr8tor} archive / governance bundle (intent) +\item a \code{server} object to a DataSHIELD server (deployment) +} +} From c31ca16430964b5b1a0c1ab5f42fed2ecd57ed87 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Tue, 24 Mar 2026 15:44:48 +0000 Subject: [PATCH 32/51] Add new internal function .extract_srvr_comp to simplify combination of multiple server outputs for reporting --- R/rocrate_report.R | 136 ++++++++++++--------------------------------- 1 file changed, 35 insertions(+), 101 deletions(-) diff --git a/R/rocrate_report.R b/R/rocrate_report.R index 11041cb..d59d1df 100644 --- a/R/rocrate_report.R +++ b/R/rocrate_report.R @@ -94,96 +94,19 @@ rocrate_report.list <- function( ) # combine reports ---- - ## Safe People ----- - safe_people_all <- tryCatch( - { - report_outputs |> - # extract each component per server - lapply(getElement, name = "safe_people") |> - # attach the server name as a new column - purrr::imap(~ dplyr::mutate(.x, server = .y)) |> - # combine rows - dplyr::bind_rows() - }, - error = function(e) { - NULL - } - ) - ## Safe Data ---- - safe_data_all <- tryCatch( - { - report_outputs |> - # extract each component per server - lapply(getElement, name = "safe_data") |> - # attach the server name as a new column - purrr::imap(~ dplyr::mutate(.x, server = .y)) |> - # combine rows - dplyr::bind_rows() - }, - error = function(e) { - NULL - } - ) - ## Safe Projects ---- - safe_project_all <- tryCatch( - { - report_outputs |> - # extract each component per server - lapply(getElement, name = "safe_project") |> - # attach the server name as a new column - purrr::imap(~ dplyr::mutate(.x, server = .y)) |> - # combine rows - dplyr::bind_rows() - }, - error = function(e) { - NULL - } - ) - ## Safe Settings ---- - safe_setting_all <- tryCatch( - { - report_outputs |> - # extract each component per server - lapply(getElement, name = "safe_setting") |> - # attach the server name as a new column - purrr::imap(~ dplyr::mutate(.x, server = .y)) |> - # combine rows - dplyr::bind_rows() - }, - error = function(e) { - NULL - } - ) - ## Safe Outputs ---- - safe_output_all <- tryCatch( - { - report_outputs |> - # extract each component per server - lapply(getElement, name = "safe_output") |> - # attach the server name as a new column - purrr::imap(~ dplyr::mutate(.x, server = .y)) |> - # combine rows - dplyr::bind_rows() - }, - error = function(e) { - NULL - } - ) - ## Safe Data permissions (optional) ---- - safe_data_permissions_all <- tryCatch( - { - report_outputs |> - # extract each component per server - lapply(getElement, name = "safe_data_permissions") |> - # attach the server name as a new column - purrr::imap(~ dplyr::mutate(.x, server = .y)) |> - # combine rows - dplyr::bind_rows() - }, - error = function(e) { - NULL - } - ) + ## Safe People + safe_people_all <- .extract_srvr_comp(report_outputs, "safe_people") + ## Safe Data + safe_data_all <- .extract_srvr_comp(report_outputs, "safe_data") + ## Safe Projects + safe_project_all <- .extract_srvr_comp(report_outputs, "safe_project") + ## Safe Settings + safe_setting_all <- .extract_srvr_comp(report_outputs, "safe_setting") + ## Safe Outputs + safe_output_all <- .extract_srvr_comp(report_outputs, "safe_output") + ## Safe Data permissions (optional) + safe_data_permissions_all <- report_outputs |> + .extract_srvr_comp("safe_data_permissions") ## overview table ---- overview_data_all <- tibble::tibble() @@ -195,18 +118,9 @@ rocrate_report.list <- function( # generate new overview table if (!is.null(safe_data_permissions_all)) { overview_data_all <- safe_data_permissions_all |> - dplyr::left_join( - safe_people_all, - by = c("person_id", "server") - ) |> + dplyr::left_join(safe_people_all, by = c("person_id", "server")) |> dplyr::left_join(safe_project_data_all, by = c("asset_id", "server")) |> - dplyr::select( - server, - project, - asset, - permission, - user = name - ) + dplyr::select(server, project, asset, permission, user = name) # if any Safe Outputs were found in the inputs, include in the overview if (!is.null(safe_output_all) && nrow(safe_output_all)) { @@ -715,6 +629,26 @@ rocrate_report.rocrate <- function( ) } +.extract_srvr_comp <- function(x, component) { + tryCatch( + { + x |> + # extract each component per server + purrr::map(component) |> + # lapply(getElement, name = component) |> + # filter out NULL elements + purrr::keep(\(x) !is.null(x)) |> + # attach the server name as a new column + purrr::imap(~ dplyr::mutate(.x, server = .y)) |> + # combine rows + dplyr::bind_rows() + }, + error = function(e) { + NULL + } + ) +} + #' Create diagram for RO-Crate overview #' #' @param overview_tbl Data frame with overview details for the RO-Crate. From f85b29d0a270d0afd9ca87b846cf2f0fc8251d73 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Tue, 24 Mar 2026 15:51:19 +0000 Subject: [PATCH 33/51] Update logo's URL --- man/figures/logo.png | Bin 41157 -> 40715 bytes man/figures/logo_black.png | Bin 35864 -> 35312 bytes man/figures/logo_white.png | Bin 35070 -> 34632 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/man/figures/logo.png b/man/figures/logo.png index 2aedf158f991c02fbd345292f1bef2e861dac361..3952ea57a9ac6b912e0a7df7ee40b2f9e98038ad 100644 GIT binary patch delta 22000 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 delta 22446 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 diff --git a/man/figures/logo_black.png b/man/figures/logo_black.png index bab03601d2b2c3d64e505aabdc6101b606d23887..c1154459f3c3bc206030f5a1bd375164d64f12b5 100644 GIT binary patch delta 17019 zcmZX5byQbrxHT;e(nw1;NQg8jAR*FSBHbY!hwg5qO9Z4tx{>bg4hd;QM7Zy7?p@zM z->fxjTnwJ`#uNM5d!Mv4gtJ71D#W*t8zqtHtf<4i&~X@(9TQ8%Mhr&dhK7}ymF2b7 z=aQl#70bwmr6Uz9jW6js?HrbtpVR+_G_rmUKo4LIW2N2*IIbE0^Y5Il!^Y)fcKYUn z-h2~>yP1()Nc#TDWv25lXAUKfr;!~lG!MAkse#-Cyg=q3Adc6Yuw-yciceHji{*UHWKS@jRK(Byz3{FXu%lTBRCldWsh znVaR$8>U~Mm^V>3i=n(KB{OFXj8A)b$3kD+2)1zOxU1mgm}9c_x-6OXXnprJ6wyPU z6DOvme|2M$TxkiAy#2tsvv&j@2_b@K4*U>#q!*FrCw}_bxw?xyQm4#~L~! znG7Bx1|GzhKoQzrIKf2fDx3P*F*w?*Uq1QuhjhEb?j(9o8JdR>Ius&?`zy}OrYikY zuAmrnbf<+ndttPB6UovlCF>i@VS-@ogx=2XLNhuCYHxVvpN^iP&p+Y$LS}rM#iq5S zAMzCSgX&c#XESAujXos3a60tH4Sfz#i;3x;Is}E&)5}!zmaDR+ zo(j*_BDrw<6{dEn1|9*y9)#z5M;w#0%0!4AY$`V%U>j;`=Z_rM+ZmwWj5jo7TQI;G zM}urlocbv$E3}>Nat^EQ_0z32X5>6`BkM2?6zw!VaDaLyS11igP`(>UKFRK$Y1OA~ zT)RSp86g6iU+?pt64}H}^%F^ggDg&p|F?OGik%Uvk`S(&A^A}hs!es;=@|#!u<&c#$;&)j&<`neF>S%`?3&|ydNX^)j?l3F{j#^*QV2gk3&i`;?Fp!|Gnj(#d$XbvT&#D<)YjerE zv-9PMBBt?)9J4WgY>m-7D!bjn1Bw{j-<n=X!6)A^pGi3# zN=3<`Z>6;abPFpQF8s*MX->>wm2VD0Rz-IW?fPPP9rI>|QK$_Ox38dzEB2$Z^}y(O zzIi{ITG%9ewAu zWCPIPJ9F{aN9B^%)HRxLv4P1*mM@CMwVGFi)0)+WD0Kx$<*J;dKhjL5 zy4E_pGX!@sB}9JyMCi3y75(i;S@a;6TQl}!u?moV@Uq5A2u!AQ4_0)Mb66X1Mi@%s zEKq8kRkRyCNHTuEi=z+k7CaV0Df?}q%L-vcGK5Q@C3qYOiXpcT{pzVT;i1eTiAJVd z73kS=;dEefss`6_zL7MwN65B-`f}!4_m-d;`D9r>*wHYNm&^`9;!U_np`uXiigv! z?SDyYG}>+V_qxZJ{~}(;uRGI9Ddu*|kwjM=G1&;fEjD?|&{E>bV#<95AnB=hI$#3fh;Psvu?E-N$}d;$z#(ar0Tj-s#4}p3;e! z7}i151vM)cOD=w7M=i zj?1|_Umi_|642f44g1~Xvi_fQzYssWi-ea&3ZVp!ylbNZSEE@$VGiATW9Mi|8~COS zQnuJw;vCK%O73getMv4wf`h@%(fjeG4S%53W!1zHl{M87g8||QIM8aNecC6Ehp4=> zG)j_UOBrHc;9F;Rfw0C$*|#|O?zD-w_LVC#X1yLYWoh})JA z3)7J|cwkQyu7F2WR5bmnKbs??8(rwQn!T{F@Oh^?n3{*I{f_iT=8!@*T)9+@x!L6? zq_&o4zCu5-S3Iqhc15d zD7?9GdgmJT(7mBpsz>ye?^s5AzLdeoM!DN`w=<#qY?~i!hr3j*q`NEd2^uD5p<0Ow zxtK3G1VQ-)?|AaG@emyiD~dDC$2YZuatwltLpfba>kA}K`oC(|C$Hs+@M?dz!}ali zaLhSR==sl?&NXS7m_~RkF_VWpCV!Z7jgkq=Cr4maSI2+<#+4T!x!?|$g7T9hT>WUZ z<)y#BzgnqUcyI3;1OxCy0Q zql4G%&40vjtlW5qe_DKY?iqn@SAT^Koo5pg>^J~;!Z>D2bJ*?rqNXA~Ju7Nb%V;w~SJ~3jXm)ro!E=q>@EYmduAuhPQ(gLeI+hO$Kn+yf5E91yA9o{4?5;r{MSPM0+Uqb;4$GZ>ko9nmhXr>eD95UUO! zr8xd6zO*4vu1Gq`$*HGn4O!+1G1zRRkFVs1 z50p)Rw0DSi;u13yJSNspD0R^&+`Ue(eE<&t9|~uLfP(HXfYH* z(go7dsHmtLMX3he7Q94WHXtjE0bB^OW_;V|ijWrAmc>Jv{7kt-PoE{FO#apUVPmt} zkFGod5WFAl_oEU&l47Ee4W-;P9`z3nk3ScBnFT52Fvaw-g;J%5x=KI$cn@V(~)#EZODyr~(j%XCw%b0mXC@U-sRj0vb zut+{t0k41#rF-WBqbB?vCM`erw*xKaVkZH?Mx`Hph+bainGht8xuRFLI(w?dba7Er z7nDmKdYs97fngUP?-H%sR6;&5IXie613P>9L0V)ahRfm1hfY6uHiOnQWDKH-TJ!e}HjCZkVvi#~qRIYjhEi$O zn4nSl-qK_VL2i42IHD8u571wW=ejj$%9!4*UXw-Fy6&F0DnliD)naRZ8WFuad~sh+ z|Ed;v$IO`a0@KrlDZ4Z1&)eakSJoS;t8uoz;dS&?_4T`>FV}be{a!c!wbG=JEljGb zt7|p$wJYCFKEQK=PHtV} zv@7@QrJX{hL7RZ*6;tjgy;h4WyQ8Dy)!{6LA2x;H*_1rz=Jxh$UtiH;#jGu`PLsQ< zpCCn{Rf4>SZGpoMdK7a%GaODL8oBJ{*Uv#POwT@2ur$xk3DMC!82ZB7+!3}fv&nWL zx?c=3{+uj$Qg1c8b$9)^z9lRmkTx-)BrGBld7})=H-3Kpg~i3q{r%9atgOKstv{nb zq2}{-yg+u4fW1Dfpt2kAQRWq#mbuSD2VcQ%?icU=arq#xD9j7tMb72DegfjkTSmoU z`Czi(mB$5LmXMp-c(#bmT5I~tHTS@bm-cv1pLR{;y8E|zhkbMr%Xt~Wp@^ap)1~H%Oy;p2k-7YSxI@W1QSsCl{cYAYC0o5w> zNMF8uNyKR|QmS5dc79GnM;El(;>Ke>Mh=Qmr0*!VZ?+OxB>#)7*Iu-mW71t_B#FZ-vb69b>%BxGlgeP8#Lmym#e z9g5vIIT_EG?H*t~4^{kpdiQKYWMgafp|fo+uMPDIxf!ni^xQnSiUst43$0=@pO(>` zqBSw4o}O{GL{4qe3|7SI5OBWhXI7h^t3_x6cD54O>if zGzI7fU!up2KD&!aHNAjDHs7MwI(g-9();{I=5{+-{%(FaQvx1^;^pP#db;)w#O5of z9aQyFwLJAQ4f0n`g$EDZ+}uGSAyXx)jIPHE5-KWq@bK`056CNUKj7ElgMVLQP@3$2 zmV}H%H?X|11`xD9T+5}FzO9sD{N3Wj1*F?p3UP5@-29UQno(deF? zB@`1AyZ`r(RM?&C>C>k{K|x$DhiaH1LNc4vQ&Uyd%xlpbza-(g@XOz4kNYqnpBaUB z*)n%p+DKA8++*>5rXqD`ta{> zcx-I{>}>M=z4!Cy&llRfUe;S%OASg#kw}2Pn$B;lqwF;CO`Av1^?2a!`sf-{1oaI5 z2OLi8%;twL0_J{{ovNLSp|@Va6XEbOp;I&0$DP*yUS3#rV5vEj(O;qlnR2n*UPD0* zJ{NyjYc5Ci2gb(sK=Ir!h!ySb=|Pl{k@@`6e(dIC8D79~3yHJ+_BpLg%+5$UkIiax zvd`a}^EqAnr_Y|1$_$wMGfv*Eg=%PQe1LY8EoSlD;0pZ0#nVIYNhH(!`~_$KS?ZjU z-eyy>dS@nrwf<*>V3OJe+|lU-pS8O8c(ijYuO^A0Jb~6YpUD zxoX@&^YZ-JS&0E zdQPdqMjLL;^N1YDm;|UV+D5ti$I-%B^ohTxe#>m3{&4X-pg!=vKh?1xhM8qIyv1~D9Dp5v23#IECT zG{rLID8_F(-m$dK zFBwXv`HS>#4CfT)Z;HK@lQaG~Riuz3ng!mQkeR9Q=VDj8)t#FXqNG$S*GabT_?Pnd z@Vg^Z#4E)g@kx!%;tRzb(b0i;+H2H5FU~l0@}4K^`MkVlE1k9&W^(f9_iGEMG7NhT z3Vmaf#`aH+oXL*A(?tH4!y8R z3lpd(1dCkoQ&@>=F@jQ&93c^#R_9PMD=C+epMh-G(_9Lj^{?_OaCZzS-znaZX^}+jwT8rS$uHD3KUj&I#dTZgG1u$Lwb?W=@;e#6; zN+c1xad!}!yN3t7QoFau)bzCFQXTV4`!y3Vl&rLROebyb*Veyd(77 zjqHdd7`zCd$~l?YGP;ajFHWg@)a^2@QMQKizk9NMuo1zh$VNava;;{Yu$e$Tz@DCy z$D;PNGmZP>FM++|@K!6fThf-NP`hknN2;xW8v}IIA^?@Zg`VFm+w<5i z@wVS?VSqptcXE0$UuoDsKTk|Wm6MMa_8lLQf*}9I@(fMK$>?UpHl|Cg39S{4_w{n2 zEGqf2{P|2l&RN%RsO9u0uH7MbITh+}P^hxyGQ)c=3hqpzhvHaRaqP%=%rIf& zD~MaTtE2hYaWi=7TsSytIN3K6YT(dQ4Sh-dREp%dop#=?tgbG$`v|?XTbZC8aqhIJ zTMc2i!nm~j)(;V;j@`va*vFAXDX*uUk#el>5#kcR^A3uA$(Zr z#>*iP5EL~2cnLk8o&y{R;2FrzW&4iNT#3L44XQV9-fSEl$!GA}UcE(s;rDyu?#rl_ zkqTT&2FXeahIe=a$|r83yZ5+{W1!wOXP zF?F#ChYXT~lhanqX*+@qLZwwG}{)DB=LH zk#HHoX;$cQn>M0r1vOAye5z|7G}hiy>Nb=`Fp$V76u>ASsj0#f4w%Pe%-_-$yD{=rgNcl)pbW66m%ahe7!4i$xrj&>2;#Fbp;HjZP%lU( zSgWNF{A2{884k>w_Z~ui{GrqQbUCh(fD#;WUa7V}{#o%^S(t4pmS!X>TW8eM#n$p2fZ*Mz63sR`z^@W{xI193FM7X!4ALi&r~q$C2>knHHW@4Rpt z#=)-_=F&)3Trq4{EfDM8NTj_YBh$4~w;oN5RoJM1AhXc>-m*r6rrcUl+zp7ZIkthJ zNug(npSeCDTp!MUJlp7k;j_X*y3DMs|0Bk{|6R{Vk#GmxoYco}N=HA7Pfm8}CmIyg z^1p%dF7fL`f3PG69o1A@yvA719~C>BeMx?S)kMpd>XOmt?&`znXFdS|fwS{|Dju&J8;weXQK8e;z=8r=P=3A7x}Lx?7YzQH z6hf}J&z|Wdy)iL4s6k~Xx25cY7ol94f#jBAUNm&dcbfaPj8&s{&dvFQsqtXKn`E}E z4sfBer*Yq={vQLtvA&Fx;uOH#ldBoJh4!sb&;`ET06DLiW;vg+Y8@ZU`w5AOue@)$ z;6%J`c5ctN$%R~_0G>gZDA#>CS84b@5CtnNI=XLo7=x3OQ}XrecaVq)oCB6^VgVIb zViwN3uFs)(4{|h1HPZHVrZIm&0l9y6z5R16N2R5?gAO_0cs5F54nHZF^8*2K|@TYLKom zF)?s@Ew0f3j%@$@DH}^E0=EE&El{|2hB-Uf?$W=nc}6xl?;qlERy{4Zcc&_^WO9_V zGIr3#oFFUjy|B#s$m|FRGY2QO0w6FFa25nCKy-wTfSIjs48I5$?oD>!cxu;>ew<}iS#f_fnarCvNE{Fc zhg5%SYik;hIktX_Yv1Z>7C`yL`pCD3WtCOmzncTFhe`SZ3GljiHz)EYCWVxn#c=l2 zWLJdoy&I3ah|Uu~lJ-=(egRi)13w(2aN(VxciUxstoGEb$TIr*BUP*V+C_y&L1$Sn zY%4JXhsSr$Rl2SwUkW7<-roLHC`P~4J^tU{-}tz=;-Ij@0ZyvW8QLEMwLUIAUAES2 zRIAnut4QA3D-$-jg8Jn7``5cqpXy2;qx3EIZ_liNJ$Ty)cWdXA-N({5O8aKw*IHep+Fs*!uw{?{Ed_p_lNGF ze0>~FgVwjw(kRnV@%w$y7kbv#vH@9;n2^v7(k1PMDY_i9*;wWv;4iK)9}&(l&jglU z8Qdd-ji)2b6^trTU?d&?dmpJSJ;%p?{1A6K-_}{pQzkn+Q{SDA`}<3-607a~rtpG8 zXK4lAr{jhAU#s{S&~8an1A-!oPXrL=w^ zfXKG`qMzzy0gfiklTT=nXt=wz$gKNN^ z7ukRMp0(~`$o3k$cS+r$Oe%0Gb~>-mLAb0gPG#`7EDIG;L9HW~y~r_opzd7Lx_?#{ zMSOfbU}-|o@EJCCcl*NeAx6Lt<=HMb03h>(n3$MF!bMyCdFNORxYC_bGB-|<+VN)9mJnsAc~TGn5q!9mTgCqo}&MWg|BsnuXZ zO3Z0c2+~COycZu(7)Z!1WI z1&B8gH$=p(?udBCS=bL29iLxYyLC;jAqPr)8C=0?GCqql-Ir8iQqV8OqSdMfcq$zn z0jQUdMF=*9oT4H&00%t)`W+lt0A}Tt?|tLihXDSazw~FwaYfE-MDM^$8oiBhs>r{F z@GC15Bwmfs#YmMiyt>8%ER};}gQN|B%a#H$6>oGM_L|eW%Qp7Z=-5 zrj}e+`j#=N)j6rks`d1i#lMTnndTu5sMQG@8ra8}f#K_2<1JS)Uls&}gou6gf$9aj zM9=01(@rq-rSn-6fspI|@goGxcvHC&h$|~ASLiPhPBNFN8vCK)4_l{ijnB@I5!wBp zcDjIaq62iqcu)V0s>f>YVN@Vyjzp_5zodzf{lR`~hwt5t6eI2Li+>pL?s9K5JSvI~ z;HjQa98jYvz^nyEjotcr1J>qsz#d40Lxl}|nw189%gY%vYKfW&9Wkykw&AX0ggEhZ zD18MGt`_PHV!NcAEl~!L`|&DsjF-E{|Ev$Kk&9MGwchJ`hSGlZ!P5rdN9y2Ce3 zi4T-OdwfOwJ;(K3=+u%qSMre8rjeoC=|oTw6K{9X8?E{$zKi7`gwsKNxC9Wk%6?rG zXn+GFBZZ)g00lA=WXDpybwB8y%=*o|>FMdPoma9V!6{qF;{;xz=N882Ax$r#-{!Ur zylaM{wPX`rSktrec(iKH>0PNFK9>!ebF(xZGX3h#cDUW~x^>J@XF$$<$F`2mo8qK+bQsV{1S5V}o78&_^n#Ap;|0sP%ls`HbrO_zdfdll*9l zo=W^Uw3X&KY+14S$x`P(2wvA%ea*W&rVc<~w03PD2A&egR=r!IR!#!IoH+~9= zw!X^5S7q85N)b6@B1Th+(Uh8tcsdS0>x zOKWqf{XyDp?d|;lbaPd8 z^(Np@f@QXj}@YjF3gAcE0rH6&DF6n@%07U#j=R!3t07|9+h0)Q|rwgvIZK&4CF3vR}CL<>Z*6fu$ zJ0s=NIu-wxl~qn_z$dr`1mx&8&y78ucc*a?!NI0T^x|!}N6eBWl-KJOvcM?%rsIXK)h%Nn`_a78h-eW`M^K z+#LM!gxQXcxxFb$RB0Sp32~#tF14op8|9%AaxmZq5Fl9D9c#z_0)IgD&l#x&H_eggwh+iE)q7cnetu+2t}G!Pu|~B z4CqL433(K?N$Ra43ABQ;mk0XX6cQTaum!6^&N<1 z|1Nkzt%C+z=~;`}B2?l&m*~^G?>cK$zdjA4i~yZWHBS;*I+hYk93UjePoH+O+}1XM z%p2?Uq!&14wzt3YfLPF_tr7ZH=AkcN}S*R;EK2c|l7)r8DmcO<|GJzB~i+(BI zyH?Mw<*!s&)^2@sa}uXPGr7 zP{06lmY8|}=m=E07v8rHLn-XTQ$_Nyrn%YzxtY(Fs;iZ0L|-}=T1b;~6lo0N@!$7h8krRro^?tD*32fj2W|>>7p9O5|FETOCLqUa`7b;Ak7a~^F z^K-k~-<3w+@xWltt?xha2Flx{ zgt{}c#B$de*W#(ug^?S{w-u}p%5m1O&?JB! zKLBWd;3{an-HNQUnvE!siCuHdi6CTE`JzDj1yanCTW|MC7jS&es__jDtO#+YLO&yg zT^Em#P|CY?&>D%k?vKJY{LxZ?%8Ensl^GO8AJ-xNn|n2NCQZA4MC)`Mof>X5qXbP>b|WMySR zuZD+_B-tK&q~Lnwl$0P`nOI6G<~~q&wSX!HIPJZr{p^o`hy^up`~6?qG$pnPoP!`& z?5Fg8Y?^Eyih0SJV^YgdmjM85sVc#GEgmTa#TrUVX`#T3IEG!(Y;$T8KTKHbO!FKC zc+rS#f^<{9cXXWsEiViJvs%+(q6))~n3fiyHm~1bAkg`2mK(6P?T1-k+Ah6WtTFvL zUr7aW5XKV%l@oMW-A+0qYNLyHghA~lBTXikNTN>+V7b>>D~ACy+nHVG6y@vMVxmmz zSJgJ|MiAp0O-n2|;c{s8SG0mh?6&=0D*%2YxFlB1n6xw!z~A%(fch!s7xpmZj}spq zBgaN6$F#ULA^NmVhBb*ULRoK$y8-FFvD8Kxd6ZU^GT|Xb!k@vR5YuI&WA76d|71F3 zIKXZ4+Aa|Y37teJgW?F zd;x$+WPQup$D4}^y{LJp$fn#w(3w;;^9h)iw0L)Pe)W#RqK}A3+Qx!lPcQb&pAIaTFFr zbMhn19g#=Q!kop~J+*0<)A&K;hLRvr+g`uGDhL2Ren#@U_kM$7THY#Lpbp~U;e|y) zk+foBIgkHNq1L~@TF6Dc(}2*8FcE@pSElaqa)o<*BfBFdk~2B0suRMf`d1AcZ>%lI6 zJ7tpFI##XKHdVwjmFubrg!DIUpR=lJojo_!E&0pvI2gMkvX+tqhBfmhE*Oo#^`(F? zgW+f}c)_D$W5Z+;BqSubr4Sj|YCsc3pr-BFp_;OX^3~b&{2K7{aUpqNndBToq(ZEu z<>QJ-1}+SaF~YNw-vr~X59FyTgj5H=e`b^H>{ymzrPzj&l@MvxpZx}eNnaezYbCjA zP;o&Ie*;7tfC@UnC=Xa|Zyz5tG&GneAlP;>f&F^Cl?>}a@%Pkg+lp&1+w zwnR+&FfT`ZcYF(!54xPL!M;*pFdLd;c_1VJ4wXYIggZ?I85+k0P+2TeVr#|r&PGlRTXNae?JQ<+y5nQknSjjttQ1uwftmt5P09L&Kw31i$aS`)6KD$u`gHh41!MWtx?H z@iLU~0Jsm&$V#9rc~zrTp~<56`Xuy<3xCzykk6&8B6&qhST>^jQh?wOqL@9!;ODGU z2j)#EY>mb;DWKQnRuq?kBjB+-RA6{5sM4^**Ji0M9MC`b`1pw80GR;qNAKby=>)$t zAWw;4R5T2vfZ1VUCXdDF=|=R8LEZ5?`k-GXOcKI2zMX7!Q>FPNi%UzYljZym??NYl zAwp#g>M$x?2*u;4f`PCH!IdGXdSDgjkx5YSv*Y%UY7kBNA5DjnXxP}IKm@~d#=GCA zv9Yl@vBDQ&2A5*K$ZH7QSMClUvUVc;-50w3Vmjdp*F3AiM=1MN7ux*Cf5OtmT%Ye< zh(`VBFbGdc_DQ_@TN16L^p&0Uei$yw;SNujhe&!naifcPI})0$IfrYm^T-(5 zJ=)ySA`0y4oZYdQJMqlfHh;PHmy?$y*A($~2biP@k8SG1gNr%4mVB!CX7X8xK^9MfFslm*dg{*-u5#u;Ao{u9V@^2yS$w|ulXPva8xtXlsYl{%F0e+#%xU;!-Zb4QT_-2*hEQ7}6G&m#2&5iQ7W3 ze5K`U*jv;JaV75+WvGGiKB>;wP7%9e$cRh0b=}gujA^&<@A`GFEr2jqllf9sfN-+f z><+d9&6`C;MBfLt!)ANHf6aiXnE`X$EHL*Z0b3#^cPKng$yFhQE15>6yFmyhHUd{6APAWWs7lFkak*d;D}rka z!6c}HKM|n`!lgHOxxs5T;s3TaX7A{z47mODu6zJ;R(Ex6I9zF}MVJA+dKqAizX9#D z5KL{w-QC?uZEbA^=h>28IH)v1w-jC*5EeBu&w*B9I&`$w)^fPk_SbMt1NcCav$HFJ z;Gz4;2KZiBUc68NnZ)ws$rD0+`~oLu=UD*Y)tj7luWrdyCJZibU{BK}^tYdEh?;G? zj5ljP0hmKIl|x?z*jtBISM^78#0-&hfUWv`s~n8ek~b<~4{gG;EOd*$&)x4gE7U|h+SCx~a54wO6xVTC{EeW8*L zU{*$l{nb*)?R1TWhes8xjd? zw5T*?W@8M(#qq~KqlpVA{iHIbuna2|gm`!=S3W>6S!#AE6LdLDs;RG62O76#$HSfV zokdC z`cd8!KtHORZ#;`Sf`dadf_VwXGL`M@>`H;1f`y-7BbxjbRC90xI6Ud#kPxC|e-JIL zo*-wgBYsm)fc4-qn8KkTXmSO{$m^W*+S}Xjf=Gk;zUzT?z20tB5cw-`Gk*nssjpzj zW1YbB2VE!sFj%nOeFNEq(jQmypp=)3)K*?+Rp^D~?==uhm&G4}JzJSpI!ehLtOf!Z ztLj&(UHfHdY)nJH`IEBW-SxcTEN~R611WF@IB8~pJn%(WSQx}wjlZlP28fFhY4#1` zk=%kr*WaUqgR-lw9<>(jaJj%j`vveNvw(Ou)ft(iZp%H2PzyG{H9~rQrJr z7G7Sp6A6IXSuuHQeWoiVTgR8<-{mAHOb>Q#R^aDwg1X~iAPE~W0Io5!a zX41!=nAsC(+1D|DNzPCuwMfapH)#1J$B6fSPdl-)K0bw%T3l@bMdaCET~)<(e}4}L zSTzz%6i{J9yNo&k`U(pR%l~U;YRV0!5Iwz5EszyNaZ*2vhdRd!?hf~NKUNz2&PSA- zsG_`V-#be}A|luRYS5Yp3F#1K$n0D5YHDg`l36up0DwTuD^cX~eK@Ou>PKl?sElQm~bXb~iUSO^_$xqZbvaeo*Nu z0QIeIWmWo_`(p?Th@8(aOe1vat&*8PMoW5)g6&ip-*hgEvzSfDrt}h#kbDK+QOEvj zz^2Xuf38pr7{?VLA7Cd(uaga>p`oz?p8YRj+}Gdd!)!v?^9!(r`!s zt=7D_xcHQud<00rI-ibzCt^MRgt`3z2r<4on1o5~ot@%fepJrfeCF?AQ5ju1X}~I( z!~{O2NH`WeW7&voNRSYI11b{cGu|+;(rWv4NOUY)MEBG3Iz5Vkfq@%20O6-VcZJCn zzW?sHEvE{%Fg-YztT*}U=0k8L!|+DnuHZS0QBs%K+xRRd#QS=Czrsol`18j5?_Qps zr65^_7^pQ$)qcjDzFXjUxamlJ@dMn;LoewqXIwDpr>c}C;QagsKGNxdTA^{kDkW7` zR%SbzAyDPn{$vjV&91zKRV?bP6UH`TBdjKZZr`z!+k`2nFl)5IRt!#Y@hZ$}Nh0TLdl z1zO{KdwUvJF2U%8Gr!lNO2C+^0YN#byu4he(IHPxPEG}YUXJD*&=AovG1aJiuHq5? zYr55paDnk?^WbTe`BR<6;@D=;gzV9z=${?@S@4y{HE09Opxyyv#Oz|Nd8D12latEe z;NT%p7nJ=D=PPs2ad0$2wNV=z8}sbVL{#{50)a{_Nf0U6`3%$peyP9z)C0gc!(5bf zw-w2m6d4(L@%y)?bb&IT?NZ%=sBVLeaw5Y!6~Dvj;#kk)>VD`d!iP`kFULa;Y>Tfa zNd;m^Kdtr69v>gi04vhWcC1*%8uaMH=k`m_Lmknqyrf>-fic{Ohjczl|k2-9u>lt3p>^mf*KlfFJ>R=mM>D2DlVv!6cJZ zP*8vXJNbyHD7ES0_nLkeXJ<-a_Rs{a2G+!4J7}oV{wzO=gM8#-#qy^f$?fS_-rL?T z0Bo090VEv_!vwJ4S*kUUeJ1Q)g#i0OL`;mv$Nm`hyL4c{E(1(RxTxve>g#n0d4sh_i$r%}CKEB`f*VpS8 zcmZnJN4PuqRPI2Njo1_5Zqo!b7U=YC2MfSkcg6D2o75c}*s+6f^N}1-pdX0exdMYW ze%pctTXh8>d;W;KUUuHTha0a1kNOZV?7y2PA?eWK;qHFWL~-#V_YP6C7z9~RpEVA7 zA0{4R*3#45RYb8!*v|;7;X@E)57w14O6d_^$DPE%%0P!Y$}RbT)MHFbqYlRz>Be1L zHV;}_oM>$==XzASros(dvw^xMvA}ychc7FouAhA+a=yF% z(1P=Ol~qZpVffkC|8f3KPh`Mx0IteGv($X{!!+kDRMrC>TDo{J^T5O1yOw)SUqwDT zUVC1l!hIX~)~xSibw_3;c*`~K;6 zhAt}!6`TY5%ThOXF@o0eib@LwxK47j*;T8`z9#`~hl)2(;X0vx$?L+qxqJVOBlr0| z^uJHwQjA(0Jr{qz?utCehBJy@`6l}5Lj25E7!mGUiSz6~tB!5NE?*b>6%4pc_|($= zSvv@!>sOUD5rTC^o I(kS4603TyM{{R30 delta 17576 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 W@YNf;tWpU0M@>mfu}a=D^nU<(nYk|j diff --git a/man/figures/logo_white.png b/man/figures/logo_white.png index ccde7470026c848cc6858a21b3ccff5097638f71..f706d723586fcf152315ed40a45154ec16f119bf 100644 GIT binary patch delta 16376 zcma)jgd@@~O820E0!oYYNJvZb5{K>(0YL>60YRj@Bm{<%kZ$R2 zL>lg%d%r*6^LfW+ndDEjkC;4!2s-%c@-}w4w>U!QJE0?0oDT<*D>-d@fY8@?>85#Id z1hY|~53wnPr^+O>l1Ls0S+sA*p}z5<10Ma%PgtWh_vGGS9c*jHJ2_F@e)zQNEsfj( zd*jtWP5KDA0*`0%9Btoi^SY+dbQ_DgyFVYx`#$D2QF}xt9T?9#{3Ia%s5!G(Yx%31 z*XeAUG-%88b?QP5-(w-!(I029hKpcy#uI`C^&H znOIH&mNq(WZTRF2>6M|wutTySIZW^tj zT{x=PD*ZUr*4#>uXUY4VgtAAkOp4*i$Nd@&35b#ohlX|INi&;7S6$_7ktrE-sFOy) z(09I2RWvGm+@qpt^mkSlvpF#}w#k!L>S!LEX4ZlW{b;U{0soKUTHa=s+E#3|*1lex ziGqfx&`0set3K=5#s+jluYuUN-W;<<;!c%nDc*jaf||;V&t9*b zZDVnl6>KGyym$*Z6DBn#vTQ7#w&8~=Lcw}ZrHTDBNUSvjZGHs%&TrpJwv}J}S0vz+ zc6?sHSMA89kAHV~{-w(|jER8 zitHW{4QiQR3yzmi#W7cm-ftT%uR_^glO~%gGHcB8{|=ax&GZQWLL9(Jz^iE!avxes zZ-BoYYYm)v^LlnCZ~C!8wyxM04>mjE7TvzwmU*i2Is&b?cllZ+Gd>c%(0@_?l+tir zPuKk@h-vokt->d(0ohO<_o$S+ zerH!0+qwA^gUSSvwWjG6GW_53uHZO`A@BRVD48TaYG2+a#zXzD+1W>3$c*#`ZMojS zqYn840y`VY?Sh#EYK`B>r&4gWcX)ENG<<50LyvmQ#vZE3+^Us;uEwXCI{RFV?Yj@@ zNRND@kfH^Wzh@0^wkN)__E)Qy3 z$BUg*962j_O@C3w*q0voi?p82wXoUjCZG8w6YogLhdZ?)@>ZNov(^p*Gxh4Zo=KY_ z;%N;O&p!SO%-JT(=~Q|A7(LtIoekyYYJWiysgvr=Q_~Rj)-}JsU1H6+_2*Tgf{NT` ztr)M6(@j1ycut{XvL#=ABTGw*Ux}T_)--HY%h<GZ*gR08bP|;`t648yNqTd|2gOUBDMRyx}xj6P*Pbg&!d0vb3h=E zU+HJQwhEekEsj|V6M379PSl3Nb+ylOy5_ap=4h`a_M!)& z)k6%*H;Ka6ct^i9ur(PRQT%gkx_D6clRY0-rvOLSHV}IAXLNw|WowomEv;v$L~H+&A^UeEDKCQ+I!+&K!`_tsAo1_RP*&N$+cAsG!vMIi~;vh8!OzbE!g6>L$03X=&1)4Jn>n4ru>5537U)bLOrmB3;x2uPXO+WR16caK3c>`2HNGpD8 z3Uu12g8EaOcaf5A*_-l7!dzV@P0C?JrL(V!25DveTxlIK3YlC&-RpQ7rgoCe9sOrh zLKME21t$1+%}4*ha|)V%5G#m?cU`)lS=v#iN$TBG)mlH;`@^E=7X>ZaJ3jD>D_U9{ z_B&-w;!Wc9B0TWjpPXjUncaCR4Q{r+X8GL<6?OIHzw1MyPP1w8a#yL9c4LDj=1O`+ zMyg;vC4Bxt{QYv*(sGx7Zy#-pEdGAPnxhy>d`c6Jgk%Nt*$BFq8`3H0EiY@i*)GRC zdnYFJR88TVi%^?EVXWVUKQp!SnStF6-wTpQlzToC6D1Cnxy4a zQJxw#2?>cb8J~9p1ExNzX;PkX#`PZiU0k1>k7qm~*FS#8`$uD@L*KNy9P8FO>pZr* z(>-TZi%ouboi3+5uW`Q1_9(7`!=D-Xw41=E%5a1|p2bbQ-VXd3;+pOW&uz6Gl**E+N@^9|>+Tz(x&&c4q2tGc)&YO_bvpGVN`N5y$x{S2Il z&fZ=QDXEXy+3aQI<)_hNd-&#urhW&zl))0(jL&P7V76^Yin=-}U3cxp(Qk zKUO0=U3|Tf2&K?9kWS;<1ls3Zg{Il7sD?S%6-K=&GI;cPxM@V7gp`eKgK|Dc1aqAf zQDQs7tEH{2`s4}wy@C8gh=Pu;^Xl?k=p3>@qu0SM1ryw|0JV5>db+aCrRXK?&a?kI&35sUmLFJfjVOOTWFNXnhb|AdmJH*DtPeV(VGLq~y@^f{_6O=ae- z1h!*E>fvO}YlAr?)Vw-oeQ6S~3dflbOG_{PPv*mWuKwhH^8Ww@6Ote7)bFk^m*3?X z#}#dIcDmMvUhuTgmETr@nZTk9gk*BAYPama-#@AlE4U(9?Xy`{)D?Fp2)T5b$~BV`hQ10Kah%dg~dis05%bv!ugZ{NOE z1f_SAh$z#v$=}PzN96SaN?2I<9PMD>PItx9X(>lj$~>#!?ugquJ@fvIjf4c+%4Lg*D}!=#K4 zVwQVS5|fjazv~sAfU~ZuqB1v-sZ?N8`!*ybq@kmut?f-}YA3neh5W|{4&1u=RJS>w zl)W?)>>M1W_7lRgXKQR5Bi|o^t)+WlPuCQMgO|K>H!Q*%Q=ACcudUv(d zxo@7V=YConE&Q0C*^h6_h-P_!NvoR_dgpY>7>j%nKqhZ(=Hu^YoU?_nsFahfp>2F` zaj7bkLlo#jPDWaI`S{@BOQw-Ds3jGu9&J!LI6huY);F1Nr!`#y8~gI*%My=m!^tWK z68Y`P%G148a(X#`>5=dHxu88(*!&I}Gx3RSYePvX&XTzaW8A=czIYz!yPaen12>C{ z_(jNaBLl}RIod@E0cyzjV`1fuSJv2m2CX(-anNZS(K49yfu;-XA0E~(jfdT0G-&dd zsh<6hZxIu_xZlCbg+wNR6C;AgkanjCY1X#t~rpMoqZ4NN{Ll311>J^c>P$_SFY#)ar6^b^sj^<>4YB6bW|HmCg2)p z*~r}_=PGhB+`NlPyr$n!Y3>y@NoDi1-vc~%qQ(%L+7t9IJ-I_CgUMw(!R(o+cy;?6 z`nR2B)%yV;w^-0VT;`f_&W<)a3ae+;?Ctp%JK|TXrX0&frhhcEHCxku-6SyzjHA1F zhkO`=9165;9+Lm?y{~Y1dFkbgXd>F)FrnG1eA<;2FB7fL(w~Z753uF&XGM*TWX}bG zmWZ_amHId?2LP#BSL>DjPn!SzCy9nS;y5@t!$2hrRlL$BAZPhiV&3X?vEM;NO1d;* z{mJs&V`_9T7e^CkBo--RluQ*s@`%)56V+|u?o~HZM5psR=_84?M)T~pp48G%$97!a z+>nK9&ViL>7ZXdt;#p{-+}d@@p}N%X z{NLkIqKm&nnr_>Z$*tk!i;L(N!QXhA7cr?l)pq=5f{e%$8T2oI^e=~IC_vYvJu~WE z0snYeHv@;kso!rE;-u9BB-svm({SAgIe}80=!_f$oS*& z{&*?+J*Z^REPr-%goE-bf4%r{vf62P<0-lM3?3sykA7Eow$xAH`3f@@Lw zmGmzBMG+cuZs zvt!;C0cYpp!gF3|BT`gU#GYq>7DyRHBlh;3^}{|!y7xze?-#~UMfp7qMIdWB=@M53BRs#a|aANWh;~ z`qFyD^j0X2FS(DAy@JIH$B}I49o(j z1pcYtR09wAdoQ964PRa&K2gDvcy*%ys1x?uGZPjOfy1$A3}Bk^T34<_E=?=Ynsthd z=yQjE^5z<#)UIGj!%Hzx$na-dUcx+E9ySNA!H=gk-g^|vecCajh zVr4@hf;u}@^omV-LEAo{xiebuYO2|l>>dl9W6bMlu^PuQ$HypJi=#A0v?qVJ|HN}W z#S%xNm)3TQd)5_kfj%x~Hn*R?twu0Dou!A?{Assv-vFQj0QCCEcUmy~mJ=Sam;+dp z#Q*%@ZAW{1`+g@|yz{@U=Nn_inu>}+%=3MC1oY?!Q?C#Bbk{&T=%*`JMNOJlda~f@ zluEEKTOdXie_l!zT0P<-+x()q?0peKD-+axV7q^YvWX3nMq^?!-8V;L=#aQjfTrAK z5?JB`FjMf}ynBZM1t#ILbQ25by!ID7Lf(^-;;z(`S(y9t4BL@j{R%zkE)O(pruh7{ za7_n))k3l4gwNnaf=MnL?42~nj|;Cn1AeCz748F71t4G4HmzG#dG4AhD*8KcTyA_X z7WO_^YM3De5El)8Lj0zU({b5%sJ*E2EMrc)nG z%3zhli?15#-QToxVR^dWX=MKUYX;y0%zn1vy{7DGh_GchR3mJJGuvt#ejx`g$)}m| zXWEf>-X#VZ9^ivox(*mC>E`DnPk2Yn_^vfWzMMP3s&hDz5m2ZU6KGbuZ^;! zGWrXc)@yL?<5*<6s~o0m{xr(my?d9GMLP9&)}x_DKOYvaIh=Qb#@!3;(eI_bg<-R^ zf=z`21OyNRTCe`B4Zl4r!yA*z{+Zrc#Oy`-t7OQ-A?*Eb%jBoIHn=)yt@#V27HW|X zjTjBSs!$2m8AP4*|9USHF11q={Q2{pg~dgB5i3%#uPyV=C1x$S;P7F<(SHnjpFy=F zGa%-k=6_+?Ffp8786F;(*mUxqW~2&i)ClTF2Q>B0=RqoMldqgFC<@MSv^>U{6RZb} zi9%DF_7~)?+E2f@X$QqTB3-y*yF5E$wOfbX$>{Va7R0m&igCZE0pkz26 zJb3qd5rgyQ{rkwKCONEj_29v1-@s5{LNhn|$%phnDyn$($Fay)nACas`)2vj%zj=I z7w#kfQV)h-mj;Qr%cp8S=OQHr{6lK@d9+kFm+T>#w?rcP`UrAUKb%GwJAXi?;cFFX;lwdF4E*1?x|K1O{xde%W(=JOa|s z-iIqOEHWRSms`z)dDfZ0wmx3U2Gj&`hslaea9-Uuh9l!;&m!jL%%pyr+!7VROk2dL zma@V055~WR^uXalpK13fpZ;8Nrh1cz-o7_pM;ylzl4f7ecJKs}OnzF^b{>k9E}#*> zQ=@zu;=uw~JOv!C00=V<7U6^HB|F+2v+hpff&Ka@7VkJyR|;eyFkT;l=Cq=8!x{#= z15-sQ=zs>y&dEthL$k8+CLX2~NKX8CRY{*)E3!oyL5V9(Bz;5Nfh<>Ls*&uSKgqgv zC5wUrG}!ie58I9+Id1bT@3r+D&H05vQI60($Vn3&N#9ikJ-=H|qIin@(OoKi7J<3Nvq7b9i=Zb(e%aVX_TzsFOu zw7%1?JZy#X67ZFA<68i*_S$)?ykC}0Qt|`XsQ>=1DU@2Y=Rtaf3}B%b=fhb!MTYXV z9$5XN19-6gi*ht9Pv_fP<|%S9Jcn517y~-$@1S+RZ`jpiOscoRb~+&}*Pbl5bB`n- z;_cjkb>@NDEx%TJ>SrlFO1$uey(iGsAI96)@sRGHeRcPEB{z$8;4b-KMJqV=|> zbb=>nc;2G6!x3ecJqLr2g>d5-y}F{N@r3c7>ic>QkX6M7+& zo5j7~+c&j`xNZoM8?Fi)dRXW-ufHvsk=X*bHBuUELS;k4-UIRm+(fd2Jb|5HN=7z~T2jPpQ zF*vzGI`QEd9S;`-!Ei6#a5%NKAj9$`%+YXlXw&awI_nUO7~ zH3PHWoTEFTna$5XDjnEd1rF2*RIC#L&w(gNYv<=HrV29du5%6s7rUq44Kg+f^I)#F z0hWPNbNO!y$Lp|H4BIupRL=tUfMrx%8D2p#F%YSV|EXn~2A7D{uQ|}MvjBEODJz#+ z_p<;Q^<_u3GmRHho_Wmapz+k*`lwZn|CZU%zr5!x;qPxW+?;;pgv#id$A3nBx8cUt zpIcL7KLckbEuK?5&Xck35EZsvX6ojxG23{GpMtL89>XN@7BuN+d;mAnX_cirdXwx0Z|QcP!5TZS$Kn(4qe{%xM*PbnUvZW;bVlZ}5IQ&o)zFM;5abZ!5e{@W-C#|!?~H9(mVUqk zGbk~`(a24_zTAbjX6jP_c6A0+XCH7JS1>fnz4k2}q5ACyOtk-4;z5H4OSD|5;9P22 zQq+6>JA1BsEuux2GC{szv@aglAJp4^9CJuA$z00JoAhtgx377ak)5W2WKKoo{5|8H zXDokU>zBuWtN{&(VU~IaB*KN&)ea!CsezWJ`(4j+qRevmn|8;}J)AzgtbhazokOb! zL@kQ!1*?FK0=~iJDqiqY1rn%JY}I=zJh>C0^NeC?@2j0W{VYFRla*Y9cyMUw z@G2cZLhQy6l}5z?to=R^k5JfoPTs}U70cj&;I}-?GewLk!Z)NtI}T^xxwf%*(;tJ3 z4j^duYku~zb>9FZuOdEde^a0+G(>N-LybD*X?WtJC|yhY{r^M{q4>X@nWI3f)2enf z2CT_uyyR}Z$2NkUJp`yLv%ZJD4IQ_bC6hqeA}zbA)ZX!T0pEpNZ_AWS+4x76!Pqzf zZBZ>RtM`sAJtIBZCBPH)QgV+nMr;6iO~7ut)NoB{egz!bNEw{M_L0K|FAi<5n~wShpOoB!|B1JXl=-@oUQ?i(n1 zc^D9ZR(~ANW??7)_T)(1KzXT0h>Ug2DSC`ES?I5oZa@q&H=qS^@ZcW9+DlgzmYz+; zpn(HPJ_VIC91W&YNpapICwlZ=tAgG2Tj&Y@dzFwBYk_;fKVrjz9PssA;OW75PfSl& z2Mxm;3vhr902n&{XYh;femiXpqgWgea>GdJ6_0mjwr~27-5aMX?~O~O<@i8X(;Uj> zVhvx1#o!y6&^6>adnvSUJgvjEe;njsH~*K2S>fq*8f_Te?w$X_A-%7jDjbS3B?bFY z)O>U@|A`71R+#+^A-aK&|N3Ol97wB5fKZ*Bu72WqUd9d@BL_Ek1gNjc`--p42qDVVjh4QmfcD7z;kF_cRK)x2kS`A`s~Ws4(9<15oTHT3lsm`$I-#wQ7xvdGEFsU>l@=$rb5 z78e(PZ|%jOCCGSyS;KW?w6QQtB+)!MS6&jB)171RVLLF=FpbDJ;~*+MGFv{@3uMm` zv|Z3oTSeFo4Ht{cvOK7$@IJIMtab$Yhaa7U3%lnZKe6Axe@_D~1Pg3P>7aW7_w7dC zBqxI*$%nN{0s{j<@11zocS2YojM+5yvpC|@oOWOI03z2+;582QRxIYw(#oLs{isl| z2$y`6{58ISvzxa9nbUs+%7+#xW;Jhbz4<{PQ~v(0FVuK(@ED7#fHHvYh+AGxF@1;v znh2q+tSoTsSaYGFF3_k_#hh4xa8SlJEz@i^N3!i}Bgc&7z9HB^A$vPPqPeyCUUNA{ zm;}yhnwMV8zrsND96!4weRTdbqGxq=e zQV46=7YTfDRL{ zlH4NZw4KhCQ18VmwMWNdS3^Uly`{}C*$0n`tL?k@?T2^8?_nRaJwg(g=p6!yL5Hi? zCtoE+L=vn2_OZqf|<>w&w6Xz%s3RQp!oaEQ+nx=NR)v zGI`FDl!LiZn%X3~F*A9aY&Aa?APCP{?{M{x53pPaxa?hd&$6&}3qWlqmf;qQ8 zw-)MgC_~1?8+xP^JA0WvX3rZVZRg>tIP&29i2Gk)3kQD=)GyHI@BR1JhC$5n7tm_E z(%HXG_8i1D0>Tw$W`nvZzbqi~NyA)SAz*>ek`Ex@FHUSR_V_L0@vK&DQCK|(mI ze=6{Lunxe(coubFWOa6z6-soz{wze1s~UJdC`sV>i!Sk20|#O#AUBZk_n%jRM1lnO z84Q+_s|(6(@4TGUduVcLqWQyf|M4pSa}Ae2(X3tW?RsBDb~67zdYMN z=n>McvVRU>CknU?srT(@h=_=a$dHV5gfaIpX>Lbdx>tkWZjd7oBc*j>RpnCezRZm) z7#!SZnkBE52=xj4!llU(BAGT#VHB79)0SeJ+00Y?Iw}IIhawP&1FZCY0HkNsqKbE|&&DzhQOD_2gmOMeQ82Z)d;0qyc8IYe&V9DoBDxAWD7x39173FwgG{?k?O+qUJo z&`$`}iKU}K77jzlhDnu>7bqxgJEj?byHvZJyiGN?_w}(E)sJAl-@{Gf{usY*ov%4L*b@t;%n2~Fp4Yl? z0C%Tm2|@ydu?VCjtg{F-qt=zqE4re&;YH}xP3PJM z?xko^_El9K0+R|B<~+b_jtg+Ymt;bA|7H4%tho{De8V%@as9*l_a~FaEH_KXHFbP$ zGDK9ZMhs)PZ`%fh)0%&icCUt@ueZRK+%N;!c-m_*_NA58V4b_2RewhB{$j^-Kn=zI z_=;f9;K5QCjEYY$X0-6dR00)0?m{fmPn2iR_X8aj9Fuxqo@DOf=e;8KL)ffF1UFG( zol^bBOoP|kP0l%_bE|s`Uq8ES6%B;eEAdk9EC;vVTD4P4=2h0xf+)?lc~d1^IkCJ4 zfGbg(0T`MTV4%+c>hK%YyaB=i7BEa!yb7+ab_lLN4`2+i6EsrNfq#xvfV-Gqw&cp+ zFW8P+cz&9YeR`{a{^iT=Ua})HS1qL8ZkRE>`^`K zr4zYSwDZzM)tF8e9>hkV@PzQH$C)2LbKbhMWk6p4KxspD%+blMdOJ$jFQ}HMgh>oP zCF=vDheAUdc6V)ux!(y@pAn`@d%p#iUIqkRd7u5;wsUn$NyU|RjG1uqywlAhY4J3K z9<3FFtj4{@(ZjZ9J`;w8;y@bXOhcxc--`dG5P5hF2~`m9KIGgpFmR7oC2nRwVhxXp zi3wOpXebg?QO188JR0eemac9A?zc|jkt+|>iK8BXxfg?!!;5S-ZZ-$xzy^|Sd|D+e z>PT+98>IEyKR(&(8F zq!ZWhE7EkI=dmBIwi#fa%gq$)%a2n&3-j}wo0>p;CV#dQgRnC-FOU06R@Q6D^l9k& z@?sad&N6Qelm0i3Zq6a05XuKC;P2mptdbvyhVNlWN3!KFGeD%S4Cr4#ox*VlP=}7a z+}(d73U^`!iYj?|2yRR;KWo_+GpQivZs~!$pVpw*Hco0hA5{2X{>Sp)+FcXq(%l2v z8gFs!m+1h`*x^HR6Tc(fubQ9w26G-q#>aC>NKEuOi{Tc63(%uI!06^}aMKSudx2QE zHBBf@7&65a*CF+Z;N0_P)qQ6(F(ZTT9=gOmMIpR>ch17}GPUJj<%y%gDLVqjRVQL-{h9B ziq)2d5tL-oB+{^&-R^s0Z$8>_-1Mn#J#e}!v%S%nF%ucswExA_hWacN^R#=ae>Q09EzP+dxqdizbp=y^^7idku-=670FZl5 zzb1r$$4ppI82Nx5|1eMzlZx|!Dh~qic9zN{5M~Ak!@2rhizl&t105 zKig)`M-d7Etxz*O6TAPA)KQ$^e)s0gwRT zEE51(t-IEBb?@*HEA@)Jg#yC^iz_TL>nJ5bR>p2cDh9K7<&9R++B2~l`ejp zQ1j&Ic!7xMIxN9*E3VTbz-AZ5LL9q%jaZ~NERal2+xbzsFr3L4x;`Y5nl6o;q8i&<%3 zCd0?KvhIEYe%1Au64?sJ`ZlThsX1#v^k)-3s&_P@ao9DJIw)T*a%QutzN3OK&}| zrm7s+?%oXq;=^E>6FyOGRQTWlD4tKtA1t9{wt<^6GQrOeq!q zbNaczy-md_v2X6y-l%)cj2i%U>1mD{bsVdl#!KiWdor)?0=U>0==!Q*?d(G8izwi0bO<3XqH1 z9S1nReQN53mX;O@wFGRFcR=c%q%zNFMYvQ))Od1!osJWf)e*Fe=|W-}2-_f7RsjD; zB`sxnM@K<`KP&-5#s&6Y?DsmPBAFVeHSL4ymi-^!hoke%5)))14{{YgR*g>z@AESS+ zgybwqz;k&o>-XPmDd5VAKviM`P~mMt0(4h5Uk45%1GPXVUv7)MT||6dtr2yU=J`qH zlN!&mEker(g^5;)W7fA_mNoHSrsgqiYyfIq&wOk6GH~M)fsovV^)+NoGZpbwH8pAB z3FX%PYQXti0#~PkCjj%a2Pk=4H)S57Fp(-DGsR*#{+iW%`HH}$hwzGV3%BBwsWm`x zV^vg>AOGzG6<52~#S*JYUz{FJl$hhe;qYOQCjr*(0f?$#vjMSZpo)27b+{#51_0A3Lhoj^EU>Je&6YHpT)HCB`!5djS9 zZV0+QH?3WalL8A2l2(*-blk~&`tN{6&?V9@ja{RnYl4DRXR%VlcYHZXbqt6FE<}8E z=X0r|wQds-N=RsHYio!{qtQ8_c(k$}-sdk1>G3ZRPzvQ4jsI02w215FxUN*Mtn zbb4g0RXM&7^CP4=5vK-@Y7kEj6%0YifnXhf?XLe%RYLdUA+XameN3RF2i5T19hrNM9=%zMUGuh?kwB_gTn+&wEvi$xQ~5Y;)@)X2%Fc>n~% z$3RlTj@2^PRgK8FIIJZY@jg!E(rp1k5Q-)COLm2Q~~M^xJRs8VqF8I zIhx<@H`I76S>Z&K39BgfnLeqYI+t9{Pgkv_AO_V9a6qw1nqQ+T+Em*erwoLIO;xvIl-XOb!PYNc{#Mg5r2Mh*uM<& z@JZkSyMR{4E-DHFwc+43j^FL@=!i~zgx1K;YN=MyXKkWc#6EAE)(a_LvwiF<+gGsyMXW$$+{P;0ZX-5m%sU-+O7m<204*aGY znxM<-XVit*K`K0o>iA5jARh@CpW^gD%lB#+y0%ZxA3lj7`U~dg2~Zln&(?EEgqK)B zRPxs)CN&G+8#E8IJ<{L(vyikbMG>wK^TDXE;GvBhc}!JPbxqgAEg$ zwyqv;PjLaEIE7zc+GVMegSCFZvDE+A5Mux;HV4&aipro!aP^qZlvd8wNM8ao^sJ`? zr1I6YwBAM|>I%vc!cR~aTmG{=x~XeAL0V1bF{)yi23Q*|E8vv%;+{K9a?tgK2$x10 zte`yvWTdkJ>DDPWNe71+%Y8w+r2}d)3>*M30tbuU$l-!uhlwaAt(xy9SRZCd?G2#_ z6}GwipEJRz*CU}7%m#xGs5xda^PtzV1M#^lk!x{rQ7M#|+6$mk6%`e%$J`Q3SPm!v zP^F-)o1Xahn(4}?;}SuGJ%Aw=C=#SlZSSi5Lc73c53l^T#*wv$eNr4q;4KnhCW8+(0C@$Z z5z7JDg8^&TW;hQHmIlAMrziSZ)4&dwOAOX$=M4F`Y-6m568=K`|wyJl0?a}Cq93b5zEF2_aVq%hj`#3>e z7SSmQfA#A4P>Cl;2hNU|MGWer;wHSg__@F97t_e+>wH51z(xU207+-8*tG>v_e*jV;061A$eQm>Fx`D)y zdJNGBnec;e1U!!8?p+07k>&u$Uf5+xML%3lAC*6K>7%d4lXH~>j+sS+XMB#Bt)17;5g2n*$%oSbw5Z~-Z!UV@kgB^4Dr=$-Gts{|6RD=`H|wOT+9>}e3j zeDXj021s!a$dMVt4?If!F^18~JUK}|6mV8JJwGDX_;qdr1E94)61fAcC2wtle(A#) zokBxhkeF0PVFxB9GqV6tl2ZT%X3|D&qWatNfZgy z%GvU}srq){9U<_IZ>sa|2?(eIGm;C0%ev0J0CG!lh+4v}wYVgG3_b|3W6nWn#4v4w zvd6UUb!2p8GcW`|;5S`T7qsA&{PjS&!>owm>ht5=BrUaNsnSu_={pFY?S`Q%Yz7ZP zDJm%~@6ES*cVOQssPCrRrB2BBvUwByXK%^UNhvuFMAb0S6(5kRlYwhC)<@A7c~t(| z`x`1J35>mNJp|<~@bZm?CqFH-wAUM8i-7sLEq+Ng_Zozir8J6?2HWJnDJr0@f=6a0 zW_Jwi%ZTZ0VooP^TA=|*E20648b)z@SMegZn>8dV!`bp+jq6C^MDTZI z20_HU$MrP$3{N~K;=c0B#vjL*O`@78+sR8;@RvDJq@~?_p4161eOv<`Z&C1Z7A645 zq&A^|@>O1X2A4pi6`fZUNgF+`rLkXvAECkn_trF;nw2>IDe-vX@)9&TtqoyRc3=em zYXz+m$N&{(OJt3GBEN{rt2ryUDo;Sj9c7dwrSYTB*n6ji6Hz5tE3?b6QU+C!nDRC6 z>^=r-qouEa>W=Ij{;onS3r}$IfLOuZC3QbS3_d~WT}Ox9QAK^2V6MjAGjT+OS7fIQ zpd&(*LI2Bxye627vHxNu?}$=VUZRIj9DNKi8w*9>_2|e=Dhn^-)yt2#ZRe@b7D^t^ oh;Hli!afYR=>P98EGySIJK`2R3tuyPVc>_VvIeS1(JbhH0O30a`~Uy| delta 16818 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%0D3?FBehn?Py(JqwGB!VljjTwch7KA7*2`X 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 Date: Wed, 25 Mar 2026 09:25:52 +0000 Subject: [PATCH 34/51] Update Collate section --- DESCRIPTION | 3 +++ man/safe_engine.Rd | 21 --------------------- 2 files changed, 3 insertions(+), 21 deletions(-) delete mode 100644 man/safe_engine.Rd diff --git a/DESCRIPTION b/DESCRIPTION index d660749..650c7dd 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -57,11 +57,14 @@ VignetteBuilder: knitr Collate: 'ArmadilloCredentials-class.R' 'audit_cr8tor.R' + 'audit_engine.R' + 'audit_governance.R' 'audit_safe_people.R' 'audit_safe_project.R' 'audit_study.R' 'dsROCrate-package.R' 'dsROCrate.R' + 'print.R' 'rocrate_report.R' 'safe_data.R' 'safe_output.R' diff --git a/man/safe_engine.Rd b/man/safe_engine.Rd deleted file mode 100644 index 51834f3..0000000 --- a/man/safe_engine.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/safe_engine.R -\name{safe_engine} -\alias{safe_engine} -\title{Generic Safe Principle Engine} -\usage{ -safe_engine(roc, entities = NULL, link_fns = NULL, attrs = NULL) -} -\arguments{ -\item{roc}{RO-Crate object, see \link[rocrateR:rocrate]{rocrateR::rocrate}.} - -\item{entities}{List of entities to be added.} - -\item{link_fns}{List of functions performing the linking.} - -\item{attrs}{Named list of attributes to attach.} -} -\description{ -Internal engine used by all safe_*() methods. -} -\keyword{internal} From 8781395dace3419ca0a9961e9a232b9ff7b28f72 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 25 Mar 2026 22:29:11 +0000 Subject: [PATCH 35/51] Add new global function `audit` to handle all types of audits, including audit_safe_people, audit_safe_project, audit_study and audit_cr8tor --- R/audit.R | 146 +++++++++++++++++++++++++++++++++++++++++ R/audit_cr8tor.R | 115 -------------------------------- R/audit_engine.R | 21 ++++++ R/audit_governance.R | 6 +- R/audit_safe_people.R | 54 --------------- R/audit_safe_project.R | 51 -------------- R/audit_study.R | 95 --------------------------- R/utils-audit.R | 7 ++ R/utils-cr8tor.R | 70 ++++++++++++++++++++ 9 files changed, 247 insertions(+), 318 deletions(-) create mode 100644 R/audit.R delete mode 100644 R/audit_cr8tor.R delete mode 100644 R/audit_safe_people.R delete mode 100644 R/audit_safe_project.R delete mode 100644 R/audit_study.R create mode 100644 R/utils-audit.R diff --git a/R/audit.R b/R/audit.R new file mode 100644 index 0000000..586d388 --- /dev/null +++ b/R/audit.R @@ -0,0 +1,146 @@ +#' Create an audit RO-Crate +#' +#' Create an audit RO-Crate following the 5 Safes Principles. +#' +#' This function handles various audit types, which will be dispatched based on +#' the input object. If the input object is +#' +#' \itemize{ +#' \item a _connection_ to a DataSHIELD server (e.g., OBiBa's Opal): +#'. generates an RO-Crate object with deployment details, including outputs. +#' \item a _path_ pointing to +#' \itemize{ +#' \item **a `cr8tor` archive / governance bundle**: generates an +#' RO-Crate object with pre-deployment governance details. +#' \item **an RO-Crate object**: generates an RO-Crate object with +#' clearly defined 5 Safes elements. +#' } +#' \item an _RO-Crate_ object: generates an RO-Crate object with clearly +#' defined 5 Safes elements. +#' } +#' @param x Object to be audited. This can be +#' \itemize{ +#' \item a _connection_ to a DataSHIELD server (e.g., OBiBa's Opal). +#' \item a _path_ pointing to an RO-Crate OR a `cr8tor` archive / +#'. governance bundle. +#' \item an _RO-Crate_ object. +#' } +#' Alternatively, a list of any of the above. +#' @param ... Additional arguments. +#' @param intent Additional object with governance bundle/specification of the +#' intent of a project. It takes the same types as `x`. +#' @inheritParams audit_engine +#' +#' @returns RO-Crate with audit details. +#' @export +audit <- function(x, ...) { + UseMethod("audit") +} + +#' @rdname audit +#' @export +audit.armadillo <- function(x, ..., intent = NULL) { + # +} + +#' @rdname audit +#' @export +audit.character <- function(x, ..., intent = NULL) { + # verify if the given path exists, if not, return an error message + if (!file.exists(x)) { + stop("The given file does not exist!", call. = FALSE) + } + + # attempt loading a `cr8tor` bundle + x_obj <- tryCatch( + load_cr8tor_bundle(x, ...), + error = function(e) NULL + ) + # alternatively, attempt loading an RO-Crate + if (is.null(x_obj)) { + x_obj <- tryCatch( + rocrateR::load_rocrate(x, ...), + error = function(e) NULL + ) + } + + if (is.null(x_obj)) { + stop( + "The given path does not point to a valid `cr8tor` archive nor an `rocrate", + call. = FALSE + ) + } + + # if `intent` is NOT NULL, audit this object + intent_audit <- if (!is.null(intent)) { + audit(intent, ...) + } else { + NULL + } + + # list of additional args + main_audit_args <- list(...) + + # check if `intent_audit` is not NULL + if (!is.null(intent_audit)) { + # extract Project(s) and People from the `intent` audit crate + safe_project_tbl <- intent_audit |> + flatten_safe_project() + safe_people_tbl <- intent_audit |> + flatten_safe_people() + + main_audit_args <- exclude_args(..., c("project", "user")) + + main_audit_args <- c( + main_audit_args, + project = safe_project_tbl$project, + user = safe_people_tbl$name + ) + } + + # call next method + main_audit <- audit(x_obj, main_audit_args) + + # return list + list(intent = intent_audit, deployment = main_audit) +} + +#' @rdname audit +#' @export +audit.cr8tor <- function(x, ..., intent = NULL) { + audit_engine(x, exclude_args(..., "path"), intent = intent) +} + +#' @rdname audit +#' @export +audit.list <- function(x, ..., intent = NULL) { + purrr::map(x, audit, ..., intent = intent) +} + +#' @rdname audit +#' @export +audit.opal <- function( + x, + ..., + intent = NULL, + project = NULL, + user = NULL, + logs_from = -Inf, + logs_to = Inf, + path = NULL +) { + audit_engine( + x, + project = project, + user = user, + logs_from = logs_from, + logs_to = logs_to, + path = path + ) +} + +#' @rdname audit +#' @export +audit.rocrate <- function(x, ..., intent = NULL) { + # +} diff --git a/R/audit_cr8tor.R b/R/audit_cr8tor.R deleted file mode 100644 index f688998..0000000 --- a/R/audit_cr8tor.R +++ /dev/null @@ -1,115 +0,0 @@ -#' Audit cr8tor project archive -#' -#' This audit loads a cr8tor project archive and generates an RO-Crate object -#' with pre-deployment governance details. This then can be rendered with -#' [rocrate_report()]. -#' -#' @param x Path to cr8tor archive / governance bundle. -#' @param ... Additional arguments for [rocrateR::load_rocrate]. -#' -#' @returns Audit RO-Crate with 5 Safes Components. -#' -#' @references https://karectl-crates.github.io/cr8tor-metamodel/ -#' @export -audit_cr8tor <- function(x, ...) { - UseMethod("audit_cr8tor") -} - -#' @rdname audit_cr8tor -#' @export -audit_cr8tor.character <- function(x, ...) { - bundle <- load_cr8tor_bundle(x, ...) - - # call next method - audit_cr8tor(bundle) -} - -#' @rdname audit_cr8tor -#' @export -audit_cr8tor.cr8tor <- function(x, ...) { - audit <- list( - metadata = extract_cr8tor_metadata(x), - integrity = extract_integrity_cr8tor(x), - safe_people = extract_safe_people_cr8tor(x), - safe_projects = extract_safe_projects_cr8tor(x), - safe_data = extract_safe_data_cr8tor(x), - safe_settings = extract_safe_settings_cr8tor(x), - safe_outputs = extract_safe_outputs_cr8tor(x), - user_projects = extract_user_projects_cr8tor(x), - user_groups = extract_user_groups_cr8tor(x), - groups = extract_groups_cr8tor(x), - permissions = extract_permissions_cr8tor(x) #, - # lineage = extract_lineage_cr8tor(x), - ) - - as_rocrate_audit(audit) -} - -#' Convert audit result into RO-Crate -#' -#' @param audit list returned by audit_cr8tor() -#' @return rocrate object -#' @noRd -as_rocrate_audit <- function(audit) { - rc <- rocrateR::rocrate_5s() - - # Root dataset describing the audit - rc <- rc |> - rocrateR::add_entity_value( - "./", - "name", - "cr8tor 5 Safes Audit", - overwrite = TRUE - ) |> - rocrateR::add_entity_value( - "./", - "description", - "Audit report generated from cr8tor archive", - overwrite = TRUE - ) - - # ---- Safe People ---- - rc <- rc |> - add_group_entities_cr8tor(audit$groups) |> - add_safe_people_entities_cr8tor( - audit$safe_people$users, - audit$user_projects - ) |> - link_people_to_root(audit$safe_people$users$username) - - # ---- Safe Projects ---- - rc <- rc |> - add_safe_project_entities_cr8tor( - audit$safe_projects, - audit$safe_data$assets - ) - - # ---- Safe Data ---- - rc <- rc |> - add_safe_data_entities_cr8tor(audit$safe_data$assets) - - # ---- Permissions ---- - rc <- rc |> - add_permission_entities_cr8tor( - expand_group_permissions_to_users( - perm_tbl = audit$permissions |> - dplyr::left_join( - audit$safe_projects, - by = c("project" = "project_id") - ), - membership_tbl = audit$user_groups, - data_tbl = audit$safe_data$assets - ) |> - dedupe_effective_permissions() - ) - - # ---- Safe Settings ---- - rc <- rc |> - add_safe_setting_entities_cr8tor(audit$safe_settings) - - # ---- Safe Outputs ---- - rc <- rc |> - add_safe_output_entities_cr8tor(audit$safe_outputs) - - rc -} diff --git a/R/audit_engine.R b/R/audit_engine.R index ef2be72..4bf122a 100644 --- a/R/audit_engine.R +++ b/R/audit_engine.R @@ -21,6 +21,27 @@ audit_engine <- function(x, ...) { UseMethod("audit_engine") } +#' @rdname audit_engine +#' @export +audit_engine.cr8tor <- function(x, ...) { + audit <- list( + metadata = extract_cr8tor_metadata(x), + integrity = extract_integrity_cr8tor(x), + safe_people = extract_safe_people_cr8tor(x), + safe_projects = extract_safe_projects_cr8tor(x), + safe_data = extract_safe_data_cr8tor(x), + safe_settings = extract_safe_settings_cr8tor(x), + safe_outputs = extract_safe_outputs_cr8tor(x), + user_projects = extract_user_projects_cr8tor(x), + user_groups = extract_user_groups_cr8tor(x), + groups = extract_groups_cr8tor(x), + permissions = extract_permissions_cr8tor(x) #, + # lineage = extract_lineage_cr8tor(x), + ) + + as_rocrate_audit(audit) +} + #' @rdname audit_engine #' @export audit_engine.opal <- function( diff --git a/R/audit_governance.R b/R/audit_governance.R index 22269a6..a1aae8c 100644 --- a/R/audit_governance.R +++ b/R/audit_governance.R @@ -7,7 +7,7 @@ #' #' @param x List with two named elements (`cr8tor` and `server`). #' @param ... Arguments passed on to [rocrateR::load_rocrate()] (excluding -#' `path`) and [audit_safe_project()] (excluding `project` and `user`). +#' `path`) and [audit()] (excluding `project` and `user`). #' #' @returns Audit RO-Crates with 5 Safes Components. #' @export @@ -40,7 +40,7 @@ audit_governance.list <- function(x, ...) { # utils::capture.output( suppressMessages(suppressWarnings({ cr8tor_audit_roc <- do.call( - audit_cr8tor, + audit, c(x = getElement(x, "cr8tor"), args_cr8tor) ) })) #, @@ -57,7 +57,7 @@ audit_governance.list <- function(x, ...) { # utils::capture.output( suppressMessages(suppressWarnings({ server_audit_roc <- do.call( - audit_safe_project, + audit, c( x = getElement(x, "server"), project = safe_project_tbl$project, diff --git a/R/audit_safe_people.R b/R/audit_safe_people.R deleted file mode 100644 index 6b069a6..0000000 --- a/R/audit_safe_people.R +++ /dev/null @@ -1,54 +0,0 @@ -#' Audit Safe People details -#' -#' Audit Safe People details from a 'DataSHIELD' server, an RO-Crate object or -#' a file path pointing to an RO-Crate. -#' -#' @inheritParams audit_engine -#' @param ... Other optional arguments, see full documentation for details. -#' -#' @returns Audit RO-Crate with 5 Safes Components. -#' @export -#' -# @examples -audit_safe_people <- function(x, ...) { - UseMethod("audit_safe_people") -} - -#' @rdname audit_safe_people -#' @export -audit_safe_people.default <- function(x, ...) { - stop( - "Unknown class, please try with a connection object (e.g., OBiBa's Opal)!" - ) -} - -#' @rdname audit_safe_people -#' @export -audit_safe_people.opal <- function( - x, - ..., - user, - project = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) { - # generate audit crate - crate <- audit_engine( - x, - project = project, - user = user, - logs_from = logs_from, - logs_to = logs_to, - path = path - ) - - # attach input args as attributes to the RO-Crate - attr(crate, "audit_type") <- "Safe People" - attr(crate, "path") <- path - attr(crate, "project") <- project - attr(crate, "user") <- user - - # return new RO-Crate - return(crate) -} diff --git a/R/audit_safe_project.R b/R/audit_safe_project.R deleted file mode 100644 index 92ff289..0000000 --- a/R/audit_safe_project.R +++ /dev/null @@ -1,51 +0,0 @@ -#' Audit Safe Project details -#' -#' Audit Safe Project details from a 'DataSHIELD' server, an RO-Crate object or -#' a file path pointing to an RO-Crate. -#' -#' @inheritParams audit_safe_people -#' @param ... Other optional arguments, see full documentation for details. -#' -#' @returns Audit RO-Crate with 5 Safes Components. -#' @export -audit_safe_project <- function(x, ...) { - UseMethod("audit_safe_project") -} - -#' @rdname audit_safe_project -#' @export -audit_safe_project.default <- function(x, ...) { - stop( - "Unknown class, please try with a connection object (e.g., OBiBa's Opal)!" - ) -} - -#' @rdname audit_safe_project -#' @export -audit_safe_project.opal <- function( - x, - ..., - project, - user = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) { - # generate audit crate - crate <- audit_engine( - x, - project = project, - user = user, - logs_from = logs_from, - logs_to = logs_to, - path = path - ) - - # attach input args as attributes to the RO-Crate - attr(crate, "audit_type") <- "Safe Project" - attr(crate, "path") <- path - attr(crate, "project") <- project - - # return new RO-Crate - return(crate) -} diff --git a/R/audit_study.R b/R/audit_study.R deleted file mode 100644 index b158602..0000000 --- a/R/audit_study.R +++ /dev/null @@ -1,95 +0,0 @@ -#' Audit Study details -#' -#' Audit Study details from a 'DataSHIELD' server, an RO-Crate object or -#' a file path pointing to an RO-Crate. -#' -#' @inheritParams audit_safe_people -#' @param ... Other optional arguments, see full documentation for details. -#' -#' @returns Updated RO-Crate object with Study information. -#' @export -audit_study <- function(x, ...) { - UseMethod("audit_study") -} - -#' @rdname audit_study -#' @export -audit_study.default <- function(x, ...) { - stop( - "Unknown class, please try a named list of connections (e.g., OBiBa's Opal)", - " or a single connection object!" - ) -} - -#' @rdname audit_study -#' @export -audit_study.list <- function( - x, - ..., - project = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) { - # local bindings - name <- principal <- project_tables_all <- subject <- table <- type <- NULL - - utils::capture.output( - suppressMessages(suppressWarnings({ - safe_project_reports <- x |> - purrr::map(function(conn) { - audit_study( - conn, - project = project, - logs_from = logs_from, - logs_to = logs_to, - path = path - ) - }) - })), - file = nullfile() - ) - - # attach input args as attributes to the RO-Crate - attr(safe_project_reports, "audit_type") <- "Study" - attr(safe_project_reports, "path") <- path - attr(safe_project_reports, "project") <- project - - # return list with new RO-Crates (one per connection given) - return(safe_project_reports) -} - -#' @rdname audit_study -#' @export -audit_study.opal <- function( - x, - ..., - project = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) { - # local bindings - name <- principal <- project_tables_all <- subject <- table <- type <- NULL - - utils::capture.output( - suppressMessages(suppressWarnings({ - safe_project_reports <- x |> - audit_safe_project( - project = project, - logs_from = logs_from, - logs_to = logs_to, - path = path - ) - })), - file = nullfile() - ) - - # attach input args as attributes to the RO-Crate - attr(safe_project_reports, "audit_type") <- "Study" - attr(safe_project_reports, "path") <- path - attr(safe_project_reports, "project") <- project - - # return list with new RO-Crates (one per connection given) - return(safe_project_reports) -} diff --git a/R/utils-audit.R b/R/utils-audit.R new file mode 100644 index 0000000..ebc3524 --- /dev/null +++ b/R/utils-audit.R @@ -0,0 +1,7 @@ +exclude_args <- function(..., excluded) { + # capture additional args + args <- list(...) + arg_names <- names(args) + # exclude args that shouldn't be passed to the next function + args[!(arg_names %in% excluded)] +} diff --git a/R/utils-cr8tor.R b/R/utils-cr8tor.R index 2f3cf47..b4664b9 100644 --- a/R/utils-cr8tor.R +++ b/R/utils-cr8tor.R @@ -223,6 +223,76 @@ add_safe_output_entities_cr8tor <- function(rc, tbl) { ) } +#' Convert audit result into RO-Crate +#' +#' @param audit list returned by audit.cr8tor() +#' @return rocrate object +#' @noRd +as_rocrate_audit <- function(audit) { + rc <- rocrateR::rocrate_5s() + + # Root dataset describing the audit + rc <- rc |> + rocrateR::add_entity_value( + "./", + "name", + "cr8tor 5 Safes Audit", + overwrite = TRUE + ) |> + rocrateR::add_entity_value( + "./", + "description", + "Audit report generated from cr8tor archive", + overwrite = TRUE + ) + + # ---- Safe People ---- + rc <- rc |> + add_group_entities_cr8tor(audit$groups) |> + add_safe_people_entities_cr8tor( + audit$safe_people$users, + audit$user_projects + ) |> + link_people_to_root(audit$safe_people$users$username) + + # ---- Safe Projects ---- + rc <- rc |> + add_safe_project_entities_cr8tor( + audit$safe_projects, + audit$safe_data$assets + ) + + # ---- Safe Data ---- + rc <- rc |> + add_safe_data_entities_cr8tor(audit$safe_data$assets) + + # ---- Permissions ---- + rc <- rc |> + add_permission_entities_cr8tor( + expand_group_permissions_to_users( + perm_tbl = audit$permissions |> + dplyr::left_join( + audit$safe_projects, + by = c("project" = "project_id") + ), + membership_tbl = audit$user_groups, + data_tbl = audit$safe_data$assets + ) |> + dedupe_effective_permissions() + ) + + # ---- Safe Settings ---- + rc <- rc |> + add_safe_setting_entities_cr8tor(audit$safe_settings) + + # ---- Safe Outputs ---- + rc <- rc |> + add_safe_output_entities_cr8tor(audit$safe_outputs) + + rc +} + + #' Keep strongest permission per user-asset pair #' #' @param perm_tbl Tibble with username, asset, permission. From ce9d394426a59bcd32a94338379c2b7768726395 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 25 Mar 2026 22:29:33 +0000 Subject: [PATCH 36/51] New build --- DESCRIPTION | 6 +-- NAMESPACE | 21 ++++----- man/audit.Rd | 90 +++++++++++++++++++++++++++++++++++++++ man/audit_cr8tor.Rd | 30 ------------- man/audit_engine.Rd | 3 ++ man/audit_governance.Rd | 2 +- man/audit_safe_people.Rd | 51 ---------------------- man/audit_safe_project.Rd | 51 ---------------------- man/audit_study.Rd | 57 ------------------------- 9 files changed, 104 insertions(+), 207 deletions(-) create mode 100644 man/audit.Rd delete mode 100644 man/audit_cr8tor.Rd delete mode 100644 man/audit_safe_people.Rd delete mode 100644 man/audit_safe_project.Rd delete mode 100644 man/audit_study.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 650c7dd..cdf67bc 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -56,12 +56,9 @@ Depends: VignetteBuilder: knitr Collate: 'ArmadilloCredentials-class.R' - 'audit_cr8tor.R' + 'audit.R' 'audit_engine.R' 'audit_governance.R' - 'audit_safe_people.R' - 'audit_safe_project.R' - 'audit_study.R' 'dsROCrate-package.R' 'dsROCrate.R' 'print.R' @@ -72,6 +69,7 @@ Collate: 'safe_project.R' 'safe_setting.R' 'utils-armadillo.R' + 'utils-audit.R' 'utils-connection.R' 'utils-cr8tor.R' 'utils-date.R' diff --git a/NAMESPACE b/NAMESPACE index d139b97..f5618b7 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,16 +1,14 @@ # Generated by roxygen2: do not edit by hand -S3method(audit_cr8tor,character) -S3method(audit_cr8tor,cr8tor) +S3method(audit,armadillo) +S3method(audit,character) +S3method(audit,cr8tor) +S3method(audit,list) +S3method(audit,opal) +S3method(audit,rocrate) +S3method(audit_engine,cr8tor) S3method(audit_engine,opal) S3method(audit_governance,list) -S3method(audit_safe_people,default) -S3method(audit_safe_people,opal) -S3method(audit_safe_project,default) -S3method(audit_safe_project,opal) -S3method(audit_study,default) -S3method(audit_study,list) -S3method(audit_study,opal) S3method(extract_safe_data,opal) S3method(extract_safe_data,rocrate) S3method(extract_safe_output,opal) @@ -60,11 +58,8 @@ S3method(safe_setting,default) S3method(safe_setting,opal) S3method(safe_setting,rocrate) export(armadillo_login) -export(audit_cr8tor) +export(audit) export(audit_governance) -export(audit_safe_people) -export(audit_safe_project) -export(audit_study) export(init) export(load_cr8tor_bundle) export(rocrate_report) diff --git a/man/audit.Rd b/man/audit.Rd new file mode 100644 index 0000000..c92afb4 --- /dev/null +++ b/man/audit.Rd @@ -0,0 +1,90 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/audit.R +\name{audit} +\alias{audit} +\alias{audit.armadillo} +\alias{audit.character} +\alias{audit.cr8tor} +\alias{audit.list} +\alias{audit.opal} +\alias{audit.rocrate} +\title{Create an audit RO-Crate} +\usage{ +audit(x, ...) + +\method{audit}{armadillo}(x, ..., intent = NULL) + +\method{audit}{character}(x, ..., intent = NULL) + +\method{audit}{cr8tor}(x, ..., intent = NULL) + +\method{audit}{list}(x, ..., intent = NULL) + +\method{audit}{opal}( + x, + ..., + intent = NULL, + project = NULL, + user = NULL, + logs_from = -Inf, + logs_to = Inf, + path = NULL +) + +\method{audit}{rocrate}(x, ..., intent = NULL) +} +\arguments{ +\item{x}{Object to be audited. This can be +\itemize{ +\item a \emph{connection} to a DataSHIELD server (e.g., OBiBa's Opal). +\item a \emph{path} pointing to an RO-Crate OR a \code{cr8tor} archive / +. governance bundle. +\item an \emph{RO-Crate} object. +} +Alternatively, a list of any of the above.} + +\item{...}{Additional arguments.} + +\item{intent}{Additional object with governance bundle/specification of the +intent of a project. It takes the same types as \code{x}.} + +\item{project}{String with project name(s) from which to extra Safe Project +details.} + +\item{user}{String with the user name for which to extract Safe People +details.} + +\item{logs_from}{Lower limit timestamp to filter out the outputs generated +(default: \code{-Inf}, everything up to \code{logs_to})} + +\item{logs_to}{Upper limit timestamp to filter out the outputs generated +(default: \code{Inf}, everything from \code{logs_from} onwards).} + +\item{path}{String with path pointing to the root of the RO-Crate. This will +be used to store log files. If not provided, logs will be stored within +the RO-Crate returned by this function.} +} +\value{ +RO-Crate with audit details. +} +\description{ +Create an audit RO-Crate following the 5 Safes Principles. +} +\details{ +This function handles various audit types, which will be dispatched based on +the input object. If the input object is + +\itemize{ +\item a \emph{connection} to a DataSHIELD server (e.g., OBiBa's Opal): +. generates an RO-Crate object with deployment details, including outputs. +\item a \emph{path} pointing to +\itemize{ +\item \strong{a \code{cr8tor} archive / governance bundle}: generates an +RO-Crate object with pre-deployment governance details. +\item \strong{an RO-Crate object}: generates an RO-Crate object with +clearly defined 5 Safes elements. +} +\item an \emph{RO-Crate} object: generates an RO-Crate object with clearly +defined 5 Safes elements. +} +} diff --git a/man/audit_cr8tor.Rd b/man/audit_cr8tor.Rd deleted file mode 100644 index 38ee1fd..0000000 --- a/man/audit_cr8tor.Rd +++ /dev/null @@ -1,30 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/audit_cr8tor.R -\name{audit_cr8tor} -\alias{audit_cr8tor} -\alias{audit_cr8tor.character} -\alias{audit_cr8tor.cr8tor} -\title{Audit cr8tor project archive} -\usage{ -audit_cr8tor(x, ...) - -\method{audit_cr8tor}{character}(x, ...) - -\method{audit_cr8tor}{cr8tor}(x, ...) -} -\arguments{ -\item{x}{Path to cr8tor archive / governance bundle.} - -\item{...}{Additional arguments for \link[rocrateR:load_rocrate]{rocrateR::load_rocrate}.} -} -\value{ -Audit RO-Crate with 5 Safes Components. -} -\description{ -This audit loads a cr8tor project archive and generates an RO-Crate object -with pre-deployment governance details. This then can be rendered with -\code{\link[=rocrate_report]{rocrate_report()}}. -} -\references{ -https://karectl-crates.github.io/cr8tor-metamodel/ -} diff --git a/man/audit_engine.Rd b/man/audit_engine.Rd index 2d7ca4e..5e134b0 100644 --- a/man/audit_engine.Rd +++ b/man/audit_engine.Rd @@ -2,11 +2,14 @@ % Please edit documentation in R/audit_engine.R \name{audit_engine} \alias{audit_engine} +\alias{audit_engine.cr8tor} \alias{audit_engine.opal} \title{Audit Engine} \usage{ audit_engine(x, ...) +\method{audit_engine}{cr8tor}(x, ...) + \method{audit_engine}{opal}( x, ..., diff --git a/man/audit_governance.Rd b/man/audit_governance.Rd index 1f5154a..1a6877b 100644 --- a/man/audit_governance.Rd +++ b/man/audit_governance.Rd @@ -13,7 +13,7 @@ audit_governance(x, ...) \item{x}{List with two named elements (\code{cr8tor} and \code{server}).} \item{...}{Arguments passed on to \code{\link[rocrateR:load_rocrate]{rocrateR::load_rocrate()}} (excluding -\code{path}) and \code{\link[=audit_safe_project]{audit_safe_project()}} (excluding \code{project} and \code{user}).} +\code{path}) and \code{\link[=audit]{audit()}} (excluding \code{project} and \code{user}).} } \value{ Audit RO-Crates with 5 Safes Components. diff --git a/man/audit_safe_people.Rd b/man/audit_safe_people.Rd deleted file mode 100644 index e8a7e16..0000000 --- a/man/audit_safe_people.Rd +++ /dev/null @@ -1,51 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/audit_safe_people.R -\name{audit_safe_people} -\alias{audit_safe_people} -\alias{audit_safe_people.default} -\alias{audit_safe_people.opal} -\title{Audit Safe People details} -\usage{ -audit_safe_people(x, ...) - -\method{audit_safe_people}{default}(x, ...) - -\method{audit_safe_people}{opal}( - x, - ..., - user, - project = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) -} -\arguments{ -\item{x}{This can be a connection to a 'DataSHIELD' server (e.g., object with -the \code{opal} class, see \code{\link[opalr:opal.login]{opalr::opal.login()}}).} - -\item{...}{Other optional arguments, see full documentation for details.} - -\item{user}{String with the user name for which to extract Safe People -details.} - -\item{project}{String with project name(s) from which to extra Safe Project -details.} - -\item{logs_from}{Lower limit timestamp to filter out the outputs generated -(default: \code{-Inf}, everything up to \code{logs_to})} - -\item{logs_to}{Upper limit timestamp to filter out the outputs generated -(default: \code{Inf}, everything from \code{logs_from} onwards).} - -\item{path}{String with path pointing to the root of the RO-Crate. This will -be used to store log files. If not provided, logs will be stored within -the RO-Crate returned by this function.} -} -\value{ -Audit RO-Crate with 5 Safes Components. -} -\description{ -Audit Safe People details from a 'DataSHIELD' server, an RO-Crate object or -a file path pointing to an RO-Crate. -} diff --git a/man/audit_safe_project.Rd b/man/audit_safe_project.Rd deleted file mode 100644 index f39c5fd..0000000 --- a/man/audit_safe_project.Rd +++ /dev/null @@ -1,51 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/audit_safe_project.R -\name{audit_safe_project} -\alias{audit_safe_project} -\alias{audit_safe_project.default} -\alias{audit_safe_project.opal} -\title{Audit Safe Project details} -\usage{ -audit_safe_project(x, ...) - -\method{audit_safe_project}{default}(x, ...) - -\method{audit_safe_project}{opal}( - x, - ..., - project, - user = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) -} -\arguments{ -\item{x}{This can be a connection to a 'DataSHIELD' server (e.g., object with -the \code{opal} class, see \code{\link[opalr:opal.login]{opalr::opal.login()}}).} - -\item{...}{Other optional arguments, see full documentation for details.} - -\item{project}{String with project name(s) from which to extra Safe Project -details.} - -\item{user}{String with the user name for which to extract Safe People -details.} - -\item{logs_from}{Lower limit timestamp to filter out the outputs generated -(default: \code{-Inf}, everything up to \code{logs_to})} - -\item{logs_to}{Upper limit timestamp to filter out the outputs generated -(default: \code{Inf}, everything from \code{logs_from} onwards).} - -\item{path}{String with path pointing to the root of the RO-Crate. This will -be used to store log files. If not provided, logs will be stored within -the RO-Crate returned by this function.} -} -\value{ -Audit RO-Crate with 5 Safes Components. -} -\description{ -Audit Safe Project details from a 'DataSHIELD' server, an RO-Crate object or -a file path pointing to an RO-Crate. -} diff --git a/man/audit_study.Rd b/man/audit_study.Rd deleted file mode 100644 index e9e9976..0000000 --- a/man/audit_study.Rd +++ /dev/null @@ -1,57 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/audit_study.R -\name{audit_study} -\alias{audit_study} -\alias{audit_study.default} -\alias{audit_study.list} -\alias{audit_study.opal} -\title{Audit Study details} -\usage{ -audit_study(x, ...) - -\method{audit_study}{default}(x, ...) - -\method{audit_study}{list}( - x, - ..., - project = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) - -\method{audit_study}{opal}( - x, - ..., - project = NULL, - logs_from = -Inf, - logs_to = Inf, - path = NULL -) -} -\arguments{ -\item{x}{This can be a connection to a 'DataSHIELD' server (e.g., object with -the \code{opal} class, see \code{\link[opalr:opal.login]{opalr::opal.login()}}).} - -\item{...}{Other optional arguments, see full documentation for details.} - -\item{project}{String with project name(s) from which to extra Safe Project -details.} - -\item{logs_from}{Lower limit timestamp to filter out the outputs generated -(default: \code{-Inf}, everything up to \code{logs_to})} - -\item{logs_to}{Upper limit timestamp to filter out the outputs generated -(default: \code{Inf}, everything from \code{logs_from} onwards).} - -\item{path}{String with path pointing to the root of the RO-Crate. This will -be used to store log files. If not provided, logs will be stored within -the RO-Crate returned by this function.} -} -\value{ -Updated RO-Crate object with Study information. -} -\description{ -Audit Study details from a 'DataSHIELD' server, an RO-Crate object or -a file path pointing to an RO-Crate. -} From 360ef980c21c13e260f629f8fc02170a88554661 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 25 Mar 2026 22:29:54 +0000 Subject: [PATCH 37/51] Update tests to capture changes in the audit module --- tests/testthat/test-audit_safe_people.R | 93 ------------------------ tests/testthat/test-audit_safe_project.R | 83 --------------------- tests/testthat/test-audit_study.R | 93 ------------------------ tests/testthat/test-rocrate_report.R | 6 +- 4 files changed, 3 insertions(+), 272 deletions(-) delete mode 100644 tests/testthat/test-audit_safe_people.R delete mode 100644 tests/testthat/test-audit_safe_project.R delete mode 100644 tests/testthat/test-audit_study.R diff --git a/tests/testthat/test-audit_safe_people.R b/tests/testthat/test-audit_safe_people.R deleted file mode 100644 index ac4325a..0000000 --- a/tests/testthat/test-audit_safe_people.R +++ /dev/null @@ -1,93 +0,0 @@ -test_that("default method errors for unsupported classes", { - expect_error( - audit_safe_people(123), - "Unknown class" - ) -}) - -test_that("rocrate method fails for invalid object", { - expect_error( - audit_safe_people(list()), - class = "error" - ) -}) - -test_that("opal method returns RO-Crate with expected attributes", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_safe_people( - opal_con, - project = attr(opal_con, "PROJECT"), - user = attr(opal_con, "PEOPLE") - ) - ) - - expect_s3_class(crate, "rocrate") - - expect_equal(attr(crate, "audit_type"), "Safe People") - expect_true("user" %in% names(attributes(crate))) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("opal method works with specific project", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_safe_people( - opal_con, - project = attr(opal_con, "PROJECT"), - user = attr(opal_con, "PEOPLE") - ) - ) - - expect_s3_class(crate, "rocrate") - expect_equal(attr(crate, "project"), attr(opal_con, "PROJECT")) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("opal method errors for unknown project", { - # setup - opal_con <- opal_demo_con() - - expect_error( - audit_safe_people( - opal_con, - project = "NON_EXISTENT_PROJECT", - user = attr(opal_con, "PEOPLE") - ), - "The following project is not valid", - fixed = TRUE - ) -}) - -test_that("path argument is stored as attribute", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_safe_people( - opal_con, - path = tempdir(), - project = attr(opal_con, "PROJECT"), - user = attr(opal_con, "PEOPLE") - ) - ) - - expect_equal(attr(crate, "path"), tempdir()) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) diff --git a/tests/testthat/test-audit_safe_project.R b/tests/testthat/test-audit_safe_project.R deleted file mode 100644 index 6880c40..0000000 --- a/tests/testthat/test-audit_safe_project.R +++ /dev/null @@ -1,83 +0,0 @@ -test_that("default method errors for unsupported classes", { - expect_error( - audit_safe_project(123), - "Unknown class" - ) -}) - -test_that("rocrate method fails for invalid object", { - expect_error( - audit_safe_project(list()), - class = "error" - ) -}) - -test_that("opal method returns RO-Crate with expected attributes", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_safe_project(opal_con, project = attr(opal_con, "PROJECT")) - ) - - expect_s3_class(crate, "rocrate") - - expect_equal(attr(crate, "audit_type"), "Safe Project") - expect_true("project" %in% names(attributes(crate))) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("opal method works with specific project", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_safe_project( - opal_con, - project = attr(opal_con, "PROJECT") - ) - ) - - expect_s3_class(crate, "rocrate") - expect_equal(attr(crate, "project"), attr(opal_con, "PROJECT")) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("opal method errors for unknown project", { - # setup - opal_con <- opal_demo_con() - - expect_error( - audit_safe_project(opal_con, project = "NON_EXISTENT_PROJECT"), - "The following project is not valid", - fixed = TRUE - ) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("path argument is stored as attribute", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_safe_project( - opal_con, - project = attr(opal_con, "PROJECT"), - path = tempdir() - ) - ) - - expect_equal(attr(crate, "path"), tempdir()) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) diff --git a/tests/testthat/test-audit_study.R b/tests/testthat/test-audit_study.R deleted file mode 100644 index ff5bc1c..0000000 --- a/tests/testthat/test-audit_study.R +++ /dev/null @@ -1,93 +0,0 @@ -test_that("default method errors for unsupported classes", { - expect_error( - audit_study(123), - "Unknown class" - ) -}) - -test_that("list method validates a list object with", { - expect_no_error( - audit_study(list()) - ) -}) - -test_that("list method fails for invalid object", { - # setup - crate <- rocrateR::rocrate_5s() - - expect_error( - audit_study(crate), - class = "error" - ) -}) - -test_that("list method returns list with expected attributes", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_study( - list(demo = opal_con), - project = attr(opal_con, "PROJECT") - ) - ) - - expect_equal(attr(crate, "audit_type"), "Study") - expect_true("demo" %in% names(crate)) - expect_true(length(crate) == 1) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("list method works with specific project", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_study( - list(demo = opal_con), - project = attr(opal_con, "PROJECT") - ) - ) - - expect_equal(attr(crate, "project"), attr(opal_con, "PROJECT")) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("list method errors for unknown project", { - # setup - opal_con <- opal_demo_con() - - expect_error( - audit_study(list(demo = opal_con), project = "NON_EXISTENT_PROJECT"), - "The following project is not valid:", - fixed = TRUE - ) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) - -test_that("path argument is stored as attribute", { - # setup - opal_con <- opal_demo_con() - - # ignore warning about empty logs - suppressWarnings( - crate <- audit_study( - list(demo = opal_con), - path = tempdir(), - project = attr(opal_con, "PROJECT") - ) - ) - - expect_equal(attr(crate, "path"), tempdir()) - - # close connection to OBiBa's Opal demo server - opalr::opal.logout(opal_con) -}) diff --git a/tests/testthat/test-rocrate_report.R b/tests/testthat/test-rocrate_report.R index f9bd577..7ad8ecd 100644 --- a/tests/testthat/test-rocrate_report.R +++ b/tests/testthat/test-rocrate_report.R @@ -284,7 +284,7 @@ test_that("rocrate_report works end-to-end with real dsROCrate audit outputs", { # generate audit RO-Crate for a Safe Project # suppress warnings about missing logs suppressWarnings({ - roc <- audit_safe_project( + roc <- audit( opal_con, project = "CNSIM", path = tmp_dir @@ -327,7 +327,7 @@ test_that("rocrate_report.character loads crate from disk", { # generate audit RO-Crate for a Safe Project # suppress warnings about missing logs suppressWarnings({ - roc <- audit_safe_project( + roc <- audit( opal_con, project = "CNSIM", path = tmp_dir @@ -367,7 +367,7 @@ test_that("rocrate_report.list aggregates outputs from a study audit", { opal_con <- opal_demo_con() # generate audit RO-Crate for a study - roc <- audit_study( + roc <- audit( list(demo = opal_con), project = "CNSIM", path = tmp_dir From 6dd3cadb0fb150ef9352c93ea385b670979b16c0 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 26 Mar 2026 09:39:50 +0000 Subject: [PATCH 38/51] Update calls to audit_safe_* with the new audit() global function --- README.Rmd | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/README.Rmd b/README.Rmd index 15f4b8c..54c3c0a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -394,7 +394,7 @@ safe_people_crate_v1 <- opalr::opal.login( password = USERPASS, url = SERVER ) |> - dsROCrate::audit_safe_people(user = "dsuser", project = "CNSIM") + dsROCrate::audit(user = "dsuser", project = "CNSIM") print(safe_people_crate_v1) ``` @@ -430,28 +430,6 @@ safe_people_crate_v1 |> overwrite = TRUE) ``` -##### List all accessible projects & tables for an user -```{r safe_people_crate_audit_v2, warning=FALSE} -safe_people_crate_v2 <- opalr::opal.login( - username = USERNAME, - password = USERPASS, - url = SERVER -) |> - dsROCrate::audit_safe_people(user = "dsuser") - -safe_people_crate_v2_rmd <- tempfile(fileext = ".Rmd") # temporary file - -safe_people_crate_contents_v2 <- safe_people_crate_v2 |> - dsROCrate::rocrate_report(filepath = safe_people_crate_v2_rmd, render = FALSE) - -# display Overview diagram -safe_people_crate_contents_v2$overview_diagram - -# display Overview data (Safe People, Safe Projects and Safe Data) -safe_people_crate_contents_v2$overview_data |> - knitr::kable() -``` - ### 3.2. Audit Project ##### List users and dataset/table level permissions within a project @@ -461,7 +439,7 @@ safe_project_crate_v1 <- opalr::opal.login( password = USERPASS, url = SERVER ) |> - dsROCrate::audit_safe_project(project = "CNSIM") + dsROCrate::audit(project = "CNSIM") print(safe_project_crate_v1) ``` @@ -516,7 +494,7 @@ study_crate_v1 <- url = "https://opal-demo.obiba.org" ) ) |> - dsROCrate::audit_study(project = "CNSIM") + dsROCrate::audit(project = "CNSIM") print(study_crate_v1) ``` @@ -564,7 +542,6 @@ You are welcome to use any of the following hex codes when referencing `{dsROCra ```{r, echo = FALSE, message = FALSE, error = FALSE} unlink(safe_people_crate_v1_rmd, TRUE, TRUE) -unlink(safe_people_crate_v2_rmd, TRUE, TRUE) unlink(safe_project_crate_v1_rmd, TRUE, TRUE) unlink(study_crate_v1_rmd, TRUE, TRUE) ``` From 13c09278805f1c2e0269e7f45f9b2ecaf8aa914f Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 26 Mar 2026 11:17:38 +0000 Subject: [PATCH 39/51] Add internal function audit_intent, that handles if the intent arg is given to audit --- R/utils-audit.R | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/R/utils-audit.R b/R/utils-audit.R index ebc3524..5be4ee8 100644 --- a/R/utils-audit.R +++ b/R/utils-audit.R @@ -1,3 +1,34 @@ +audit_intent <- function(intent, excluded_args = c("project", "user"), ...) { + # if `intent` is NOT NULL, audit this object + intent_audit <- if (!is.null(intent)) { + audit(intent, ...) + } else { + NULL + } + + # list of additional args + main_audit_args <- list(...) + + # check if `intent_audit` is not NULL + if (!is.null(intent_audit)) { + # extract Project(s) and People from the `intent` audit crate + safe_project_tbl <- intent_audit |> + flatten_safe_project() + safe_people_tbl <- intent_audit |> + flatten_safe_people() + + main_audit_args <- exclude_args(main_audit_args, excluded = excluded_args) + + main_audit_args <- c( + main_audit_args, + project = safe_project_tbl$project, + user = safe_people_tbl$name + ) + } + + list(intent_audit = intent_audit, main_audit_args = main_audit_args) +} + exclude_args <- function(..., excluded) { # capture additional args args <- list(...) From 4d42f530921993860ef92c8f8fb4dedce2111385 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 26 Mar 2026 11:18:28 +0000 Subject: [PATCH 40/51] Combine the audit_governance into the main audit function, to replicate the behaviour, the intent argument must be provided when calling audit --- R/audit.R | 68 ++++++++++++++++++------------------ R/audit_governance.R | 83 -------------------------------------------- 2 files changed, 35 insertions(+), 116 deletions(-) delete mode 100644 R/audit_governance.R diff --git a/R/audit.R b/R/audit.R index 586d388..820ee27 100644 --- a/R/audit.R +++ b/R/audit.R @@ -71,44 +71,35 @@ audit.character <- function(x, ..., intent = NULL) { ) } - # if `intent` is NOT NULL, audit this object - intent_audit <- if (!is.null(intent)) { - audit(intent, ...) - } else { - NULL - } - - # list of additional args - main_audit_args <- list(...) - - # check if `intent_audit` is not NULL - if (!is.null(intent_audit)) { - # extract Project(s) and People from the `intent` audit crate - safe_project_tbl <- intent_audit |> - flatten_safe_project() - safe_people_tbl <- intent_audit |> - flatten_safe_people() - - main_audit_args <- exclude_args(..., c("project", "user")) - - main_audit_args <- c( - main_audit_args, - project = safe_project_tbl$project, - user = safe_people_tbl$name - ) - } + # attempt auditing intent + intent_lst <- audit_intent(intent, ...) # call next method - main_audit <- audit(x_obj, main_audit_args) + main_audit <- audit(x_obj, intent_lst$main_audit_args) # return list - list(intent = intent_audit, deployment = main_audit) + if (is.null(intent_lst$intent_audit)) { + return(main_audit) + } + list(intent = intent_lst$intent_audit, deployment = main_audit) } #' @rdname audit #' @export audit.cr8tor <- function(x, ..., intent = NULL) { - audit_engine(x, exclude_args(..., "path"), intent = intent) + # attempt auditing intent + intent_lst <- audit_intent(intent, ..., excluded_args = "path") + + # audit_engine(x, exclude_args(..., "path"), intent = intent) + + # call next method + main_audit <- audit_engine(x, intent_lst$main_audit_args) + + # return list + if (is.null(intent_lst$intent_audit)) { + return(main_audit) + } + list(intent = intent_lst$intent_audit, deployment = main_audit) } #' @rdname audit @@ -129,14 +120,25 @@ audit.opal <- function( logs_to = Inf, path = NULL ) { - audit_engine( + # attempt auditing intent + intent_lst <- audit_intent(intent, ...) + + # call next method + main_audit <- audit_engine( x, - project = project, - user = user, + project = c(intent_lst$main_audit_args$project, project), + user = c(intent_lst$main_audit_args$user, user), logs_from = logs_from, logs_to = logs_to, - path = path + path = path, + intent_lst$main_audit_args ) + + # return list + if (is.null(intent_lst$intent_audit)) { + return(main_audit) + } + list(intent = intent_lst$intent_audit, deployment = main_audit) } #' @rdname audit diff --git a/R/audit_governance.R b/R/audit_governance.R deleted file mode 100644 index a1aae8c..0000000 --- a/R/audit_governance.R +++ /dev/null @@ -1,83 +0,0 @@ -#' Audit Governance -#' -#' Audit Governance for a project. This function takes: -#' -#' - a `cr8tor` archive / governance bundle (intent) -#' - a `server` object to a DataSHIELD server (deployment) -#' -#' @param x List with two named elements (`cr8tor` and `server`). -#' @param ... Arguments passed on to [rocrateR::load_rocrate()] (excluding -#' `path`) and [audit()] (excluding `project` and `user`). -#' -#' @returns Audit RO-Crates with 5 Safes Components. -#' @export -audit_governance <- function(x, ...) { - UseMethod("audit_governance") -} - -#' @rdname audit_governance -#' @export -audit_governance.list <- function(x, ...) { - # check that both `cr8tor` and `server` values are provided - idx <- c("cr8tor", "server") %in% names(x) - if (!all(idx)) { - stop( - "Both a `cr8tor` and `server` are required! Missing: \n", - paste0(" - ", c("cr8tor", "server")[!idx], collapse = "\n"), - call. = FALSE - ) - } - - # capture additional args - args <- list(...) - arg_names <- names(args) - # exclude args that should not be passed to either function - args_cr8tor <- args[!(arg_names %in% "path")] - args_server <- args[!(arg_names %in% c("project", "user"))] - - # generate audits for each component - ## cr8tor - # utils::capture.output( - suppressMessages(suppressWarnings({ - cr8tor_audit_roc <- do.call( - audit, - c(x = getElement(x, "cr8tor"), args_cr8tor) - ) - })) #, - # file = nullfile() - # ) - - ## extract Project(s) and People from the cr8tor audit crate - safe_project_tbl <- cr8tor_audit_roc |> - flatten_safe_project() - safe_people_tbl <- cr8tor_audit_roc |> - flatten_safe_people() - - ## server - # utils::capture.output( - suppressMessages(suppressWarnings({ - server_audit_roc <- do.call( - audit, - c( - x = getElement(x, "server"), - project = safe_project_tbl$project, - user = safe_people_tbl$name, - args_server - ) - ) - })) #, - # file = nullfile() - # ) - - # combine audit RO-Crate - gov_audit <- list( - intent = cr8tor_audit_roc, - deployment = server_audit_roc - ) - - # attach input args as attributes to the RO-Crate - attr(gov_audit, "audit_type") <- "Governance audit" - - # return list with new RO-Crates - return(gov_audit) -} From fda356a73f4035b51f8f6806b2eed5bc1e41ed8e Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 26 Mar 2026 11:18:42 +0000 Subject: [PATCH 41/51] New build --- DESCRIPTION | 1 - NAMESPACE | 2 -- man/audit_governance.Rd | 29 ----------------------------- 3 files changed, 32 deletions(-) delete mode 100644 man/audit_governance.Rd diff --git a/DESCRIPTION b/DESCRIPTION index cdf67bc..f6a3bef 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -58,7 +58,6 @@ Collate: 'ArmadilloCredentials-class.R' 'audit.R' 'audit_engine.R' - 'audit_governance.R' 'dsROCrate-package.R' 'dsROCrate.R' 'print.R' diff --git a/NAMESPACE b/NAMESPACE index f5618b7..dd70421 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -8,7 +8,6 @@ S3method(audit,opal) S3method(audit,rocrate) S3method(audit_engine,cr8tor) S3method(audit_engine,opal) -S3method(audit_governance,list) S3method(extract_safe_data,opal) S3method(extract_safe_data,rocrate) S3method(extract_safe_output,opal) @@ -59,7 +58,6 @@ S3method(safe_setting,opal) S3method(safe_setting,rocrate) export(armadillo_login) export(audit) -export(audit_governance) export(init) export(load_cr8tor_bundle) export(rocrate_report) diff --git a/man/audit_governance.Rd b/man/audit_governance.Rd deleted file mode 100644 index 1a6877b..0000000 --- a/man/audit_governance.Rd +++ /dev/null @@ -1,29 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/audit_governance.R -\name{audit_governance} -\alias{audit_governance} -\alias{audit_governance.list} -\title{Audit Governance} -\usage{ -audit_governance(x, ...) - -\method{audit_governance}{list}(x, ...) -} -\arguments{ -\item{x}{List with two named elements (\code{cr8tor} and \code{server}).} - -\item{...}{Arguments passed on to \code{\link[rocrateR:load_rocrate]{rocrateR::load_rocrate()}} (excluding -\code{path}) and \code{\link[=audit]{audit()}} (excluding \code{project} and \code{user}).} -} -\value{ -Audit RO-Crates with 5 Safes Components. -} -\description{ -Audit Governance for a project. This function takes: -} -\details{ -\itemize{ -\item a \code{cr8tor} archive / governance bundle (intent) -\item a \code{server} object to a DataSHIELD server (deployment) -} -} From e2252ca242dc3184983e8dba14bca54213f5dcb6 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 26 Mar 2026 11:23:02 +0000 Subject: [PATCH 42/51] Set load_cr8tor_bundle as an internal function --- NAMESPACE | 1 - R/utils-cr8tor.R | 2 +- man/load_cr8tor_bundle.Rd | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index dd70421..b045e7d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -59,7 +59,6 @@ S3method(safe_setting,rocrate) export(armadillo_login) export(audit) export(init) -export(load_cr8tor_bundle) export(rocrate_report) export(safe_data) export(safe_output) diff --git a/R/utils-cr8tor.R b/R/utils-cr8tor.R index b4664b9..7444268 100644 --- a/R/utils-cr8tor.R +++ b/R/utils-cr8tor.R @@ -776,7 +776,7 @@ link_people_to_root <- function(rc, usernames) { #' @param ... Unused. #' #' @return Object of class `cr8tor`. -#' @export +#' @keywords internal load_cr8tor_bundle <- function(x, ...) { tmp <- tempfile("cr8tor_") dir.create(tmp, recursive = TRUE, showWarnings = FALSE) diff --git a/man/load_cr8tor_bundle.Rd b/man/load_cr8tor_bundle.Rd index b391ee6..8378d49 100644 --- a/man/load_cr8tor_bundle.Rd +++ b/man/load_cr8tor_bundle.Rd @@ -22,3 +22,4 @@ A cr8tor project archive contains: \item config.toml → platform configuration. } } +\keyword{internal} From 7aa2b955be3542aebcba04e33979c25a7d373660 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 26 Mar 2026 11:29:17 +0000 Subject: [PATCH 43/51] Rename rocrate_report to report --- DESCRIPTION | 2 +- NAMESPACE | 10 +-- R/{rocrate_report.R => report.R} | 30 ++++----- README.Rmd | 18 +++--- .../{test-rocrate_report.R => test-report.R} | 62 +++++++++---------- 5 files changed, 61 insertions(+), 61 deletions(-) rename R/{rocrate_report.R => report.R} (98%) rename tests/testthat/{test-rocrate_report.R => test-report.R} (84%) diff --git a/DESCRIPTION b/DESCRIPTION index f6a3bef..88bbe96 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -61,7 +61,7 @@ Collate: 'dsROCrate-package.R' 'dsROCrate.R' 'print.R' - 'rocrate_report.R' + 'report.R' 'safe_data.R' 'safe_output.R' 'safe_people.R' diff --git a/NAMESPACE b/NAMESPACE index b045e7d..9d8ce92 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -31,10 +31,10 @@ S3method(flatten_safe_setting,rocrate) S3method(init,opal) S3method(init,rocrate) S3method(print,cr8tor_bundle) -S3method(rocrate_report,character) -S3method(rocrate_report,default) -S3method(rocrate_report,list) -S3method(rocrate_report,rocrate) +S3method(report,character) +S3method(report,default) +S3method(report,list) +S3method(report,rocrate) S3method(safe_data,character) S3method(safe_data,default) S3method(safe_data,opal) @@ -59,7 +59,7 @@ S3method(safe_setting,rocrate) export(armadillo_login) export(audit) export(init) -export(rocrate_report) +export(report) export(safe_data) export(safe_output) export(safe_people) diff --git a/R/rocrate_report.R b/R/report.R similarity index 98% rename from R/rocrate_report.R rename to R/report.R index d59d1df..277ba78 100644 --- a/R/rocrate_report.R +++ b/R/report.R @@ -3,17 +3,17 @@ #' @param x This can be an RO-Crate ([rocrate][rocrateR::rocrate()] class) or a #' string with the path to an RO-Crate. #' @param ... Other optional arguments. See the full documentation, -#' [`?dsROCrate::rocrate_report`][rocrate_report()]. +#' [`?dsROCrate::report`][report()]. #' #' @returns RO-Crate report as markdown (.md) file and/or HTML. #' @export -rocrate_report <- function(x, ...) { - UseMethod("rocrate_report") +report <- function(x, ...) { + UseMethod("report") } -#' @rdname rocrate_report +#' @rdname report #' @export -rocrate_report.character <- function( +report.character <- function( x, ..., title = "DataSHIELD Report", @@ -32,7 +32,7 @@ rocrate_report.character <- function( # call the next generic method rocrate |> - rocrate_report( + report( title = title, filepath = filepath, render = render, @@ -45,9 +45,9 @@ rocrate_report.character <- function( ) } -#' @rdname rocrate_report +#' @rdname report #' @export -rocrate_report.default <- function(x, ...) { +report.default <- function(x, ...) { stop( "Unknown class, please try either a file path or", " an object with `rocrate` class!" @@ -55,9 +55,9 @@ rocrate_report.default <- function(x, ...) { } #' @param study_name String with the study name. -#' @rdname rocrate_report +#' @rdname report #' @export -rocrate_report.list <- function( +report.list <- function( x, ..., study_name, @@ -81,7 +81,7 @@ rocrate_report.list <- function( # generate individual reports for each RO-Crate report_outputs <- lapply( x, - rocrate_report, + report, title = title, filepath = filepath, render = FALSE, @@ -296,9 +296,9 @@ rocrate_report.list <- function( #' overview's diagram (default: `NULL`, estimated based on number of nodes). #' @param max_line_length Integer with the maximum number of characters per line #' in the RO-Crate to be printed in the report. -#' @rdname rocrate_report +#' @rdname report #' @export -rocrate_report.rocrate <- function( +report.rocrate <- function( x, ..., title = "DataSHIELD Report", @@ -652,7 +652,7 @@ rocrate_report.rocrate <- function( #' Create diagram for RO-Crate overview #' #' @param overview_tbl Data frame with overview details for the RO-Crate. -#' @inheritParams rocrate_report +#' @inheritParams report #' #' @returns Diagram object #' @keywords internal @@ -848,7 +848,7 @@ rocrate_report.rocrate <- function( #' Generate Markdown report's header #' #' @inheritParams .overview_diagram -#' @inheritParams rocrate_report +#' @inheritParams report #' #' @returns String with report's header #' @keywords internal diff --git a/README.Rmd b/README.Rmd index 54c3c0a..bd24af1 100644 --- a/README.Rmd +++ b/README.Rmd @@ -402,7 +402,7 @@ print(safe_people_crate_v1) ###### Markdown report A markdown report can be created with an overview and details for an RO-Crate, -using the `dsROCrate::rocrate_report`: +using the `dsROCrate::report`: **Only generate .Rmd file** @@ -410,7 +410,7 @@ using the `dsROCrate::rocrate_report`: safe_people_crate_v1_rmd <- tempfile(fileext = ".Rmd") # temporary file safe_people_crate_contents <- safe_people_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_people_crate_v1_rmd, render = FALSE) + dsROCrate::report(filepath = safe_people_crate_v1_rmd, render = FALSE) # display Overview diagram safe_people_crate_contents$overview_diagram @@ -424,7 +424,7 @@ safe_people_crate_contents$overview_data |> ```{r, eval = FALSE} safe_people_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_people_crate_v1_rmd, + dsROCrate::report(filepath = safe_people_crate_v1_rmd, title = "DataSHIELD Safe People - Audit Report", render = TRUE, overwrite = TRUE) @@ -447,7 +447,7 @@ print(safe_project_crate_v1) ###### Markdown report A markdown report can be created with an overview and details for an RO-Crate, -using the `dsROCrate::rocrate_report`: +using the `dsROCrate::report`: **Only generate .Rmd file** @@ -455,7 +455,7 @@ using the `dsROCrate::rocrate_report`: safe_project_crate_v1_rmd <- tempfile(fileext = ".Rmd") # temporary file safe_project_crate_contents <- safe_project_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_project_crate_v1_rmd, render = FALSE) + dsROCrate::report(filepath = safe_project_crate_v1_rmd, render = FALSE) # display Overview diagram safe_project_crate_contents$overview_diagram @@ -469,7 +469,7 @@ safe_project_crate_contents$overview_data |> ```{r, eval = FALSE} safe_project_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_project_crate_v1_rmd, + dsROCrate::report(filepath = safe_project_crate_v1_rmd, title = "DataSHIELD Safe Project - Audit Report", render = TRUE, overwrite = TRUE) @@ -502,7 +502,7 @@ print(study_crate_v1) ###### Markdown report A markdown report can be created with an overview and details for an RO-Crate, -using the `dsROCrate::rocrate_report`: +using the `dsROCrate::report`: **Only generate .Rmd file** @@ -510,7 +510,7 @@ using the `dsROCrate::rocrate_report`: study_crate_v1_rmd <- tempfile(fileext = ".Rmd") # temporary file safe_project_crate_contents <- study_crate_v1 |> - dsROCrate::rocrate_report(filepath = study_crate_v1_rmd, render = FALSE) + dsROCrate::report(filepath = study_crate_v1_rmd, render = FALSE) # display Overview diagram safe_project_crate_contents$overview_diagram @@ -524,7 +524,7 @@ safe_project_crate_contents$overview_data |> ```{r, eval = FALSE} study_crate_v1 |> - dsROCrate::rocrate_report(filepath = study_crate_v1_rmd, + dsROCrate::report(filepath = study_crate_v1_rmd, title = "DataSHIELD Study audit", render = TRUE, overwrite = TRUE) diff --git a/tests/testthat/test-rocrate_report.R b/tests/testthat/test-report.R similarity index 84% rename from tests/testthat/test-rocrate_report.R rename to tests/testthat/test-report.R index 7ad8ecd..4163d67 100644 --- a/tests/testthat/test-rocrate_report.R +++ b/tests/testthat/test-report.R @@ -1,18 +1,18 @@ -test_that("rocrate_report.default errors", { +test_that("report.default errors", { expect_error( - rocrate_report(123), + report(123), "Unknown class" ) }) -test_that("rocrate_report.character errors for invalid path", { +test_that("report.character errors for invalid path", { expect_error( - rocrate_report("nonexistent_path", render = FALSE), + report("nonexistent_path", render = FALSE), "The provided path does not exist" ) }) -test_that("rocrate_report.character errors if read_rocrate fails", { +test_that("report.character errors if read_rocrate fails", { # create temporary file tmp_dir <- file.path(tempdir(), "dsROCRate_tests") tmp_file <- tempfile(tmpdir = tmp_dir) @@ -24,7 +24,7 @@ test_that("rocrate_report.character errors if read_rocrate fails", { read_rocrate = function(...) stop("fail"), code = { expect_error( - rocrate_report(tmp_file, render = FALSE), + report(tmp_file, render = FALSE), "Could not determine how to load RO-Crate from provided input" ) }, @@ -32,7 +32,7 @@ test_that("rocrate_report.character errors if read_rocrate fails", { ) }) -test_that("rocrate_report.character errors if input is invalid .zip", { +test_that("report.character errors if input is invalid .zip", { # create temporary file tmp_dir <- file.path(tempdir(), "dsROCRate_tests") tmp_file <- tempfile(tmpdir = tmp_dir, fileext = ".zip") @@ -40,10 +40,10 @@ test_that("rocrate_report.character errors if input is invalid .zip", { on.exit(unlink(tmp_dir, recursive = TRUE, force = TRUE)) file.create(tmp_file) - expect_error(rocrate_report(tmp_file, render = FALSE)) + expect_error(report(tmp_file, render = FALSE)) }) -test_that("rocrate_report.character dispatches to rocrate method", { +test_that("report.character dispatches to rocrate method", { # create temporary file tmp_dir <- file.path(tempdir(), "dsROCRate_tests") dir.create(tmp_dir, recursive = TRUE) @@ -59,16 +59,16 @@ test_that("rocrate_report.character dispatches to rocrate method", { ) testthat::with_mocked_bindings( load_content = function(x, ...) x, - rocrate_report.rocrate = function(x, ...) "OK", + report.rocrate = function(x, ...) "OK", code = { - result <- rocrate_report(tmp_dir, render = FALSE) + result <- report(tmp_dir, render = FALSE) expect_equal(result, "OK") }, .package = "dsROCrate" ) }) -test_that("rocrate_report.rocrate errors if required entities missing", { +test_that("report.rocrate errors if required entities missing", { fake_rocrate <- structure(list(), class = "rocrate") testthat::local_mocked_bindings( @@ -82,7 +82,7 @@ test_that("rocrate_report.rocrate errors if required entities missing", { extract_safe_data = function(...) NULL, code = { expect_error( - rocrate_report(fake_rocrate, render = FALSE), + report(fake_rocrate, render = FALSE), "missing" ) }, @@ -90,7 +90,7 @@ test_that("rocrate_report.rocrate errors if required entities missing", { ) }) -test_that("rocrate_report.rocrate returns expected structure", { +test_that("report.rocrate returns expected structure", { fake_rocrate <- structure(list(), class = "rocrate") safe_people <- list() @@ -130,7 +130,7 @@ test_that("rocrate_report.rocrate returns expected structure", { .markdown_report_body = function(...) "BODY", .markdown_report_rocrate = function(...) "ROCRATE", code = { - result <- rocrate_report( + result <- report( fake_rocrate, render = FALSE, filepath = tempfile(fileext = ".md") @@ -155,7 +155,7 @@ test_that("rocrate_report.rocrate returns expected structure", { ) }) -test_that("rocrate_report.rocrate prevents overwrite", { +test_that("report.rocrate prevents overwrite", { fake_rocrate <- structure(list(), class = "rocrate") # create temporary file tmp_dir <- file.path(tempdir(), "dsROCRate_tests") @@ -175,7 +175,7 @@ test_that("rocrate_report.rocrate prevents overwrite", { extract_safe_data = function(...) list(), code = { expect_error( - rocrate_report(fake_rocrate, filepath = tmp_file, overwrite = FALSE), + report(fake_rocrate, filepath = tmp_file, overwrite = FALSE), "existing file" ) }, @@ -183,7 +183,7 @@ test_that("rocrate_report.rocrate prevents overwrite", { ) }) -test_that("rocrate_report.list aggregates multiple servers", { +test_that("report.list aggregates multiple servers", { fake_rocrate <- structure(list(), class = "rocrate") server_output <- list( @@ -211,14 +211,14 @@ test_that("rocrate_report.list aggregates multiple servers", { ) testthat::with_mocked_bindings( - rocrate_report = function(...) server_output, + report = function(...) server_output, .overview_diagram = function(...) list(diag_lst = "diag", diag_path = NULL), .tidy_overview = function(...) tibble::tibble(Project = "P1"), .markdown_report_header = function(...) "HEADER", .markdown_report_body = function(...) "BODY", .markdown_report_rocrate = function(...) "ROCRATE", code = { - result <- rocrate_report( + result <- report( list(server1 = fake_rocrate, server2 = fake_rocrate), study_name = "StudyX", render = FALSE, @@ -266,13 +266,13 @@ test_that(".break_tibble returns input table when varname = NULL", { expect_equal(knitr::kable(df), .break_tibble(df, NULL)) }) -test_that("rocrate_report fails if the given path points to a non-existing directory", { +test_that("report fails if the given path points to a non-existing directory", { expect_error( - rocrate_report(rocrateR::rocrate_5s(), filepath = "path/to/dir") + report(rocrateR::rocrate_5s(), filepath = "path/to/dir") ) }) -test_that("rocrate_report works end-to-end with real dsROCrate audit outputs", { +test_that("report works end-to-end with real dsROCrate audit outputs", { # create temporary file tmp_dir <- file.path(tempdir(), "dsROCRate_tests") dir.create(tmp_dir, recursive = TRUE) @@ -295,7 +295,7 @@ test_that("rocrate_report works end-to-end with real dsROCrate audit outputs", { # ignore warnings about missing permission entities (e.g., @type = 'ControlAction') suppressWarnings( - result <- rocrate_report( + result <- report( roc, filepath = out_file, render = FALSE, @@ -315,7 +315,7 @@ test_that("rocrate_report works end-to-end with real dsROCrate audit outputs", { opalr::opal.logout(opal_con) }) -test_that("rocrate_report.character loads crate from disk", { +test_that("report.character loads crate from disk", { # create temporary file tmp_dir <- file.path(tempdir(), "dsROCRate_tests") dir.create(tmp_dir, recursive = TRUE) @@ -341,7 +341,7 @@ test_that("rocrate_report.character loads crate from disk", { # ignore warnings about missing permission entities (e.g., @type = 'ControlAction') suppressWarnings( - result <- rocrate_report( + result <- report( path_to_rocrate_bag, filepath = out_file, render = FALSE, @@ -357,7 +357,7 @@ test_that("rocrate_report.character loads crate from disk", { opalr::opal.logout(opal_con) }) -test_that("rocrate_report.list aggregates outputs from a study audit", { +test_that("report.list aggregates outputs from a study audit", { # create temporary file tmp_dir <- file.path(tempdir(), "dsROCRate_tests") dir.create(tmp_dir, recursive = TRUE) @@ -377,7 +377,7 @@ test_that("rocrate_report.list aggregates outputs from a study audit", { # ignore warnings about missing permission entities (e.g., @type = 'ControlAction') suppressWarnings( - result <- rocrate_report( + result <- report( roc, filepath = out_file, study_name = "StudyX", @@ -394,11 +394,11 @@ test_that("rocrate_report.list aggregates outputs from a study audit", { opalr::opal.logout(opal_con) }) -test_that("rocrate_report.list handles missing outputs from a study audit", { +test_that("report.list handles missing outputs from a study audit", { testthat::with_mocked_bindings( - rocrate_report = function(...) list(), + report = function(...) list(), code = { - result <- rocrate_report( + result <- report( list(server1 = rocrateR::rocrate_5s()), study_name = "StudyX", render = FALSE, From 385e9e41f7864c65b711d6fb96f7cc23ee305938 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Thu, 26 Mar 2026 11:29:35 +0000 Subject: [PATCH 44/51] New build --- man/dot-break_tibble.Rd | 2 +- man/dot-markdown_report_body.Rd | 2 +- man/dot-markdown_report_header.Rd | 2 +- man/dot-markdown_report_rocrate.Rd | 2 +- man/dot-overview_diagram.Rd | 2 +- man/dot-tidy_overview.Rd | 2 +- man/{rocrate_report.Rd => report.Rd} | 26 +++++++++++++------------- 7 files changed, 19 insertions(+), 19 deletions(-) rename man/{rocrate_report.Rd => report.Rd} (84%) diff --git a/man/dot-break_tibble.Rd b/man/dot-break_tibble.Rd index 984612d..63f913c 100644 --- a/man/dot-break_tibble.Rd +++ b/man/dot-break_tibble.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/rocrate_report.R +% Please edit documentation in R/report.R \name{.break_tibble} \alias{.break_tibble} \title{Break tibble by group, \code{varname}} diff --git a/man/dot-markdown_report_body.Rd b/man/dot-markdown_report_body.Rd index fb89bdc..b7882df 100644 --- a/man/dot-markdown_report_body.Rd +++ b/man/dot-markdown_report_body.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/rocrate_report.R +% Please edit documentation in R/report.R \name{.markdown_report_body} \alias{.markdown_report_body} \title{Generate Markdown report's body} diff --git a/man/dot-markdown_report_header.Rd b/man/dot-markdown_report_header.Rd index 5d340c9..cf0bf99 100644 --- a/man/dot-markdown_report_header.Rd +++ b/man/dot-markdown_report_header.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/rocrate_report.R +% Please edit documentation in R/report.R \name{.markdown_report_header} \alias{.markdown_report_header} \title{Generate Markdown report's header} diff --git a/man/dot-markdown_report_rocrate.Rd b/man/dot-markdown_report_rocrate.Rd index 545990c..13276ea 100644 --- a/man/dot-markdown_report_rocrate.Rd +++ b/man/dot-markdown_report_rocrate.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/rocrate_report.R +% Please edit documentation in R/report.R \name{.markdown_report_rocrate} \alias{.markdown_report_rocrate} \title{Embed RO-Crate in Markdown report} diff --git a/man/dot-overview_diagram.Rd b/man/dot-overview_diagram.Rd index b579631..26306e4 100644 --- a/man/dot-overview_diagram.Rd +++ b/man/dot-overview_diagram.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/rocrate_report.R +% Please edit documentation in R/report.R \name{.overview_diagram} \alias{.overview_diagram} \title{Create diagram for RO-Crate overview} diff --git a/man/dot-tidy_overview.Rd b/man/dot-tidy_overview.Rd index 405b0ad..ca35a57 100644 --- a/man/dot-tidy_overview.Rd +++ b/man/dot-tidy_overview.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/rocrate_report.R +% Please edit documentation in R/report.R \name{.tidy_overview} \alias{.tidy_overview} \title{Create tidy version of the overview table} diff --git a/man/rocrate_report.Rd b/man/report.Rd similarity index 84% rename from man/rocrate_report.Rd rename to man/report.Rd index 5fb57da..fcfa194 100644 --- a/man/rocrate_report.Rd +++ b/man/report.Rd @@ -1,16 +1,16 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/rocrate_report.R -\name{rocrate_report} -\alias{rocrate_report} -\alias{rocrate_report.character} -\alias{rocrate_report.default} -\alias{rocrate_report.list} -\alias{rocrate_report.rocrate} +% Please edit documentation in R/report.R +\name{report} +\alias{report} +\alias{report.character} +\alias{report.default} +\alias{report.list} +\alias{report.rocrate} \title{Create an RO-Crate report} \usage{ -rocrate_report(x, ...) +report(x, ...) -\method{rocrate_report}{character}( +\method{report}{character}( x, ..., title = "DataSHIELD Report", @@ -25,9 +25,9 @@ rocrate_report(x, ...) max_line_length = 200 ) -\method{rocrate_report}{default}(x, ...) +\method{report}{default}(x, ...) -\method{rocrate_report}{list}( +\method{report}{list}( x, ..., study_name, @@ -43,7 +43,7 @@ rocrate_report(x, ...) max_line_length = 200 ) -\method{rocrate_report}{rocrate}( +\method{report}{rocrate}( x, ..., title = "DataSHIELD Report", @@ -63,7 +63,7 @@ rocrate_report(x, ...) string with the path to an RO-Crate.} \item{...}{Other optional arguments. See the full documentation, -\code{\link[=rocrate_report]{?dsROCrate::rocrate_report}}.} +\code{\link[=report]{?dsROCrate::report}}.} \item{title}{String with title for the report (default: 'DataSHIELD Report').} From 365335c06e03a4c48df09c6af2dd9f72501a08ea Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 27 Mar 2026 12:06:21 +0000 Subject: [PATCH 45/51] Update tutorial to reflect changes in the package. including calls to audit() and report() --- README.Rmd | 8 +- README.md | 2556 ++++++++++++++++++++++++++++------------------------ 2 files changed, 1378 insertions(+), 1186 deletions(-) diff --git a/README.Rmd b/README.Rmd index bd24af1..2b8f087 100644 --- a/README.Rmd +++ b/README.Rmd @@ -67,12 +67,12 @@ rocrate_txt <- function(rocrate) { } ``` -# dsROCrate: 'DataSHIELD' RO-Crate Wrapper Functions logo +# dsROCrate: 'DataSHIELD' RO-Crate Governance Functions logo [![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental) [![CRAN status](https://www.r-pkg.org/badges/version/dsROCrate)](https://CRAN.R-project.org/package=dsROCrate) -[![Codecov test coverage](https://codecov.io/gh/DataSHIELD-5S/dsROCrate/graph/badge.svg)](https://app.codecov.io/gh/DataSHIELD-5S/dsROCrate) +[![Codecov test coverage](https://codecov.io/gh/FederatedMethods/dsROCrate/graph/badge.svg)](https://app.codecov.io/gh/FederatedMethods/dsROCrate) The goal of dsROCrate is to provide functions to wrap elements from a @@ -80,11 +80,11 @@ The goal of dsROCrate is to provide functions to wrap elements from a ## 1. Installation -You can install the development version of dsROCrate from [GitHub](https://github.com/DataSHIELD-5S/dsROCrate/) with: +You can install the development version of dsROCrate from [GitHub](https://github.com/FederatedMethods/dsROCrate/) with: ``` r # install.packages("pak") -pak::pak("DataSHIELD-5S/dsROCrate") +pak::pak("FederatedMethods/dsROCrate") ``` ## 2. Creating your first RO-Crate diff --git a/README.md b/README.md index 789614e..d08c1c8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# dsROCrate: ‘DataSHIELD’ RO-Crate Wrapper Functions logo +# dsROCrate: ‘DataSHIELD’ RO-Crate Governance Functions logo @@ -10,7 +10,7 @@ experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](h [![CRAN status](https://www.r-pkg.org/badges/version/dsROCrate)](https://CRAN.R-project.org/package=dsROCrate) [![Codecov test -coverage](https://codecov.io/gh/DataSHIELD-5S/dsROCrate/graph/badge.svg)](https://app.codecov.io/gh/DataSHIELD-5S/dsROCrate) +coverage](https://codecov.io/gh/FederatedMethods/dsROCrate/graph/badge.svg)](https://app.codecov.io/gh/FederatedMethods/dsROCrate) The goal of dsROCrate is to provide functions to wrap elements from a @@ -19,11 +19,11 @@ The goal of dsROCrate is to provide functions to wrap elements from a ## 1. Installation You can install the development version of dsROCrate from -[GitHub](https://github.com/DataSHIELD-5S/dsROCrate/) with: +[GitHub](https://github.com/FederatedMethods/dsROCrate/) with: ``` r # install.packages("pak") -pak::pak("DataSHIELD-5S/dsROCrate") +pak::pak("FederatedMethods/dsROCrate") ``` ## 2. Creating your first RO-Crate @@ -86,7 +86,7 @@ o <- opalr::opal.login( print(o) #> url: https://opal-demo.obiba.org #> name: opal-demo.obiba.org -#> version: 5.5.2 +#> version: 5.6.1 #> username: administrator ``` @@ -130,7 +130,7 @@ print(basic_rocrate) #> "@type": "Dataset", #> "name": "", #> "description": "", -#> "datePublished": "2026-02-27", +#> "datePublished": "2026-03-27", #> "license": { #> "@id": "http://spdx.org/licenses/CC-BY-4.0" #> }, @@ -162,12 +162,52 @@ basic_rocrate <- o |> print(basic_rocrate) # note that the output will be truncated ... #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241", +#> "@id": "#perm:9bf7f75b6c5b07d02830b95652cd39a0-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" +#> }, +#> "object": { +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." +#> }, +#> { +#> "@id": "#perm:1f09051d217d17c3e9b5ed92819ded26-admin-table", +#> "@type": "ControlAction", +#> "agent": { +#> "@id": "#person:a3bc19cc9c1269320cf2847c63a66a92" +#> }, +#> "object": { +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User has full administrative rights: view/edit dictionary and view/edit individual values." +#> }, +#> { +#> "@id": "#perm:4d2673da68a58c3bce23a61d97b6df51-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:cb809df1c2fb30b154f60b843e62b3d0" +#> }, +#> "object": { +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." +#> }, +#> { +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae", #> "@type": "Dataset", #> "name": "CNSIM1", -#> "dateCreated": "2026-02-27T06:29:50.731Z", -#> "dateModified": "2026-02-27T06:29:51.865Z", -#> "path": "/datasource/CNSIM/table/CNSIM1" +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM1", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } #> } #> ] #> } @@ -185,15 +225,17 @@ basic_rocrate <- o |> print(basic_rocrate) # note that the output will be truncated ... +#> ] +#> }, #> { #> "@id": "#project:7ba189863f9f641196596cb28e04aa14", #> "@type": "Project", #> "name": "CNSIM", -#> "dateCreated": "2026-02-27T06:29:49.235Z", -#> "dateModified": "2026-02-27T06:29:54.200Z", +#> "dateCreated": "2026-03-27T06:29:56.149Z", +#> "dateModified": "2026-03-27T06:30:01.340Z", #> "hasPart": [ #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> } #> ] #> } @@ -215,12 +257,7 @@ print(basic_rocrate) # note that the output will be truncated #> { #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", #> "@type": "Person", -#> "name": "dsuser", -#> "memberOf": [ -#> { -#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" -#> } -#> ] +#> "name": "dsuser" #> } #> ] #> } @@ -257,91 +294,229 @@ basic_rocrate <- o |> print(basic_rocrate) # note that the output will be truncated ... #> { -#> "@id": "_:localid:datashield.privacyLevel:5", +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78", #> "@type": "PropertyValue", #> "name": "datashield.privacyLevel", #> "value": "5" #> }, #> { -#> "@id": "_:localid:default.datashield.privacyControlLevel:banana", +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b", #> "@type": "PropertyValue", #> "name": "default.datashield.privacyControlLevel", #> "value": "banana" #> }, #> { -#> "@id": "_:localid:default.nfilter.glm:0.33", +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae", #> "@type": "PropertyValue", #> "name": "default.nfilter.glm", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.kNN:3", +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7", #> "@type": "PropertyValue", #> "name": "default.nfilter.kNN", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.density:0.33", +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.density", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.max:40", +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.max", #> "value": "40" #> }, #> { -#> "@id": "_:localid:default.nfilter.noise:0.25", +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5", #> "@type": "PropertyValue", #> "name": "default.nfilter.noise", #> "value": "0.25" #> }, #> { -#> "@id": "_:localid:default.nfilter.string:80", +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54", #> "@type": "PropertyValue", #> "name": "default.nfilter.string", #> "value": "80" #> }, #> { -#> "@id": "_:localid:default.nfilter.stringShort:20", +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5", #> "@type": "PropertyValue", #> "name": "default.nfilter.stringShort", #> "value": "20" #> }, #> { -#> "@id": "_:localid:default.nfilter.subset:3", +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985", #> "@type": "PropertyValue", #> "name": "default.nfilter.subset", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.tab:3", +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0", #> "@type": "PropertyValue", #> "name": "default.nfilter.tab", #> "value": "3" #> }, #> { -#> "@id": "_:localid:3aaeab3631b4c9bbe7f44d60805b8f9c", +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8", +#> "@type": "CreativeWork", +#> "name": "Disclosure Control Environment", +#> "description": "Disclosure control settings extract from the OBiBa Opal server connection provided, using the profile: 'default'.", +#> "hasPart": [ +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78" +#> }, +#> { +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b" +#> }, +#> { +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae" +#> }, +#> { +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7" +#> }, +#> { +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79" +#> }, +#> { +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f" +#> }, +#> { +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5" +#> }, +#> { +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54" +#> }, +#> { +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5" +#> }, +#> { +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985" +#> }, +#> { +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0" +#> } +#> ] +#> }, +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27", #> "@type": "SoftwareApplication", #> "name": "dsBase", #> "version": "6.3.5", -#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows\n you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have\n been designed to only share non disclosive summary statistics, with built in automated output\n checking based on statistical disclosure control. With data sites setting the threshold values for\n the automated output checks. For more details, see 'citation(\"dsBase\")'." +#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have been designed to only share non disclosive summary statistics, with built in automated output checking based on statistical disclosure control. With data sites setting the threshold values for the automated output checks. For more details, see 'citation(\"dsBase\")'." #> }, #> { -#> "@id": "_:localid:e2f7c43973c40d7a6a6731da5a0aa564", +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44", #> "@type": "SoftwareApplication", #> "name": "dsTidyverse", #> "version": "1.1.0", #> "description": "Implementation of selected 'Tidyverse' functions within 'DataSHIELD', an open-source federated analysis solution in R. Currently, DataSHIELD contains very limited tools for data manipulation, so the aim of this package is to improve the researcher experience by implementing essential functions for data manipulation, including subsetting, filtering, grouping, and renaming variables. This is the serverside package which should be installed on the server holding the data, and is used in conjuncture with the clientside package 'dsTidyverseClient' which is installed in the local R environment of the analyst. For more information, see and ." #> }, #> { -#> "@id": "_:localid:411453e2513e6d909fe2cb8273b034dc", +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b", #> "@type": "SoftwareApplication", #> "name": "resourcer", #> "version": "1.5.0", -#> "description": "A resource represents some data or a computation unit. It is \n described by a URL and credentials. This package proposes a Resource model\n with \"resolver\" and \"client\" classes to facilitate the access and the usage of the \n resources." +#> "description": "A resource represents some data or a computation unit. It is described by a URL and credentials. This package proposes a Resource model with \"resolver\" and \"client\" classes to facilitate the access and the usage of the resources." +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc", +#> "@type": "SoftwareApplication", +#> "name": "Opal", +#> "version": "5.6.1", +#> "description": "Opal is OBiBa's (https://www.obiba.org/) core database application for epidemiological studies. Participant data, collected by questionnaires, medical instruments, sensors, administrative databases etc. can be integrated and stored in a central data repository under a uniform model." +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1", +#> "@type": "CreativeWork", +#> "name": "Approved Analytical Software Environment", +#> "description": "Software packages installed in the controlled Opal/DataSHIELD environment used for federated analysis.", +#> "hasPart": [ +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27" +#> }, +#> { +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44" +#> }, +#> { +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b" +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc" +#> } +#> ] +#> }, +#> { +#> "@id": "#control:output-checking", +#> "@type": "CreativeWork", +#> "name": "Statistical Disclosure Output Checking", +#> "description": "Automated disclosure control prevents release of small-cell counts and disclosive statistics." +#> }, +#> { +#> "@id": "#control:server-side-analysis", +#> "@type": "CreativeWork", +#> "name": "Server-Side Analysis Enforcement", +#> "description": "Raw data never leaves the secure server; analysis occurs via vetted aggregate functions." +#> }, +#> { +#> "@id": "#control:session-logging", +#> "@type": "CreativeWork", +#> "name": "Comprehensive Session Logging", +#> "description": "All analytical actions are logged and auditable." +#> }, +#> { +#> "@id": "#control:secure-facility", +#> "@type": "CreativeWork", +#> "name": "Secure Data Facility", +#> "description": "Access restricted to approved secure premises." +#> }, +#> { +#> "@id": "#control:access-governance", +#> "@type": "CreativeWork", +#> "name": "Access Governance Process", +#> "description": "Data access committee review and approval required." +#> }, +#> { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5", +#> "@type": "CreativeWork", +#> "name": "Safe Setting Controls (Opal)", +#> "description": "Technical, physical and organisational safeguards applied to minimise disclosure risk.", +#> "hasPart": [ +#> { +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8" +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1" +#> }, +#> { +#> "@id": "#control:output-checking" +#> }, +#> { +#> "@id": "#control:server-side-analysis" +#> }, +#> { +#> "@id": "#control:session-logging" +#> }, +#> { +#> "@id": "#control:secure-facility" +#> }, +#> { +#> "@id": "#control:access-governance" +#> } +#> ] +#> }, +#> { +#> "@id": "#link:b16fbdedcc33e826878020dcd5fad3d3", +#> "@type": "CreativeWork", +#> "name": "Safe Settings x Safe Project Link", +#> "about": { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5" +#> }, +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } #> } #> ] #> } @@ -454,7 +629,7 @@ basic_rocrate <- o |> logs_from = Sys.time() - 60, # capture the last minute logs_to = Sys.time()) #> opening file input connection. -#> Found 83 records... Imported 83 records. Simplifying... +#> Found 55 records... Imported 55 records. Simplifying... #> closing file input connection. #> Warning: A `path` wasn't provided! The logs will be included in the RO-Crate #> object, under the `content` tag! @@ -463,114 +638,114 @@ basic_rocrate <- o |> ``` r print(basic_rocrate) # note that the output will be truncated ... -#> "@type": "SoftwareApplication", -#> "name": "resourcer", -#> "version": "1.5.0", -#> "description": "A resource represents some data or a computation unit. It is \n described by a URL and credentials. This package proposes a Resource model\n with \"resolver\" and \"client\" classes to facilitate the access and the usage of the \n resources." +#> }, +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } #> }, #> { -#> "@id": "20260227T152405-dslogs-dsuser.log", +#> "@id": "20260327T120002-dslogs-dsuser.log", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:05", -#> "name": "20260227T152405-dslogs-dsuser.log", -#> "description": "This file contains the raw logs for the user: `dsuser` , between: 2026-02-27 15:23:05 and 2026-02-27 15:24:05", +#> "dateModified": "2026-03-27 12:00:02", +#> "name": "20260327T120002-dslogs-dsuser.log", +#> "description": "This file contains the raw logs for the user: `dsuser` , between: 2026-03-27 11:59:01 and 2026-03-27 12:00:01", #> "encodingFormat": "text/plain", #> "content": [ -#> ["[INFO][2026-02-27T15:24:02][OPEN] created a datashield session fc258313-6846-4a8e-93d9-4809cd794fbe", "[INFO][2026-02-27T15:24:02][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:24:03][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:05][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] +#> ["[INFO][2026-03-27T11:59:57][OPEN] created a datashield session 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", "[INFO][2026-03-27T11:59:59][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-03-27T12:00:00][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] #> ] #> }, #> { -#> "@id": "20260227T152405-dslogs-dsuser_mappings.csv", +#> "@id": "20260327T120002-dslogs-dsuser_mappings.csv", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:05", -#> "name": "20260227T152405-dslogs-dsuser_mappings.csv", +#> "dateModified": "2026-03-27 12:00:02", +#> "name": "20260327T120002-dslogs-dsuser_mappings.csv", #> "description": "This file contains mappings and evaluated functions", #> "encodingFormat": "text/csv", #> "content": [ #> [ #> { -#> "timestamp": "2026-02-27T15:24:02", +#> "timestamp": "2026-03-27T11:59:57", #> "action": "OPEN", #> "user": "dsuser", -#> "r_cmd": "Open session: fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "r_cmd": "Open session: 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "fx": "DSI::datashield.login", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:02", +#> "timestamp": "2026-03-27T11:59:59", #> "action": "ASSIGN", #> "user": "dsuser", #> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", #> "fx": "base::assign", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", #> "fx": "dsBase::lsDS", #> "symbol": "search.filter = NULL, 1L", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "base::exists(\"dsROCrate_test\")", #> "fx": "base::exists", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::classDS(\"dsROCrate_test\")", #> "fx": "dsBase::classDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::isValidDS(dsROCrate_test)", #> "fx": "dsBase::isValidDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::dimDS(\"dsROCrate_test\")", #> "fx": "dsBase::dimDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:05", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::colnamesDS(\"dsROCrate_test\")", #> "fx": "dsBase::colnamesDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> } #> ] @@ -631,7 +806,7 @@ basic_rocrate <- basic_rocrate |> path_to_rocrate_bag <- basic_rocrate |> rocrateR::bag_rocrate(path = "./rocrates", overwrite = TRUE) #> RO-Crate successfully 'bagged'! -#> For details, see: ./rocrates/rocrate-200ecad114285e36b84c12cfa3be6526.zip +#> For details, see: ./rocrates/rocrate-168d1073270b8b5ddb29de5fb1e8f745.zip ``` We can explore the contents with the following commands: @@ -643,11 +818,12 @@ path_to_rocrate_bag |> rocrateR::unbag_rocrate(output = "./rocrates/ROC", quiet = TRUE) |> # create tree with the files fs::dir_tree() -#> ./rocrates/ROC/ +#> /Users/robertovillegas-diaz/Documents/dsROCrate/rocrates/ROC +#> ├── bag-info.txt #> ├── bagit.txt #> ├── data -#> │ ├── 20260227T152405-dslogs-dsuser.log -#> │ ├── 20260227T152405-dslogs-dsuser_mappings.csv +#> │ ├── 20260327T120002-dslogs-dsuser.log +#> │ ├── 20260327T120002-dslogs-dsuser_mappings.csv #> │ └── ro-crate-metadata.json #> ├── manifest-sha512.txt #> └── tagmanifest-sha512.txt @@ -673,9 +849,9 @@ safe_people_crate_v1 <- opalr::opal.login( password = USERPASS, url = SERVER ) |> - dsROCrate::audit_safe_people(user = "dsuser", project = "CNSIM") + dsROCrate::audit(user = "dsuser", project = "CNSIM") #> opening file input connection. -#> Found 83 records... Imported 83 records. Simplifying... +#> Found 55 records... Imported 55 records. Simplifying... #> closing file input connection. print(safe_people_crate_v1) @@ -697,7 +873,7 @@ print(safe_people_crate_v1) #> "@type": "Dataset", #> "name": "", #> "description": "", -#> "datePublished": "2026-02-27", +#> "datePublished": "2026-03-27", #> "license": { #> "@id": "http://spdx.org/licenses/CC-BY-4.0" #> }, @@ -706,10 +882,10 @@ print(safe_people_crate_v1) #> }, #> "hasPart": [ #> { -#> "@id": "20260227T152406-dslogs-dsuser.log" +#> "@id": "20260327T120003-dslogs-dsuser.log" #> }, #> { -#> "@id": "20260227T152406-dslogs-dsuser_mappings.csv" +#> "@id": "20260327T120003-dslogs-dsuser_mappings.csv" #> } #> ] #> }, @@ -719,60 +895,36 @@ print(safe_people_crate_v1) #> "name": "Five Safes RO-Crate profile" #> }, #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241", -#> "@type": "Dataset", -#> "name": "CNSIM1", -#> "dateCreated": "2026-02-27T06:29:50.731Z", -#> "dateModified": "2026-02-27T06:29:51.865Z", -#> "path": "/datasource/CNSIM/table/CNSIM1" -#> }, -#> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9", -#> "@type": "Dataset", -#> "name": "CNSIM2", -#> "dateCreated": "2026-02-27T06:29:51.872Z", -#> "dateModified": "2026-02-27T06:29:53.057Z", -#> "path": "/datasource/CNSIM/table/CNSIM2" -#> }, -#> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492", -#> "@type": "Dataset", -#> "name": "CNSIM3", -#> "dateCreated": "2026-02-27T06:29:53.064Z", -#> "dateModified": "2026-02-27T06:29:54.200Z", -#> "path": "/datasource/CNSIM/table/CNSIM3" +#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", +#> "@type": "Person", +#> "name": "dsuser" #> }, #> { #> "@id": "#project:7ba189863f9f641196596cb28e04aa14", #> "@type": "Project", #> "name": "CNSIM", -#> "dateCreated": "2026-02-27T06:29:49.235Z", -#> "dateModified": "2026-02-27T06:29:54.200Z", +#> "dateCreated": "2026-03-27T06:29:56.149Z", +#> "dateModified": "2026-03-27T06:30:01.340Z", #> "hasPart": [ #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" #> }, #> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492" +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" #> } #> ] #> }, #> { -#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", -#> "@type": "Person", -#> "name": "dsuser" -#> }, -#> { #> "@id": "#perm:9bf7f75b6c5b07d02830b95652cd39a0-dict-summary-read", #> "@type": "ReadAction", #> "agent": { #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." @@ -784,7 +936,7 @@ print(safe_people_crate_v1) #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." @@ -796,411 +948,375 @@ print(safe_people_crate_v1) #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492" +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." #> }, #> { -#> "@id": "_:localid:datashield.privacyLevel:5", +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae", +#> "@type": "Dataset", +#> "name": "CNSIM1", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM1", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#asset:b6721026564c746f604df7ba785931fa", +#> "@type": "Dataset", +#> "name": "CNSIM2", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM2", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d", +#> "@type": "Dataset", +#> "name": "CNSIM3", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM3", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78", #> "@type": "PropertyValue", #> "name": "datashield.privacyLevel", #> "value": "5" #> }, #> { -#> "@id": "_:localid:default.datashield.privacyControlLevel:banana", +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b", #> "@type": "PropertyValue", #> "name": "default.datashield.privacyControlLevel", #> "value": "banana" #> }, #> { -#> "@id": "_:localid:default.nfilter.glm:0.33", +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae", #> "@type": "PropertyValue", #> "name": "default.nfilter.glm", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.kNN:3", +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7", #> "@type": "PropertyValue", #> "name": "default.nfilter.kNN", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.density:0.33", +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.density", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.max:40", +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.max", #> "value": "40" #> }, #> { -#> "@id": "_:localid:default.nfilter.noise:0.25", +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5", #> "@type": "PropertyValue", #> "name": "default.nfilter.noise", #> "value": "0.25" #> }, #> { -#> "@id": "_:localid:default.nfilter.string:80", +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54", #> "@type": "PropertyValue", #> "name": "default.nfilter.string", #> "value": "80" #> }, #> { -#> "@id": "_:localid:default.nfilter.stringShort:20", +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5", #> "@type": "PropertyValue", #> "name": "default.nfilter.stringShort", #> "value": "20" #> }, #> { -#> "@id": "_:localid:default.nfilter.subset:3", +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985", #> "@type": "PropertyValue", #> "name": "default.nfilter.subset", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.tab:3", +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0", #> "@type": "PropertyValue", #> "name": "default.nfilter.tab", #> "value": "3" #> }, #> { -#> "@id": "_:localid:3aaeab3631b4c9bbe7f44d60805b8f9c", +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8", +#> "@type": "CreativeWork", +#> "name": "Disclosure Control Environment", +#> "description": "Disclosure control settings extract from the OBiBa Opal server connection provided, using the profile: 'default'.", +#> "hasPart": [ +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78" +#> }, +#> { +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b" +#> }, +#> { +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae" +#> }, +#> { +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7" +#> }, +#> { +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79" +#> }, +#> { +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f" +#> }, +#> { +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5" +#> }, +#> { +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54" +#> }, +#> { +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5" +#> }, +#> { +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985" +#> }, +#> { +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0" +#> } +#> ] +#> }, +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27", #> "@type": "SoftwareApplication", #> "name": "dsBase", #> "version": "6.3.5", -#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows\n you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have\n been designed to only share non disclosive summary statistics, with built in automated output\n checking based on statistical disclosure control. With data sites setting the threshold values for\n the automated output checks. For more details, see 'citation(\"dsBase\")'." +#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have been designed to only share non disclosive summary statistics, with built in automated output checking based on statistical disclosure control. With data sites setting the threshold values for the automated output checks. For more details, see 'citation(\"dsBase\")'." #> }, #> { -#> "@id": "_:localid:e2f7c43973c40d7a6a6731da5a0aa564", +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44", #> "@type": "SoftwareApplication", #> "name": "dsTidyverse", #> "version": "1.1.0", #> "description": "Implementation of selected 'Tidyverse' functions within 'DataSHIELD', an open-source federated analysis solution in R. Currently, DataSHIELD contains very limited tools for data manipulation, so the aim of this package is to improve the researcher experience by implementing essential functions for data manipulation, including subsetting, filtering, grouping, and renaming variables. This is the serverside package which should be installed on the server holding the data, and is used in conjuncture with the clientside package 'dsTidyverseClient' which is installed in the local R environment of the analyst. For more information, see and ." #> }, #> { -#> "@id": "_:localid:411453e2513e6d909fe2cb8273b034dc", +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b", #> "@type": "SoftwareApplication", #> "name": "resourcer", #> "version": "1.5.0", -#> "description": "A resource represents some data or a computation unit. It is \n described by a URL and credentials. This package proposes a Resource model\n with \"resolver\" and \"client\" classes to facilitate the access and the usage of the \n resources." +#> "description": "A resource represents some data or a computation unit. It is described by a URL and credentials. This package proposes a Resource model with \"resolver\" and \"client\" classes to facilitate the access and the usage of the resources." +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc", +#> "@type": "SoftwareApplication", +#> "name": "Opal", +#> "version": "5.6.1", +#> "description": "Opal is OBiBa's (https://www.obiba.org/) core database application for epidemiological studies. Participant data, collected by questionnaires, medical instruments, sensors, administrative databases etc. can be integrated and stored in a central data repository under a uniform model." +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1", +#> "@type": "CreativeWork", +#> "name": "Approved Analytical Software Environment", +#> "description": "Software packages installed in the controlled Opal/DataSHIELD environment used for federated analysis.", +#> "hasPart": [ +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27" +#> }, +#> { +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44" +#> }, +#> { +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b" +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc" +#> } +#> ] +#> }, +#> { +#> "@id": "#control:output-checking", +#> "@type": "CreativeWork", +#> "name": "Statistical Disclosure Output Checking", +#> "description": "Automated disclosure control prevents release of small-cell counts and disclosive statistics." +#> }, +#> { +#> "@id": "#control:server-side-analysis", +#> "@type": "CreativeWork", +#> "name": "Server-Side Analysis Enforcement", +#> "description": "Raw data never leaves the secure server; analysis occurs via vetted aggregate functions." +#> }, +#> { +#> "@id": "#control:session-logging", +#> "@type": "CreativeWork", +#> "name": "Comprehensive Session Logging", +#> "description": "All analytical actions are logged and auditable." +#> }, +#> { +#> "@id": "#control:secure-facility", +#> "@type": "CreativeWork", +#> "name": "Secure Data Facility", +#> "description": "Access restricted to approved secure premises." +#> }, +#> { +#> "@id": "#control:access-governance", +#> "@type": "CreativeWork", +#> "name": "Access Governance Process", +#> "description": "Data access committee review and approval required." +#> }, +#> { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5", +#> "@type": "CreativeWork", +#> "name": "Safe Setting Controls (Opal)", +#> "description": "Technical, physical and organisational safeguards applied to minimise disclosure risk.", +#> "hasPart": [ +#> { +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8" +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1" +#> }, +#> { +#> "@id": "#control:output-checking" +#> }, +#> { +#> "@id": "#control:server-side-analysis" +#> }, +#> { +#> "@id": "#control:session-logging" +#> }, +#> { +#> "@id": "#control:secure-facility" +#> }, +#> { +#> "@id": "#control:access-governance" +#> } +#> ] +#> }, +#> { +#> "@id": "#link:b16fbdedcc33e826878020dcd5fad3d3", +#> "@type": "CreativeWork", +#> "name": "Safe Settings x Safe Project Link", +#> "about": { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5" +#> }, +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } #> }, #> { -#> "@id": "20260227T152406-dslogs-dsuser.log", +#> "@id": "20260327T120003-dslogs-dsuser.log", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:06", -#> "name": "20260227T152406-dslogs-dsuser.log", +#> "dateModified": "2026-03-27 12:00:03", +#> "name": "20260327T120003-dslogs-dsuser.log", #> "description": "This file contains the raw logs for the user: `dsuser` , between: ALL and ALL", #> "encodingFormat": "text/plain", #> "content": [ -#> ["[INFO][2026-02-27T08:56:24][OPEN] created a datashield session 622f2c74-9242-48e2-82d9-bc3250f8aa4b", "[INFO][2026-02-27T08:56:26][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T08:56:26][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T08:56:27][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:00:37][OPEN] created a datashield session 7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", "[INFO][2026-02-27T09:00:37][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T09:00:38][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:00:38][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:20:47][OPEN] created a datashield session 08413766-4fa8-4eec-9392-ec30581fb48c", "[INFO][2026-02-27T09:20:48][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T09:20:48][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:20:49][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:08:39][OPEN] created a datashield session 88a48432-61c8-4444-bb6f-1d0174d4f177", "[INFO][2026-02-27T14:08:39][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T14:08:39][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:08:40][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:18:40][OPEN] created a datashield session e45b3573-21cc-445d-8d22-b7fc289d279a", "[INFO][2026-02-27T14:18:40][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T14:18:40][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:18:41][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:04:13][OPEN] created a datashield session 026b4b18-c40c-4f08-8a19-75716fee1c75", "[INFO][2026-02-27T15:04:13][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:04:14][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:04:14][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:13:01][OPEN] created a datashield session a3a6f257-79ef-443c-a110-393b1ff196f0", "[INFO][2026-02-27T15:13:01][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:13:02][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:13:03][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:02][OPEN] created a datashield session fc258313-6846-4a8e-93d9-4809cd794fbe", "[INFO][2026-02-27T15:24:02][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:24:03][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:05][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] +#> ["[INFO][2026-03-27T11:59:57][OPEN] created a datashield session 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", "[INFO][2026-03-27T11:59:59][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-03-27T12:00:00][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] #> ] #> }, #> { -#> "@id": "20260227T152406-dslogs-dsuser_mappings.csv", +#> "@id": "20260327T120003-dslogs-dsuser_mappings.csv", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:06", -#> "name": "20260227T152406-dslogs-dsuser_mappings.csv", +#> "dateModified": "2026-03-27 12:00:03", +#> "name": "20260327T120003-dslogs-dsuser_mappings.csv", #> "description": "This file contains mappings and evaluated functions", #> "encodingFormat": "text/csv", #> "content": [ #> [ #> { -#> "timestamp": "2026-02-27T08:56:24", +#> "timestamp": "2026-03-27T11:59:57", #> "action": "OPEN", #> "user": "dsuser", -#> "r_cmd": "Open session: 622f2c74-9242-48e2-82d9-bc3250f8aa4b", +#> "r_cmd": "Open session: 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "fx": "DSI::datashield.login", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T08:56:26", +#> "timestamp": "2026-03-27T11:59:59", #> "action": "ASSIGN", #> "user": "dsuser", #> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", #> "fx": "base::assign", #> "table": "CNSIM.CNSIM1", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T08:56:27", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", #> "fx": "dsBase::lsDS", #> "symbol": "search.filter = NULL, 1L", #> "table": "CNSIM.CNSIM1", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T09:00:37", -#> "action": "OPEN", +#> "timestamp": "2026-03-27T12:00:01", +#> "action": "AGGREGATE", #> "user": "dsuser", -#> "r_cmd": "Open session: 7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "fx": "DSI::datashield.login", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", +#> "r_cmd": "base::exists(\"dsROCrate_test\")", +#> "fx": "base::exists", +#> "symbol": "dsROCrate_test", +#> "table": "CNSIM.CNSIM1", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T09:00:37", -#> "action": "ASSIGN", +#> "timestamp": "2026-03-27T12:00:01", +#> "action": "AGGREGATE", #> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", +#> "r_cmd": "dsBase::classDS(\"dsROCrate_test\")", +#> "fx": "dsBase::classDS", +#> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T09:00:38", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:47", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 08413766-4fa8-4eec-9392-ec30581fb48c", -#> "fx": "DSI::datashield.login", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:48", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:49", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:39", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "fx": "DSI::datashield.login", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:39", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:40", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:40", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "fx": "DSI::datashield.login", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:40", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:41", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:13", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "fx": "DSI::datashield.login", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:13", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:14", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:01", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "fx": "DSI::datashield.login", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:01", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:03", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:02", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: fc258313-6846-4a8e-93d9-4809cd794fbe", -#> "fx": "DSI::datashield.login", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:02", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:04", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:04", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "base::exists(\"dsROCrate_test\")", -#> "fx": "base::exists", -#> "symbol": "dsROCrate_test", -#> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:04", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::classDS(\"dsROCrate_test\")", -#> "fx": "dsBase::classDS", -#> "symbol": "dsROCrate_test", -#> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::isValidDS(dsROCrate_test)", #> "fx": "dsBase::isValidDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::dimDS(\"dsROCrate_test\")", #> "fx": "dsBase::dimDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:05", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::colnamesDS(\"dsROCrate_test\")", #> "fx": "dsBase::colnamesDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> } #> ] @@ -1213,7 +1329,7 @@ print(safe_people_crate_v1) ###### Markdown report A markdown report can be created with an overview and details for an -RO-Crate, using the `dsROCrate::rocrate_report`: +RO-Crate, using the `dsROCrate::report`: **Only generate .Rmd file** @@ -1221,13 +1337,11 @@ RO-Crate, using the `dsROCrate::rocrate_report`: safe_people_crate_v1_rmd <- tempfile(fileext = ".Rmd") # temporary file safe_people_crate_contents <- safe_people_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_people_crate_v1_rmd, render = FALSE) + dsROCrate::report(filepath = safe_people_crate_v1_rmd, render = FALSE) #> 1 'Author' entity was found! -#> 3 'Dataset' entities were found! -#> Warning: No entities were found with @type = 'WriteAction'! -#> Warning: No entities were found with @type = 'ControlAction'! +#> 3 asset entities were found! #> 1 'Project' entity was found! -#> 14 'PropertyValue' OR 'SoftwareApplication' entities were found! +#> 22 'CreativeWork', 'PropertyValue' OR 'SoftwareApplication' entities were found! #> 2 'File' entities were found! # display Overview diagram @@ -1245,27 +1359,13 @@ safe_people_crate_contents$overview_data |> | Project | Data | Access Level | People | Function | Timestamp | |:--------|:-------|:-------------|:-------|:-------------------|:--------------------| -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T08:56:26 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T08:56:27 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:00:37 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:00:38 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:20:48 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:20:49 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:08:39 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:08:40 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:18:40 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:18:41 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:04:13 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:04:14 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:13:01 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:13:03 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:24:02 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | base::exists | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::classDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::isValidDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::dimDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::colnamesDS | 2026-02-27T15:24:05 | +| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-03-27T11:59:59 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | base::exists | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::classDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::isValidDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::dimDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::colnamesDS | 2026-03-27T12:00:01 | | CNSIM | CNSIM2 | read | dsuser | | | | CNSIM | CNSIM3 | read | dsuser | | | @@ -1273,101 +1373,12 @@ safe_people_crate_contents$overview_data |> ``` r safe_people_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_people_crate_v1_rmd, + dsROCrate::report(filepath = safe_people_crate_v1_rmd, title = "DataSHIELD Safe People - Audit Report", render = TRUE, overwrite = TRUE) ``` -##### List all accessible projects & tables for an user - -``` r -safe_people_crate_v2 <- opalr::opal.login( - username = USERNAME, - password = USERPASS, - url = SERVER -) |> - dsROCrate::audit_safe_people(user = "dsuser") -#> opening file input connection. -#> Found 83 records... Imported 83 records. Simplifying... -#> closing file input connection. - -safe_people_crate_v2_rmd <- tempfile(fileext = ".Rmd") # temporary file - -safe_people_crate_contents_v2 <- safe_people_crate_v2 |> - dsROCrate::rocrate_report(filepath = safe_people_crate_v2_rmd, render = FALSE) -#> 1 'Author' entity was found! -#> 30 'Dataset' entities were found! -#> 11 'Project' entities were found! -#> 14 'PropertyValue' OR 'SoftwareApplication' entities were found! -#> 2 'File' entities were found! - -# display Overview diagram -safe_people_crate_contents_v2$overview_diagram -``` - - - -``` r - -# display Overview data (Safe People, Safe Projects and Safe Data) -safe_people_crate_contents_v2$overview_data |> - knitr::kable() -``` - -| Project | Data | Access Level | People | Function | Timestamp | -|:---|:---|:---|:---|:---|:---| -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T08:56:26 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T08:56:27 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:00:37 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:00:38 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:20:48 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:20:49 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:08:39 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:08:40 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:18:40 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:18:41 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:04:13 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:04:14 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:13:01 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:13:03 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:24:02 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | base::exists | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::classDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::isValidDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::dimDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::colnamesDS | 2026-02-27T15:24:05 | -| CNSIM | CNSIM2 | read | dsuser | | | -| CNSIM | CNSIM3 | read | dsuser | | | -| DASIM | DASIM1 | read | dsuser | | | -| DASIM | DASIM2 | read | dsuser | | | -| DASIM | DASIM3 | read | dsuser | | | -| DISCORDANT | DISCORDANT_STUDY1 | read | dsuser | | | -| DISCORDANT | DISCORDANT_STUDY2 | read | dsuser | | | -| DISCORDANT | DISCORDANT_STUDY3 | read | dsuser | | | -| GREENSPACE | Cohort1_exposome | read | dsuser | | | -| GREENSPACE | Cohort2_exposome | read | dsuser | | | -| GREENSPACE | Cohort3_exposome | read | dsuser | | | -| GWAS | ega_phenotypes | read | dsuser | | | -| GWAS | ega_phenotypes_1 | read | dsuser | | | -| GWAS | ega_phenotypes_2 | read | dsuser | | | -| GWAS | ega_phenotypes_3 | read | dsuser | | | -| MEDIATION | UPBdata1 | read | dsuser | | | -| MEDIATION | UPBdata2 | read | dsuser | | | -| MEDIATION | UPBdata3 | read | dsuser | | | -| SURVIVAL | EXPAND_WITH_MISSING1 | read | dsuser | | | -| SURVIVAL | EXPAND_WITH_MISSING2 | read | dsuser | | | -| SURVIVAL | EXPAND_WITH_MISSING3 | read | dsuser | | | -| TESTING | TESTING1 | read | dsuser | | | -| TESTING | TESTING2 | read | dsuser | | | -| TESTING | TESTING3 | read | dsuser | | | -| TITANIC_NEWCOMERS_WORKSHOP | titanic_server_1 | read | dsuser | | | -| TITANIC_NEWCOMERS_WORKSHOP | titanic_server_2 | read | dsuser | | | -| depression | growth_1 | read | dsuser | | | -| depression | growth_2 | read | dsuser | | | -| serverDataKey | myKey | read | dsuser | | | - ### 3.2. Audit Project ##### List users and dataset/table level permissions within a project @@ -1378,9 +1389,18 @@ safe_project_crate_v1 <- opalr::opal.login( password = USERPASS, url = SERVER ) |> - dsROCrate::audit_safe_project(project = "CNSIM") + dsROCrate::audit(project = "CNSIM") +#> opening file input connection. +#> Found 55 records... Imported 55 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 55 records... Imported 55 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 55 records... Imported 55 records. Simplifying... +#> closing file input connection. #> opening file input connection. -#> Found 83 records... Imported 83 records. Simplifying... +#> Found 55 records... Imported 55 records. Simplifying... #> closing file input connection. print(safe_project_crate_v1) @@ -1402,7 +1422,7 @@ print(safe_project_crate_v1) #> "@type": "Dataset", #> "name": "", #> "description": "", -#> "datePublished": "2026-02-27", +#> "datePublished": "2026-03-27", #> "license": { #> "@id": "http://spdx.org/licenses/CC-BY-4.0" #> }, @@ -1411,10 +1431,10 @@ print(safe_project_crate_v1) #> }, #> "hasPart": [ #> { -#> "@id": "20260227T152439-dslogs-dsuser.log" +#> "@id": "20260327T120011-dslogs-dsuser.log" #> }, #> { -#> "@id": "20260227T152439-dslogs-dsuser_mappings.csv" +#> "@id": "20260327T120011-dslogs-dsuser_mappings.csv" #> } #> ] #> }, @@ -1424,60 +1444,63 @@ print(safe_project_crate_v1) #> "name": "Five Safes RO-Crate profile" #> }, #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241", -#> "@type": "Dataset", -#> "name": "CNSIM1", -#> "dateCreated": "2026-02-27T06:29:50.731Z", -#> "dateModified": "2026-02-27T06:29:51.865Z", -#> "path": "/datasource/CNSIM/table/CNSIM1" +#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", +#> "@type": "Person", +#> "name": "dsuser" #> }, #> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9", -#> "@type": "Dataset", -#> "name": "CNSIM2", -#> "dateCreated": "2026-02-27T06:29:51.872Z", -#> "dateModified": "2026-02-27T06:29:53.057Z", -#> "path": "/datasource/CNSIM/table/CNSIM2" +#> "@id": "#person:cb809df1c2fb30b154f60b843e62b3d0", +#> "@type": "Person", +#> "name": "dsuser1" #> }, #> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492", -#> "@type": "Dataset", -#> "name": "CNSIM3", -#> "dateCreated": "2026-02-27T06:29:53.064Z", -#> "dateModified": "2026-02-27T06:29:54.200Z", -#> "path": "/datasource/CNSIM/table/CNSIM3" +#> "@id": "#person:a3cd7ce7818436c83b1eadaa5ba47411", +#> "@type": "Person", +#> "name": "dsuser2" +#> }, +#> { +#> "@id": "#person:5657241505661473308ae9aa9a378293", +#> "@type": "Person", +#> "name": "dsuser3" #> }, #> { #> "@id": "#project:7ba189863f9f641196596cb28e04aa14", #> "@type": "Project", #> "name": "CNSIM", -#> "dateCreated": "2026-02-27T06:29:49.235Z", -#> "dateModified": "2026-02-27T06:29:54.200Z", +#> "dateCreated": "2026-03-27T06:29:56.149Z", +#> "dateModified": "2026-03-27T06:30:01.340Z", #> "hasPart": [ #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" #> }, #> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492" +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" #> } #> ] #> }, #> { -#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", -#> "@type": "Person", -#> "name": "dsuser" -#> }, -#> { #> "@id": "#perm:9bf7f75b6c5b07d02830b95652cd39a0-dict-summary-read", #> "@type": "ReadAction", #> "agent": { #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." +#> }, +#> { +#> "@id": "#perm:4d2673da68a58c3bce23a61d97b6df51-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:cb809df1c2fb30b154f60b843e62b3d0" +#> }, +#> "object": { +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." @@ -1489,7 +1512,19 @@ print(safe_project_crate_v1) #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." +#> }, +#> { +#> "@id": "#perm:802d140a064e6ebf3a784f759af1b640-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:a3cd7ce7818436c83b1eadaa5ba47411" +#> }, +#> "object": { +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." @@ -1501,411 +1536,387 @@ print(safe_project_crate_v1) #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492" +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." #> }, #> { -#> "@id": "_:localid:datashield.privacyLevel:5", -#> "@type": "PropertyValue", -#> "name": "datashield.privacyLevel", -#> "value": "5" +#> "@id": "#perm:04c3f293c7a360fe0a1b7c29c8363540-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:5657241505661473308ae9aa9a378293" +#> }, +#> "object": { +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." #> }, #> { -#> "@id": "_:localid:default.datashield.privacyControlLevel:banana", -#> "@type": "PropertyValue", -#> "name": "default.datashield.privacyControlLevel", -#> "value": "banana" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae", +#> "@type": "Dataset", +#> "name": "CNSIM1", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM1", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } #> }, #> { -#> "@id": "_:localid:default.nfilter.glm:0.33", -#> "@type": "PropertyValue", -#> "name": "default.nfilter.glm", -#> "value": "0.33" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa", +#> "@type": "Dataset", +#> "name": "CNSIM2", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM2", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } #> }, #> { -#> "@id": "_:localid:default.nfilter.kNN:3", +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d", +#> "@type": "Dataset", +#> "name": "CNSIM3", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM3", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78", +#> "@type": "PropertyValue", +#> "name": "datashield.privacyLevel", +#> "value": "5" +#> }, +#> { +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b", +#> "@type": "PropertyValue", +#> "name": "default.datashield.privacyControlLevel", +#> "value": "banana" +#> }, +#> { +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae", +#> "@type": "PropertyValue", +#> "name": "default.nfilter.glm", +#> "value": "0.33" +#> }, +#> { +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7", #> "@type": "PropertyValue", #> "name": "default.nfilter.kNN", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.density:0.33", +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.density", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.max:40", +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.max", #> "value": "40" #> }, #> { -#> "@id": "_:localid:default.nfilter.noise:0.25", +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5", #> "@type": "PropertyValue", #> "name": "default.nfilter.noise", #> "value": "0.25" #> }, #> { -#> "@id": "_:localid:default.nfilter.string:80", +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54", #> "@type": "PropertyValue", #> "name": "default.nfilter.string", #> "value": "80" #> }, #> { -#> "@id": "_:localid:default.nfilter.stringShort:20", +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5", #> "@type": "PropertyValue", #> "name": "default.nfilter.stringShort", #> "value": "20" #> }, #> { -#> "@id": "_:localid:default.nfilter.subset:3", +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985", #> "@type": "PropertyValue", #> "name": "default.nfilter.subset", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.tab:3", +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0", #> "@type": "PropertyValue", #> "name": "default.nfilter.tab", #> "value": "3" #> }, #> { -#> "@id": "_:localid:3aaeab3631b4c9bbe7f44d60805b8f9c", +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8", +#> "@type": "CreativeWork", +#> "name": "Disclosure Control Environment", +#> "description": "Disclosure control settings extract from the OBiBa Opal server connection provided, using the profile: 'default'.", +#> "hasPart": [ +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78" +#> }, +#> { +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b" +#> }, +#> { +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae" +#> }, +#> { +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7" +#> }, +#> { +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79" +#> }, +#> { +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f" +#> }, +#> { +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5" +#> }, +#> { +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54" +#> }, +#> { +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5" +#> }, +#> { +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985" +#> }, +#> { +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0" +#> } +#> ] +#> }, +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27", #> "@type": "SoftwareApplication", #> "name": "dsBase", #> "version": "6.3.5", -#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows\n you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have\n been designed to only share non disclosive summary statistics, with built in automated output\n checking based on statistical disclosure control. With data sites setting the threshold values for\n the automated output checks. For more details, see 'citation(\"dsBase\")'." +#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have been designed to only share non disclosive summary statistics, with built in automated output checking based on statistical disclosure control. With data sites setting the threshold values for the automated output checks. For more details, see 'citation(\"dsBase\")'." #> }, #> { -#> "@id": "_:localid:e2f7c43973c40d7a6a6731da5a0aa564", +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44", #> "@type": "SoftwareApplication", #> "name": "dsTidyverse", #> "version": "1.1.0", #> "description": "Implementation of selected 'Tidyverse' functions within 'DataSHIELD', an open-source federated analysis solution in R. Currently, DataSHIELD contains very limited tools for data manipulation, so the aim of this package is to improve the researcher experience by implementing essential functions for data manipulation, including subsetting, filtering, grouping, and renaming variables. This is the serverside package which should be installed on the server holding the data, and is used in conjuncture with the clientside package 'dsTidyverseClient' which is installed in the local R environment of the analyst. For more information, see and ." #> }, #> { -#> "@id": "_:localid:411453e2513e6d909fe2cb8273b034dc", +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b", #> "@type": "SoftwareApplication", #> "name": "resourcer", #> "version": "1.5.0", -#> "description": "A resource represents some data or a computation unit. It is \n described by a URL and credentials. This package proposes a Resource model\n with \"resolver\" and \"client\" classes to facilitate the access and the usage of the \n resources." +#> "description": "A resource represents some data or a computation unit. It is described by a URL and credentials. This package proposes a Resource model with \"resolver\" and \"client\" classes to facilitate the access and the usage of the resources." +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc", +#> "@type": "SoftwareApplication", +#> "name": "Opal", +#> "version": "5.6.1", +#> "description": "Opal is OBiBa's (https://www.obiba.org/) core database application for epidemiological studies. Participant data, collected by questionnaires, medical instruments, sensors, administrative databases etc. can be integrated and stored in a central data repository under a uniform model." +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1", +#> "@type": "CreativeWork", +#> "name": "Approved Analytical Software Environment", +#> "description": "Software packages installed in the controlled Opal/DataSHIELD environment used for federated analysis.", +#> "hasPart": [ +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27" +#> }, +#> { +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44" +#> }, +#> { +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b" +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc" +#> } +#> ] +#> }, +#> { +#> "@id": "#control:output-checking", +#> "@type": "CreativeWork", +#> "name": "Statistical Disclosure Output Checking", +#> "description": "Automated disclosure control prevents release of small-cell counts and disclosive statistics." +#> }, +#> { +#> "@id": "#control:server-side-analysis", +#> "@type": "CreativeWork", +#> "name": "Server-Side Analysis Enforcement", +#> "description": "Raw data never leaves the secure server; analysis occurs via vetted aggregate functions." +#> }, +#> { +#> "@id": "#control:session-logging", +#> "@type": "CreativeWork", +#> "name": "Comprehensive Session Logging", +#> "description": "All analytical actions are logged and auditable." +#> }, +#> { +#> "@id": "#control:secure-facility", +#> "@type": "CreativeWork", +#> "name": "Secure Data Facility", +#> "description": "Access restricted to approved secure premises." +#> }, +#> { +#> "@id": "#control:access-governance", +#> "@type": "CreativeWork", +#> "name": "Access Governance Process", +#> "description": "Data access committee review and approval required." #> }, #> { -#> "@id": "20260227T152439-dslogs-dsuser.log", +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5", +#> "@type": "CreativeWork", +#> "name": "Safe Setting Controls (Opal)", +#> "description": "Technical, physical and organisational safeguards applied to minimise disclosure risk.", +#> "hasPart": [ +#> { +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8" +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1" +#> }, +#> { +#> "@id": "#control:output-checking" +#> }, +#> { +#> "@id": "#control:server-side-analysis" +#> }, +#> { +#> "@id": "#control:session-logging" +#> }, +#> { +#> "@id": "#control:secure-facility" +#> }, +#> { +#> "@id": "#control:access-governance" +#> } +#> ] +#> }, +#> { +#> "@id": "#link:b16fbdedcc33e826878020dcd5fad3d3", +#> "@type": "CreativeWork", +#> "name": "Safe Settings x Safe Project Link", +#> "about": { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5" +#> }, +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "20260327T120011-dslogs-dsuser.log", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:39", -#> "name": "20260227T152439-dslogs-dsuser.log", +#> "dateModified": "2026-03-27 12:00:11", +#> "name": "20260327T120011-dslogs-dsuser.log", #> "description": "This file contains the raw logs for the user: `dsuser` , between: ALL and ALL", #> "encodingFormat": "text/plain", #> "content": [ -#> ["[INFO][2026-02-27T08:56:24][OPEN] created a datashield session 622f2c74-9242-48e2-82d9-bc3250f8aa4b", "[INFO][2026-02-27T08:56:26][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T08:56:26][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T08:56:27][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:00:37][OPEN] created a datashield session 7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", "[INFO][2026-02-27T09:00:37][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T09:00:38][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:00:38][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:20:47][OPEN] created a datashield session 08413766-4fa8-4eec-9392-ec30581fb48c", "[INFO][2026-02-27T09:20:48][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T09:20:48][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:20:49][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:08:39][OPEN] created a datashield session 88a48432-61c8-4444-bb6f-1d0174d4f177", "[INFO][2026-02-27T14:08:39][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T14:08:39][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:08:40][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:18:40][OPEN] created a datashield session e45b3573-21cc-445d-8d22-b7fc289d279a", "[INFO][2026-02-27T14:18:40][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T14:18:40][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:18:41][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:04:13][OPEN] created a datashield session 026b4b18-c40c-4f08-8a19-75716fee1c75", "[INFO][2026-02-27T15:04:13][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:04:14][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:04:14][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:13:01][OPEN] created a datashield session a3a6f257-79ef-443c-a110-393b1ff196f0", "[INFO][2026-02-27T15:13:01][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:13:02][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:13:03][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:02][OPEN] created a datashield session fc258313-6846-4a8e-93d9-4809cd794fbe", "[INFO][2026-02-27T15:24:02][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:24:03][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:05][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] +#> ["[INFO][2026-03-27T11:59:57][OPEN] created a datashield session 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", "[INFO][2026-03-27T11:59:59][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-03-27T12:00:00][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] #> ] #> }, #> { -#> "@id": "20260227T152439-dslogs-dsuser_mappings.csv", +#> "@id": "20260327T120011-dslogs-dsuser_mappings.csv", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:39", -#> "name": "20260227T152439-dslogs-dsuser_mappings.csv", +#> "dateModified": "2026-03-27 12:00:11", +#> "name": "20260327T120011-dslogs-dsuser_mappings.csv", #> "description": "This file contains mappings and evaluated functions", #> "encodingFormat": "text/csv", #> "content": [ #> [ #> { -#> "timestamp": "2026-02-27T08:56:24", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "fx": "DSI::datashield.login", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T08:56:26", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T08:56:27", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:00:37", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "fx": "DSI::datashield.login", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:00:37", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:00:38", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:47", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 08413766-4fa8-4eec-9392-ec30581fb48c", -#> "fx": "DSI::datashield.login", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:48", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:49", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:39", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "fx": "DSI::datashield.login", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:39", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:40", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:40", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "fx": "DSI::datashield.login", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:40", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:41", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:13", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "fx": "DSI::datashield.login", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:13", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:14", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:01", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "fx": "DSI::datashield.login", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:01", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:03", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:02", +#> "timestamp": "2026-03-27T11:59:57", #> "action": "OPEN", #> "user": "dsuser", -#> "r_cmd": "Open session: fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "r_cmd": "Open session: 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "fx": "DSI::datashield.login", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:02", +#> "timestamp": "2026-03-27T11:59:59", #> "action": "ASSIGN", #> "user": "dsuser", #> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", #> "fx": "base::assign", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", #> "fx": "dsBase::lsDS", #> "symbol": "search.filter = NULL, 1L", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "base::exists(\"dsROCrate_test\")", #> "fx": "base::exists", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::classDS(\"dsROCrate_test\")", #> "fx": "dsBase::classDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::isValidDS(dsROCrate_test)", #> "fx": "dsBase::isValidDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::dimDS(\"dsROCrate_test\")", #> "fx": "dsBase::dimDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:05", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::colnamesDS(\"dsROCrate_test\")", #> "fx": "dsBase::colnamesDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> } #> ] @@ -1918,7 +1929,7 @@ print(safe_project_crate_v1) ###### Markdown report A markdown report can be created with an overview and details for an -RO-Crate, using the `dsROCrate::rocrate_report`: +RO-Crate, using the `dsROCrate::report`: **Only generate .Rmd file** @@ -1926,13 +1937,11 @@ RO-Crate, using the `dsROCrate::rocrate_report`: safe_project_crate_v1_rmd <- tempfile(fileext = ".Rmd") # temporary file safe_project_crate_contents <- safe_project_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_project_crate_v1_rmd, render = FALSE) -#> 1 'Author' entity was found! -#> 3 'Dataset' entities were found! -#> Warning: No entities were found with @type = 'WriteAction'! -#> Warning: No entities were found with @type = 'ControlAction'! + dsROCrate::report(filepath = safe_project_crate_v1_rmd, render = FALSE) +#> 4 'Author' entities were found! +#> 3 asset entities were found! #> 1 'Project' entity was found! -#> 14 'PropertyValue' OR 'SoftwareApplication' entities were found! +#> 22 'CreativeWork', 'PropertyValue' OR 'SoftwareApplication' entities were found! #> 2 'File' entities were found! # display Overview diagram @@ -1948,37 +1957,26 @@ safe_project_crate_contents$overview_data |> knitr::kable() ``` -| Project | Data | Access Level | People | Function | Timestamp | -|:--------|:-------|:-------------|:-------|:-------------------|:--------------------| -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T08:56:26 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T08:56:27 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:00:37 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:00:38 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:20:48 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:20:49 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:08:39 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:08:40 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:18:40 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:18:41 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:04:13 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:04:14 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:13:01 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:13:03 | -| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:24:02 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | base::exists | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::classDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::isValidDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::dimDS | 2026-02-27T15:24:04 | -| CNSIM | CNSIM1 | read | dsuser | dsBase::colnamesDS | 2026-02-27T15:24:05 | -| CNSIM | CNSIM2 | read | dsuser | | | -| CNSIM | CNSIM3 | read | dsuser | | | +| Project | Data | Access Level | People | Function | Timestamp | +|:--------|:-------|:-------------|:--------|:-------------------|:--------------------| +| CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-03-27T11:59:59 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | base::exists | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::classDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::isValidDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::dimDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser | dsBase::colnamesDS | 2026-03-27T12:00:01 | +| CNSIM | CNSIM1 | read | dsuser1 | | | +| CNSIM | CNSIM2 | read | dsuser | | | +| CNSIM | CNSIM2 | read | dsuser2 | | | +| CNSIM | CNSIM3 | read | dsuser | | | +| CNSIM | CNSIM3 | read | dsuser3 | | | **Render and display report (HTML)** ``` r safe_project_crate_v1 |> - dsROCrate::rocrate_report(filepath = safe_project_crate_v1_rmd, + dsROCrate::report(filepath = safe_project_crate_v1_rmd, title = "DataSHIELD Safe Project - Audit Report", render = TRUE, overwrite = TRUE) @@ -2004,7 +2002,37 @@ study_crate_v1 <- url = "https://opal-demo.obiba.org" ) ) |> - dsROCrate::audit_study(project = "CNSIM") + dsROCrate::audit(project = "CNSIM") +#> opening file input connection. +#> Found 6 records... Imported 6 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 6 records... Imported 6 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 6 records... Imported 6 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 6 records... Imported 6 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 6 records... Imported 6 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 6 records... Imported 6 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 55 records... Imported 55 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 55 records... Imported 55 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 55 records... Imported 55 records. Simplifying... +#> closing file input connection. +#> opening file input connection. +#> Found 55 records... Imported 55 records. Simplifying... +#> closing file input connection. print(study_crate_v1) #> $opal_test @@ -2026,7 +2054,7 @@ print(study_crate_v1) #> "@type": "Dataset", #> "name": "", #> "description": "", -#> "datePublished": "2026-02-27", +#> "datePublished": "2026-03-27", #> "license": { #> "@id": "http://spdx.org/licenses/CC-BY-4.0" #> }, @@ -2040,28 +2068,53 @@ print(study_crate_v1) #> "name": "Five Safes RO-Crate profile" #> }, #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241", -#> "@type": "Dataset", -#> "name": "CNSIM1", -#> "dateCreated": "2026-01-17T10:53:48.925Z", -#> "dateModified": "2026-01-17T10:53:50.189Z", -#> "path": "/datasource/CNSIM/table/CNSIM1" +#> "@id": "#person:8ab380609ec94312fa958741d1f0f0b1", +#> "@type": "Person", +#> "name": "user1" #> }, #> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9", -#> "@type": "Dataset", -#> "name": "CNSIM2", -#> "dateCreated": "2026-01-17T10:53:50.194Z", -#> "dateModified": "2026-01-17T10:53:51.417Z", -#> "path": "/datasource/CNSIM/table/CNSIM2" +#> "@id": "#person:89bba9a8875a3a16196372b4c087edbd", +#> "@type": "Person", +#> "name": "ds" #> }, #> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492", -#> "@type": "Dataset", -#> "name": "CNSIM3", -#> "dateCreated": "2026-01-17T10:53:51.422Z", -#> "dateModified": "2026-01-17T10:53:52.663Z", -#> "path": "/datasource/CNSIM/table/CNSIM3" +#> "@id": "#person:ab761662ca15f3f7658a0b3adeaae564", +#> "@type": "Person", +#> "name": "bthillo@gmail.com", +#> "sub": "109004362127439404576", +#> "email_verified": true, +#> "given_name": "Roberto", +#> "family_name": "Villegas-Diaz", +#> "picture": "https://lh3.googleusercontent.com/a/ACg8ocK8GIJLuuDRjfevJjXSZ8Ymw_Y67r8_bsud8eLGClA92MS-GLhd8Q=s96-c", +#> "email": "bthillo@gmail.com" +#> }, +#> { +#> "@id": "#person:f53ed7aa4ab05429c9d20f360d451a98", +#> "@type": "Person", +#> "name": "i.w.farr@googlemail.com", +#> "sub": "106174335072326132292", +#> "email_verified": true, +#> "given_name": "ian", +#> "family_name": "farr", +#> "picture": "https://lh3.googleusercontent.com/a/ACg8ocKBagSKWdPGazh5CWkffgXleyPaSqn66IlAOMm0voLm-79S1A=s96-c", +#> "email": "i.w.farr@googlemail.com" +#> }, +#> { +#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", +#> "@type": "Person", +#> "name": "dsuser" +#> }, +#> { +#> "@id": "#person:315ba97bcf520312d32e7f1e4f5e8575", +#> "@type": "Person", +#> "name": "yannick.marcon@obiba.org", +#> "sub": "112183318969537221630", +#> "email_verified": true, +#> "given_name": "Yannick", +#> "hd": "obiba.org", +#> "family_name": "Marcon", +#> "picture": "https://lh3.googleusercontent.com/a/ACg8ocJFG4mQ2lz80itm91vEUX3jnj12IRv1tF_OaVBDf2Ear6pUsA=s96-c", +#> "email": "yannick.marcon@obiba.org" #> }, #> { #> "@id": "#project:7ba189863f9f641196596cb28e04aa14", @@ -2071,119 +2124,288 @@ print(study_crate_v1) #> "dateModified": "2026-01-17T10:53:52.663Z", #> "hasPart": [ #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" #> }, #> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492" +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" #> } #> ] #> }, #> { -#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", -#> "@type": "Person", -#> "name": "dsuser" -#> }, -#> { #> "@id": "#perm:9bf7f75b6c5b07d02830b95652cd39a0-dict-summary-read", #> "@type": "ReadAction", #> "agent": { #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." #> }, #> { -#> "@id": "_:localid:datashield.privacyLevel:5", +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae", +#> "@type": "Dataset", +#> "name": "CNSIM1", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM1", +#> "dateCreated": "2026-01-17T00:00:00Z", +#> "dateModified": "2026-01-17T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#asset:b6721026564c746f604df7ba785931fa", +#> "@type": "Dataset", +#> "name": "CNSIM2", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM2", +#> "dateCreated": "2026-01-17T00:00:00Z", +#> "dateModified": "2026-01-17T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d", +#> "@type": "Dataset", +#> "name": "CNSIM3", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM3", +#> "dateCreated": "2026-01-17T00:00:00Z", +#> "dateModified": "2026-01-17T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78", #> "@type": "PropertyValue", #> "name": "datashield.privacyLevel", #> "value": "5" #> }, #> { -#> "@id": "_:localid:default.datashield.privacyControlLevel:banana", +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b", #> "@type": "PropertyValue", #> "name": "default.datashield.privacyControlLevel", #> "value": "banana" #> }, #> { -#> "@id": "_:localid:default.nfilter.glm:0.33", +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae", #> "@type": "PropertyValue", #> "name": "default.nfilter.glm", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.kNN:3", +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7", #> "@type": "PropertyValue", #> "name": "default.nfilter.kNN", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.density:0.33", +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.density", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.max:40", +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.max", #> "value": "40" #> }, #> { -#> "@id": "_:localid:default.nfilter.noise:0.25", +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5", #> "@type": "PropertyValue", #> "name": "default.nfilter.noise", #> "value": "0.25" #> }, #> { -#> "@id": "_:localid:default.nfilter.string:80", +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54", #> "@type": "PropertyValue", #> "name": "default.nfilter.string", #> "value": "80" #> }, #> { -#> "@id": "_:localid:default.nfilter.stringShort:20", +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5", #> "@type": "PropertyValue", #> "name": "default.nfilter.stringShort", #> "value": "20" #> }, #> { -#> "@id": "_:localid:default.nfilter.subset:3", +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985", #> "@type": "PropertyValue", #> "name": "default.nfilter.subset", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.tab:3", +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0", #> "@type": "PropertyValue", #> "name": "default.nfilter.tab", #> "value": "3" #> }, #> { -#> "@id": "_:localid:3aaeab3631b4c9bbe7f44d60805b8f9c", +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8", +#> "@type": "CreativeWork", +#> "name": "Disclosure Control Environment", +#> "description": "Disclosure control settings extract from the OBiBa Opal server connection provided, using the profile: 'default'.", +#> "hasPart": [ +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78" +#> }, +#> { +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b" +#> }, +#> { +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae" +#> }, +#> { +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7" +#> }, +#> { +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79" +#> }, +#> { +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f" +#> }, +#> { +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5" +#> }, +#> { +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54" +#> }, +#> { +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5" +#> }, +#> { +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985" +#> }, +#> { +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0" +#> } +#> ] +#> }, +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27", #> "@type": "SoftwareApplication", #> "name": "dsBase", #> "version": "6.3.5", -#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows\n you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have\n been designed to only share non disclosive summary statistics, with built in automated output\n checking based on statistical disclosure control. With data sites setting the threshold values for\n the automated output checks. For more details, see 'citation(\"dsBase\")'." +#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have been designed to only share non disclosive summary statistics, with built in automated output checking based on statistical disclosure control. With data sites setting the threshold values for the automated output checks. For more details, see 'citation(\"dsBase\")'." #> }, #> { -#> "@id": "_:localid:e2f7c43973c40d7a6a6731da5a0aa564", +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44", #> "@type": "SoftwareApplication", #> "name": "dsTidyverse", #> "version": "1.1.0", #> "description": "Implementation of selected 'Tidyverse' functions within 'DataSHIELD', an open-source federated analysis solution in R. Currently, DataSHIELD contains very limited tools for data manipulation, so the aim of this package is to improve the researcher experience by implementing essential functions for data manipulation, including subsetting, filtering, grouping, and renaming variables. This is the serverside package which should be installed on the server holding the data, and is used in conjuncture with the clientside package 'dsTidyverseClient' which is installed in the local R environment of the analyst. For more information, see and ." #> }, #> { -#> "@id": "_:localid:411453e2513e6d909fe2cb8273b034dc", +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b", #> "@type": "SoftwareApplication", #> "name": "resourcer", #> "version": "1.5.0", -#> "description": "A resource represents some data or a computation unit. It is \n described by a URL and credentials. This package proposes a Resource model\n with \"resolver\" and \"client\" classes to facilitate the access and the usage of the \n resources." +#> "description": "A resource represents some data or a computation unit. It is described by a URL and credentials. This package proposes a Resource model with \"resolver\" and \"client\" classes to facilitate the access and the usage of the resources." +#> }, +#> { +#> "@id": "#software:0cd42af0c314700303b0c4b14b16b9ce", +#> "@type": "SoftwareApplication", +#> "name": "Opal", +#> "version": "5.6.0-SNAPSHOT", +#> "description": "Opal is OBiBa's (https://www.obiba.org/) core database application for epidemiological studies. Participant data, collected by questionnaires, medical instruments, sensors, administrative databases etc. can be integrated and stored in a central data repository under a uniform model." +#> }, +#> { +#> "@id": "#env:software_stack:55187df92eed3fae2198151d49e29389", +#> "@type": "CreativeWork", +#> "name": "Approved Analytical Software Environment", +#> "description": "Software packages installed in the controlled Opal/DataSHIELD environment used for federated analysis.", +#> "hasPart": [ +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27" +#> }, +#> { +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44" +#> }, +#> { +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b" +#> }, +#> { +#> "@id": "#software:0cd42af0c314700303b0c4b14b16b9ce" +#> } +#> ] +#> }, +#> { +#> "@id": "#control:output-checking", +#> "@type": "CreativeWork", +#> "name": "Statistical Disclosure Output Checking", +#> "description": "Automated disclosure control prevents release of small-cell counts and disclosive statistics." +#> }, +#> { +#> "@id": "#control:server-side-analysis", +#> "@type": "CreativeWork", +#> "name": "Server-Side Analysis Enforcement", +#> "description": "Raw data never leaves the secure server; analysis occurs via vetted aggregate functions." +#> }, +#> { +#> "@id": "#control:session-logging", +#> "@type": "CreativeWork", +#> "name": "Comprehensive Session Logging", +#> "description": "All analytical actions are logged and auditable." +#> }, +#> { +#> "@id": "#control:secure-facility", +#> "@type": "CreativeWork", +#> "name": "Secure Data Facility", +#> "description": "Access restricted to approved secure premises." +#> }, +#> { +#> "@id": "#control:access-governance", +#> "@type": "CreativeWork", +#> "name": "Access Governance Process", +#> "description": "Data access committee review and approval required." +#> }, +#> { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5", +#> "@type": "CreativeWork", +#> "name": "Safe Setting Controls (Opal)", +#> "description": "Technical, physical and organisational safeguards applied to minimise disclosure risk.", +#> "hasPart": [ +#> { +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8" +#> }, +#> { +#> "@id": "#env:software_stack:55187df92eed3fae2198151d49e29389" +#> }, +#> { +#> "@id": "#control:output-checking" +#> }, +#> { +#> "@id": "#control:server-side-analysis" +#> }, +#> { +#> "@id": "#control:session-logging" +#> }, +#> { +#> "@id": "#control:secure-facility" +#> }, +#> { +#> "@id": "#control:access-governance" +#> } +#> ] +#> }, +#> { +#> "@id": "#link:b16fbdedcc33e826878020dcd5fad3d3", +#> "@type": "CreativeWork", +#> "name": "Safe Settings x Safe Project Link", +#> "about": { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5" +#> }, +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } #> } #> ] #> } @@ -2207,7 +2429,7 @@ print(study_crate_v1) #> "@type": "Dataset", #> "name": "", #> "description": "", -#> "datePublished": "2026-02-27", +#> "datePublished": "2026-03-27", #> "license": { #> "@id": "http://spdx.org/licenses/CC-BY-4.0" #> }, @@ -2216,10 +2438,10 @@ print(study_crate_v1) #> }, #> "hasPart": [ #> { -#> "@id": "20260227T152444-dslogs-dsuser.log" +#> "@id": "20260327T120017-dslogs-dsuser.log" #> }, #> { -#> "@id": "20260227T152444-dslogs-dsuser_mappings.csv" +#> "@id": "20260327T120017-dslogs-dsuser_mappings.csv" #> } #> ] #> }, @@ -2229,60 +2451,63 @@ print(study_crate_v1) #> "name": "Five Safes RO-Crate profile" #> }, #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241", -#> "@type": "Dataset", -#> "name": "CNSIM1", -#> "dateCreated": "2026-02-27T06:29:50.731Z", -#> "dateModified": "2026-02-27T06:29:51.865Z", -#> "path": "/datasource/CNSIM/table/CNSIM1" +#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", +#> "@type": "Person", +#> "name": "dsuser" #> }, #> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9", -#> "@type": "Dataset", -#> "name": "CNSIM2", -#> "dateCreated": "2026-02-27T06:29:51.872Z", -#> "dateModified": "2026-02-27T06:29:53.057Z", -#> "path": "/datasource/CNSIM/table/CNSIM2" +#> "@id": "#person:cb809df1c2fb30b154f60b843e62b3d0", +#> "@type": "Person", +#> "name": "dsuser1" #> }, #> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492", -#> "@type": "Dataset", -#> "name": "CNSIM3", -#> "dateCreated": "2026-02-27T06:29:53.064Z", -#> "dateModified": "2026-02-27T06:29:54.200Z", -#> "path": "/datasource/CNSIM/table/CNSIM3" +#> "@id": "#person:a3cd7ce7818436c83b1eadaa5ba47411", +#> "@type": "Person", +#> "name": "dsuser2" +#> }, +#> { +#> "@id": "#person:5657241505661473308ae9aa9a378293", +#> "@type": "Person", +#> "name": "dsuser3" #> }, #> { #> "@id": "#project:7ba189863f9f641196596cb28e04aa14", #> "@type": "Project", #> "name": "CNSIM", -#> "dateCreated": "2026-02-27T06:29:49.235Z", -#> "dateModified": "2026-02-27T06:29:54.200Z", +#> "dateCreated": "2026-03-27T06:29:56.149Z", +#> "dateModified": "2026-03-27T06:30:01.340Z", #> "hasPart": [ #> { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" #> }, #> { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492" +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" #> } #> ] #> }, #> { -#> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2", -#> "@type": "Person", -#> "name": "dsuser" -#> }, -#> { #> "@id": "#perm:9bf7f75b6c5b07d02830b95652cd39a0-dict-summary-read", #> "@type": "ReadAction", #> "agent": { #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:67adf2d8e106aca9b11de773758bd241" +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." +#> }, +#> { +#> "@id": "#perm:4d2673da68a58c3bce23a61d97b6df51-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:cb809df1c2fb30b154f60b843e62b3d0" +#> }, +#> "object": { +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." @@ -2294,7 +2519,19 @@ print(study_crate_v1) #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:ffb1b1adcafc024743be1b0c252787c9" +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." +#> }, +#> { +#> "@id": "#perm:802d140a064e6ebf3a784f759af1b640-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:a3cd7ce7818436c83b1eadaa5ba47411" +#> }, +#> "object": { +#> "@id": "#asset:b6721026564c746f604df7ba785931fa" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." @@ -2306,411 +2543,387 @@ print(study_crate_v1) #> "@id": "#person:a0af2a94926db1b49ad7a812eef509d2" #> }, #> "object": { -#> "@id": "#dataset:cc3061aef69ce457358815fb9d8c6492" +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" #> }, #> "actionStatus": "PotentialActionStatus", #> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." #> }, #> { -#> "@id": "_:localid:datashield.privacyLevel:5", +#> "@id": "#perm:04c3f293c7a360fe0a1b7c29c8363540-dict-summary-read", +#> "@type": "ReadAction", +#> "agent": { +#> "@id": "#person:5657241505661473308ae9aa9a378293" +#> }, +#> "object": { +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d" +#> }, +#> "actionStatus": "PotentialActionStatus", +#> "description": "User may view table dictionary and summary statistics only; access to individual values is restricted." +#> }, +#> { +#> "@id": "#asset:fad6faf661584d53e58f9730b14c5aae", +#> "@type": "Dataset", +#> "name": "CNSIM1", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM1", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#asset:b6721026564c746f604df7ba785931fa", +#> "@type": "Dataset", +#> "name": "CNSIM2", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM2", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#asset:14fbb8de0021e6d237a2ed7779f9625d", +#> "@type": "Dataset", +#> "name": "CNSIM3", +#> "description": "", +#> "url": "/datasource/CNSIM/table/CNSIM3", +#> "dateCreated": "2026-03-27T00:00:00Z", +#> "dateModified": "2026-03-27T00:00:00Z", +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78", #> "@type": "PropertyValue", #> "name": "datashield.privacyLevel", #> "value": "5" #> }, #> { -#> "@id": "_:localid:default.datashield.privacyControlLevel:banana", +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b", #> "@type": "PropertyValue", #> "name": "default.datashield.privacyControlLevel", #> "value": "banana" #> }, #> { -#> "@id": "_:localid:default.nfilter.glm:0.33", +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae", #> "@type": "PropertyValue", #> "name": "default.nfilter.glm", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.kNN:3", +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7", #> "@type": "PropertyValue", #> "name": "default.nfilter.kNN", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.density:0.33", +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.density", #> "value": "0.33" #> }, #> { -#> "@id": "_:localid:default.nfilter.levels.max:40", +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f", #> "@type": "PropertyValue", #> "name": "default.nfilter.levels.max", #> "value": "40" #> }, #> { -#> "@id": "_:localid:default.nfilter.noise:0.25", +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5", #> "@type": "PropertyValue", #> "name": "default.nfilter.noise", #> "value": "0.25" #> }, #> { -#> "@id": "_:localid:default.nfilter.string:80", +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54", #> "@type": "PropertyValue", #> "name": "default.nfilter.string", #> "value": "80" #> }, #> { -#> "@id": "_:localid:default.nfilter.stringShort:20", +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5", #> "@type": "PropertyValue", #> "name": "default.nfilter.stringShort", #> "value": "20" #> }, #> { -#> "@id": "_:localid:default.nfilter.subset:3", +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985", #> "@type": "PropertyValue", #> "name": "default.nfilter.subset", #> "value": "3" #> }, #> { -#> "@id": "_:localid:default.nfilter.tab:3", +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0", #> "@type": "PropertyValue", #> "name": "default.nfilter.tab", #> "value": "3" #> }, #> { -#> "@id": "_:localid:3aaeab3631b4c9bbe7f44d60805b8f9c", +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8", +#> "@type": "CreativeWork", +#> "name": "Disclosure Control Environment", +#> "description": "Disclosure control settings extract from the OBiBa Opal server connection provided, using the profile: 'default'.", +#> "hasPart": [ +#> { +#> "@id": "#disc:27d8c1d2233ecb654a24b635fd4dbd78" +#> }, +#> { +#> "@id": "#disc:46b65707a6b998f3b1364bc10e6d9b4b" +#> }, +#> { +#> "@id": "#disc:7769282e7b0a1cb8887f60886c7b56ae" +#> }, +#> { +#> "@id": "#disc:49d822f52075aafbec1d1b2545aa46b7" +#> }, +#> { +#> "@id": "#disc:9a59210a743557bbd61cb21c3f1e0a79" +#> }, +#> { +#> "@id": "#disc:a00b1e31a448142ee66bbb013f990e1f" +#> }, +#> { +#> "@id": "#disc:29dd5e27a9f1c66d81a7037c236e7dd5" +#> }, +#> { +#> "@id": "#disc:1c12e549b91e2cc0856f56657988ce54" +#> }, +#> { +#> "@id": "#disc:786bc0ffcdd3054925e431240caecea5" +#> }, +#> { +#> "@id": "#disc:fd9bea5ef311d5f14b28d237ecb6e985" +#> }, +#> { +#> "@id": "#disc:4e93a50cbd8cfea8f0a6adc50ee7aac0" +#> } +#> ] +#> }, +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27", #> "@type": "SoftwareApplication", #> "name": "dsBase", #> "version": "6.3.5", -#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows\n you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have\n been designed to only share non disclosive summary statistics, with built in automated output\n checking based on statistical disclosure control. With data sites setting the threshold values for\n the automated output checks. For more details, see 'citation(\"dsBase\")'." +#> "description": "Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have been designed to only share non disclosive summary statistics, with built in automated output checking based on statistical disclosure control. With data sites setting the threshold values for the automated output checks. For more details, see 'citation(\"dsBase\")'." #> }, #> { -#> "@id": "_:localid:e2f7c43973c40d7a6a6731da5a0aa564", +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44", #> "@type": "SoftwareApplication", #> "name": "dsTidyverse", #> "version": "1.1.0", #> "description": "Implementation of selected 'Tidyverse' functions within 'DataSHIELD', an open-source federated analysis solution in R. Currently, DataSHIELD contains very limited tools for data manipulation, so the aim of this package is to improve the researcher experience by implementing essential functions for data manipulation, including subsetting, filtering, grouping, and renaming variables. This is the serverside package which should be installed on the server holding the data, and is used in conjuncture with the clientside package 'dsTidyverseClient' which is installed in the local R environment of the analyst. For more information, see and ." #> }, #> { -#> "@id": "_:localid:411453e2513e6d909fe2cb8273b034dc", +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b", #> "@type": "SoftwareApplication", #> "name": "resourcer", #> "version": "1.5.0", -#> "description": "A resource represents some data or a computation unit. It is \n described by a URL and credentials. This package proposes a Resource model\n with \"resolver\" and \"client\" classes to facilitate the access and the usage of the \n resources." +#> "description": "A resource represents some data or a computation unit. It is described by a URL and credentials. This package proposes a Resource model with \"resolver\" and \"client\" classes to facilitate the access and the usage of the resources." +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc", +#> "@type": "SoftwareApplication", +#> "name": "Opal", +#> "version": "5.6.1", +#> "description": "Opal is OBiBa's (https://www.obiba.org/) core database application for epidemiological studies. Participant data, collected by questionnaires, medical instruments, sensors, administrative databases etc. can be integrated and stored in a central data repository under a uniform model." +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1", +#> "@type": "CreativeWork", +#> "name": "Approved Analytical Software Environment", +#> "description": "Software packages installed in the controlled Opal/DataSHIELD environment used for federated analysis.", +#> "hasPart": [ +#> { +#> "@id": "#software:f8784d80bad08f840fba23fa9c41ec27" +#> }, +#> { +#> "@id": "#software:afa897ee58de14b27570462c97a9dd44" +#> }, +#> { +#> "@id": "#software:d2133fef4ca6df6312f205e51aee541b" +#> }, +#> { +#> "@id": "#software:77514b155cfdb0c8c535fbe54daf67fc" +#> } +#> ] +#> }, +#> { +#> "@id": "#control:output-checking", +#> "@type": "CreativeWork", +#> "name": "Statistical Disclosure Output Checking", +#> "description": "Automated disclosure control prevents release of small-cell counts and disclosive statistics." +#> }, +#> { +#> "@id": "#control:server-side-analysis", +#> "@type": "CreativeWork", +#> "name": "Server-Side Analysis Enforcement", +#> "description": "Raw data never leaves the secure server; analysis occurs via vetted aggregate functions." +#> }, +#> { +#> "@id": "#control:session-logging", +#> "@type": "CreativeWork", +#> "name": "Comprehensive Session Logging", +#> "description": "All analytical actions are logged and auditable." +#> }, +#> { +#> "@id": "#control:secure-facility", +#> "@type": "CreativeWork", +#> "name": "Secure Data Facility", +#> "description": "Access restricted to approved secure premises." #> }, #> { -#> "@id": "20260227T152444-dslogs-dsuser.log", +#> "@id": "#control:access-governance", +#> "@type": "CreativeWork", +#> "name": "Access Governance Process", +#> "description": "Data access committee review and approval required." +#> }, +#> { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5", +#> "@type": "CreativeWork", +#> "name": "Safe Setting Controls (Opal)", +#> "description": "Technical, physical and organisational safeguards applied to minimise disclosure risk.", +#> "hasPart": [ +#> { +#> "@id": "#env:disclosure_settings:7d746edc2fb36ee671241a333742b3a8" +#> }, +#> { +#> "@id": "#env:software_stack:239d65ed3c0c0c3932e23cebb34be7e1" +#> }, +#> { +#> "@id": "#control:output-checking" +#> }, +#> { +#> "@id": "#control:server-side-analysis" +#> }, +#> { +#> "@id": "#control:session-logging" +#> }, +#> { +#> "@id": "#control:secure-facility" +#> }, +#> { +#> "@id": "#control:access-governance" +#> } +#> ] +#> }, +#> { +#> "@id": "#link:b16fbdedcc33e826878020dcd5fad3d3", +#> "@type": "CreativeWork", +#> "name": "Safe Settings x Safe Project Link", +#> "about": { +#> "@id": "#safesetting:8489860e7540c5dfb95b5d8ddab232c5" +#> }, +#> "isPartOf": { +#> "@id": "#project:7ba189863f9f641196596cb28e04aa14" +#> } +#> }, +#> { +#> "@id": "20260327T120017-dslogs-dsuser.log", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:44", -#> "name": "20260227T152444-dslogs-dsuser.log", +#> "dateModified": "2026-03-27 12:00:17", +#> "name": "20260327T120017-dslogs-dsuser.log", #> "description": "This file contains the raw logs for the user: `dsuser` , between: ALL and ALL", #> "encodingFormat": "text/plain", #> "content": [ -#> ["[INFO][2026-02-27T08:56:24][OPEN] created a datashield session 622f2c74-9242-48e2-82d9-bc3250f8aa4b", "[INFO][2026-02-27T08:56:26][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T08:56:26][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T08:56:27][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:00:37][OPEN] created a datashield session 7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", "[INFO][2026-02-27T09:00:37][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T09:00:38][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:00:38][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:20:47][OPEN] created a datashield session 08413766-4fa8-4eec-9392-ec30581fb48c", "[INFO][2026-02-27T09:20:48][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T09:20:48][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T09:20:49][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:08:39][OPEN] created a datashield session 88a48432-61c8-4444-bb6f-1d0174d4f177", "[INFO][2026-02-27T14:08:39][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T14:08:39][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:08:40][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:18:40][OPEN] created a datashield session e45b3573-21cc-445d-8d22-b7fc289d279a", "[INFO][2026-02-27T14:18:40][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T14:18:40][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T14:18:41][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:04:13][OPEN] created a datashield session 026b4b18-c40c-4f08-8a19-75716fee1c75", "[INFO][2026-02-27T15:04:13][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:04:14][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:04:14][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:13:01][OPEN] created a datashield session a3a6f257-79ef-443c-a110-393b1ff196f0", "[INFO][2026-02-27T15:13:01][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:13:02][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:13:03][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:02][OPEN] created a datashield session fc258313-6846-4a8e-93d9-4809cd794fbe", "[INFO][2026-02-27T15:24:02][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-02-27T15:24:03][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:04][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-02-27T15:24:05][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] +#> ["[INFO][2026-03-27T11:59:57][OPEN] created a datashield session 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", "[INFO][2026-03-27T11:59:59][ASSIGN] created symbol 'dsROCrate_test' from: 'dsROCrate_test <- opal[CNSIM.CNSIM1]'", "[INFO][2026-03-27T12:00:00][PARSE] parsed 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::lsDS(search.filter = NULL, 1L)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'base::exists(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::classDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::isValidDS(dsROCrate_test)'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::dimDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][PARSE] parsed 'dsBase::colnamesDS(\"dsROCrate_test\")'", "[INFO][2026-03-27T12:00:01][AGGREGATE] evaluated 'dsBase::colnamesDS(\"dsROCrate_test\")'"] #> ] #> }, #> { -#> "@id": "20260227T152444-dslogs-dsuser_mappings.csv", +#> "@id": "20260327T120017-dslogs-dsuser_mappings.csv", #> "@type": "File", -#> "dateModified": "2026-02-27 15:24:44", -#> "name": "20260227T152444-dslogs-dsuser_mappings.csv", +#> "dateModified": "2026-03-27 12:00:17", +#> "name": "20260327T120017-dslogs-dsuser_mappings.csv", #> "description": "This file contains mappings and evaluated functions", #> "encodingFormat": "text/csv", #> "content": [ #> [ #> { -#> "timestamp": "2026-02-27T08:56:24", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "fx": "DSI::datashield.login", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T08:56:26", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T08:56:27", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "622f2c74-9242-48e2-82d9-bc3250f8aa4b", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:00:37", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "fx": "DSI::datashield.login", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:00:37", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:00:38", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "7925f5e8-f7b6-416e-b05b-5ac2c19f00c1", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:47", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 08413766-4fa8-4eec-9392-ec30581fb48c", -#> "fx": "DSI::datashield.login", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:48", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T09:20:49", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "08413766-4fa8-4eec-9392-ec30581fb48c", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:39", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "fx": "DSI::datashield.login", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:39", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:08:40", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "88a48432-61c8-4444-bb6f-1d0174d4f177", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:40", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "fx": "DSI::datashield.login", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:40", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T14:18:41", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "e45b3573-21cc-445d-8d22-b7fc289d279a", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:13", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: 026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "fx": "DSI::datashield.login", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:13", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:04:14", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "026b4b18-c40c-4f08-8a19-75716fee1c75", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:01", -#> "action": "OPEN", -#> "user": "dsuser", -#> "r_cmd": "Open session: a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "fx": "DSI::datashield.login", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:01", -#> "action": "ASSIGN", -#> "user": "dsuser", -#> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", -#> "fx": "base::assign", -#> "table": "CNSIM.CNSIM1", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:13:03", -#> "action": "AGGREGATE", -#> "user": "dsuser", -#> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", -#> "fx": "dsBase::lsDS", -#> "symbol": "search.filter = NULL, 1L", -#> "table": "CNSIM.CNSIM1", -#> "session": "a3a6f257-79ef-443c-a110-393b1ff196f0", -#> "backend": "OBiBa's Opal" -#> }, -#> { -#> "timestamp": "2026-02-27T15:24:02", +#> "timestamp": "2026-03-27T11:59:57", #> "action": "OPEN", #> "user": "dsuser", -#> "r_cmd": "Open session: fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "r_cmd": "Open session: 84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "fx": "DSI::datashield.login", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:02", +#> "timestamp": "2026-03-27T11:59:59", #> "action": "ASSIGN", #> "user": "dsuser", #> "r_cmd": "dsROCrate_test <- opal[CNSIM.CNSIM1]", #> "fx": "base::assign", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::lsDS(search.filter = NULL, 1L)", #> "fx": "dsBase::lsDS", #> "symbol": "search.filter = NULL, 1L", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "base::exists(\"dsROCrate_test\")", #> "fx": "base::exists", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::classDS(\"dsROCrate_test\")", #> "fx": "dsBase::classDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::isValidDS(dsROCrate_test)", #> "fx": "dsBase::isValidDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:04", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::dimDS(\"dsROCrate_test\")", #> "fx": "dsBase::dimDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> }, #> { -#> "timestamp": "2026-02-27T15:24:05", +#> "timestamp": "2026-03-27T12:00:01", #> "action": "AGGREGATE", #> "user": "dsuser", #> "r_cmd": "dsBase::colnamesDS(\"dsROCrate_test\")", #> "fx": "dsBase::colnamesDS", #> "symbol": "dsROCrate_test", #> "table": "CNSIM.CNSIM1", -#> "session": "fc258313-6846-4a8e-93d9-4809cd794fbe", +#> "session": "84b50a64-e51e-4d54-a155-bd3ebbdbcdf8", #> "backend": "OBiBa's Opal" #> } #> ] @@ -2718,17 +2931,12 @@ print(study_crate_v1) #> } #> ] #> } -#> -#> attr(,"audit_type") -#> [1] "Study" -#> attr(,"project") -#> [1] "CNSIM" ``` ###### Markdown report A markdown report can be created with an overview and details for an -RO-Crate, using the `dsROCrate::rocrate_report`: +RO-Crate, using the `dsROCrate::report`: **Only generate .Rmd file** @@ -2736,20 +2944,15 @@ RO-Crate, using the `dsROCrate::rocrate_report`: study_crate_v1_rmd <- tempfile(fileext = ".Rmd") # temporary file safe_project_crate_contents <- study_crate_v1 |> - dsROCrate::rocrate_report(filepath = study_crate_v1_rmd, render = FALSE) -#> 1 'Author' entity was found! -#> 3 'Dataset' entities were found! -#> Warning: No entities were found with @type = 'WriteAction'! -#> Warning: No entities were found with @type = 'ControlAction'! + dsROCrate::report(filepath = study_crate_v1_rmd, render = FALSE) +#> 6 'Author' entities were found! +#> 3 asset entities were found! #> 1 'Project' entity was found! -#> 14 'PropertyValue' OR 'SoftwareApplication' entities were found! -#> Warning: No entities were found with @type = 'File'! -#> 1 'Author' entity was found! -#> 3 'Dataset' entities were found! -#> Warning: No entities were found with @type = 'WriteAction'! -#> Warning: No entities were found with @type = 'ControlAction'! +#> 22 'CreativeWork', 'PropertyValue' OR 'SoftwareApplication' entities were found! +#> 4 'Author' entities were found! +#> 3 asset entities were found! #> 1 'Project' entity was found! -#> 14 'PropertyValue' OR 'SoftwareApplication' entities were found! +#> 22 'CreativeWork', 'PropertyValue' OR 'SoftwareApplication' entities were found! #> 2 'File' entities were found! # display Overview diagram @@ -2767,36 +2970,25 @@ safe_project_crate_contents$overview_data |> | Server | Project | Data | Access Level | People | Function | Timestamp | |:---|:---|:---|:---|:---|:---|:---| -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T08:56:26 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T08:56:27 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:00:37 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:00:38 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T09:20:48 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T09:20:49 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:08:39 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:08:40 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T14:18:40 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T14:18:41 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:04:13 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:04:14 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:13:01 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:13:03 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-02-27T15:24:02 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-02-27T15:24:04 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::exists | 2026-02-27T15:24:04 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::classDS | 2026-02-27T15:24:04 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::isValidDS | 2026-02-27T15:24:04 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::dimDS | 2026-02-27T15:24:04 | -| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::colnamesDS | 2026-02-27T15:24:05 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::assign | 2026-03-27T11:59:59 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::lsDS | 2026-03-27T12:00:01 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser | base::exists | 2026-03-27T12:00:01 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::classDS | 2026-03-27T12:00:01 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::isValidDS | 2026-03-27T12:00:01 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::dimDS | 2026-03-27T12:00:01 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser | dsBase::colnamesDS | 2026-03-27T12:00:01 | +| opal_demo | CNSIM | CNSIM1 | read | dsuser1 | | | | opal_demo | CNSIM | CNSIM2 | read | dsuser | | | +| opal_demo | CNSIM | CNSIM2 | read | dsuser2 | | | | opal_demo | CNSIM | CNSIM3 | read | dsuser | | | +| opal_demo | CNSIM | CNSIM3 | read | dsuser3 | | | | opal_test | CNSIM | CNSIM1 | read | dsuser | | | **Render and display report (HTML)** ``` r study_crate_v1 |> - dsROCrate::rocrate_report(filepath = study_crate_v1_rmd, + dsROCrate::report(filepath = study_crate_v1_rmd, title = "DataSHIELD Study audit", render = TRUE, overwrite = TRUE) From dc4a33197052eb5b109af8ee81a7ff0628af44d2 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 27 Mar 2026 12:06:36 +0000 Subject: [PATCH 46/51] Update title --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 88bbe96..5eaa829 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: dsROCrate -Title: 'DataSHIELD' RO-Crate Wrapper Functions +Title: 'DataSHIELD' RO-Crate Governance Functions Version: 0.0.1 Authors@R: c( person(given = "Roberto", From 148567754a0724c0393024f7a06255f56489fc20 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Fri, 27 Mar 2026 12:06:49 +0000 Subject: [PATCH 47/51] New build --- man/dsROCrate-package.Rd | 2 +- .../README-safe_project_crate_audit_v1-1.png | Bin 165048 -> 180728 bytes man/figures/README-study_crate_audit_v1-1.png | Bin 186613 -> 200225 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/man/dsROCrate-package.Rd b/man/dsROCrate-package.Rd index f504919..6aa5977 100644 --- a/man/dsROCrate-package.Rd +++ b/man/dsROCrate-package.Rd @@ -4,7 +4,7 @@ \name{dsROCrate-package} \alias{dsROCrate} \alias{dsROCrate-package} -\title{dsROCrate: 'DataSHIELD' RO-Crate Wrapper Functions} +\title{dsROCrate: 'DataSHIELD' RO-Crate Governance Functions} \description{ \if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}} diff --git a/man/figures/README-safe_project_crate_audit_v1-1.png b/man/figures/README-safe_project_crate_audit_v1-1.png index 758c4246cdfd62e47d7ba533e2fc501a4051188c..27440e413261e3f31ed2373c17f51a9c3f666579 100644 GIT binary patch literal 180728 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
oPZ$b7Osk1j5PLe!0BzbTM*`2;frqz7y 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 Yfl@V*w4hb-za%OlD*Lub_|v!l2m7Dd4*&oF diff --git a/man/figures/README-study_crate_audit_v1-1.png b/man/figures/README-study_crate_audit_v1-1.png index 4c6a33b3ef89a0ea598ef4e006b708ca1c470369..b39bbb4f1e0678177b54a6d5b88870b8f10137a6 100644 GIT binary patch literal 200225 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

@pSZo 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 z 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 From 40ae48cef67412be0426efad2c3255c679802929 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Tue, 31 Mar 2026 11:37:27 +0100 Subject: [PATCH 48/51] Move DSMolgenisArmadillo from Suggests to Imports --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 5eaa829..bb0d5e9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -26,7 +26,6 @@ License: MIT + file LICENSE Suggests: dsBaseClient, DSI, - DSMolgenisArmadillo, DSOpal, knitr, MolgenisArmadillo, @@ -41,6 +40,7 @@ RoxygenNote: 7.3.3 Imports: digest, dplyr, + DSMolgenisArmadillo, jsonlite, methods, purrr, From 703a5ab00fd1474ac09749e8eade11f108b21a29 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Tue, 31 Mar 2026 11:38:03 +0100 Subject: [PATCH 49/51] Update tests to suppress warning messages generate when no logs are found --- tests/testthat/test-report.R | 13 ++++++++----- tests/testthat/test-safe_output.R | 19 +++++++++++-------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/tests/testthat/test-report.R b/tests/testthat/test-report.R index 4163d67..551277f 100644 --- a/tests/testthat/test-report.R +++ b/tests/testthat/test-report.R @@ -59,7 +59,7 @@ test_that("report.character dispatches to rocrate method", { ) testthat::with_mocked_bindings( load_content = function(x, ...) x, - report.rocrate = function(x, ...) "OK", + report.character = function(x, ...) "OK", code = { result <- report(tmp_dir, render = FALSE) expect_equal(result, "OK") @@ -367,10 +367,13 @@ test_that("report.list aggregates outputs from a study audit", { opal_con <- opal_demo_con() # generate audit RO-Crate for a study - roc <- audit( - list(demo = opal_con), - project = "CNSIM", - path = tmp_dir + ## ignore warnings about missing logs + suppressWarnings( + roc <- audit( + list(demo = opal_con), + project = "CNSIM", + path = tmp_dir + ) ) out_file <- file.path(tmp_dir, "report.md") diff --git a/tests/testthat/test-safe_output.R b/tests/testthat/test-safe_output.R index 3fa72b4..8d6f04d 100644 --- a/tests/testthat/test-safe_output.R +++ b/tests/testthat/test-safe_output.R @@ -183,14 +183,17 @@ test_that("safe_output works", { tempdir_name <- tempdir() on.exit(unlink(tempdir_name, force = TRUE, recursive = TRUE)) expect_true(dir.exists(tempdir_name)) - basic_rocrate_8 <- basic_rocrate_3 |> - dsROCrate::safe_output( - connection = opal_con, - logs_from = Sys.time() - 60, # capture the last min - logs_to = Sys.time(), - user = "dsuser", - path = tempdir_name - ) + ## ignore warnings about missing logs + suppressWarnings( + basic_rocrate_8 <- basic_rocrate_3 |> + dsROCrate::safe_output( + connection = opal_con, + logs_from = Sys.time() - 60, # capture the last min + logs_to = Sys.time(), + user = "dsuser", + path = tempdir_name + ) + ) unlink(tempdir_name, force = TRUE, recursive = TRUE) expect_false(dir.exists(tempdir_name)) From 1c8a5ff2c1492024dff3a98632abf29d3ad44de5 Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Tue, 31 Mar 2026 11:56:00 +0100 Subject: [PATCH 50/51] Update minimum version of rocrateR to 0.0.2 and temporarily include Remotes for dev version of rocrateR --- DESCRIPTION | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index bb0d5e9..627dc0c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -46,13 +46,15 @@ Imports: purrr, RcppTOML, rmarkdown, - rocrateR (>= 0.0.1), + rocrateR (>= 0.0.2), tibble, vtree, xptr, yaml Depends: R (>= 4.1.0) +Remotes: + ResearchObject/ro-crate-r VignetteBuilder: knitr Collate: 'ArmadilloCredentials-class.R' From dfc167bbb2c3f1a8a96531b96b73eaf607027f5a Mon Sep 17 00:00:00 2001 From: Roberto Villegas-Diaz Date: Wed, 1 Apr 2026 08:47:52 +0100 Subject: [PATCH 51/51] Downgrade dependency with rocrateR --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 627dc0c..dd50fa5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -46,7 +46,7 @@ Imports: purrr, RcppTOML, rmarkdown, - rocrateR (>= 0.0.2), + rocrateR (>= 0.0.1), tibble, vtree, xptr,