diff --git a/R/copy_wikidata_item.R b/R/copy_wikidata_item.R index 0a3a370..bf3d67b 100644 --- a/R/copy_wikidata_item.R +++ b/R/copy_wikidata_item.R @@ -60,7 +60,9 @@ copy_wikidata_item <- function( wikibase_api_url = "https://reprexbase.eu/jekyll/api.php", data_curator = NULL, log_path = tempdir(), - csrf) { + csrf, + wikibase_session = NULL) { + if (!is.null(wikibase_session)) { # For repeated queries you can add your variables directly or in a list @@ -336,7 +338,7 @@ copy_wikidata_item <- function( label = created_item_label[[1]]$value, description = created_item_description[[1]]$value, language = created_item_label[[1]]$language, - datatype = "item", + datatype = "wikibase-item", wikibase_api_url = wikibase_api_url, equivalence_property = qid_equivalence_property, equivalence_id = qid_on_wikidata, @@ -406,7 +408,7 @@ copy_wikidata_item <- function( label = existing_label, description = existing_description, language = language, - datatype = "", + datatype = "wikibase-item", wikibase_api_url = wikibase_api_url, equivalence_property = qid_equivalence_property, equivalence_id = qid_on_wikidata, @@ -426,12 +428,12 @@ copy_wikidata_item <- function( # Return an emptier data.frame if there was some error # Print out the error message verbatim to terminal - message(created_property_response$error) + message(created_item_response$error) # Wrap the main error types into the logfile and return data error_comments <- paste( unlist( - lapply(created_property_response$error$messages, function(x) x$name) + lapply(created_item_response$error$messages, function(x) x$name) ), collapse = "|" ) @@ -442,7 +444,7 @@ copy_wikidata_item <- function( label = "", description = "", language = "", - datatype = "", + datatype = "wikibase-item", wikibase_api_url = wikibase_api_url, equivalence_property = qid_equivalence_property, equivalence_id = qid_on_wikidata, @@ -472,7 +474,7 @@ copy_wikidata_item <- function( action = return_dataframe$action, id_on_target = defined( return_dataframe$id_on_target, - label = paste0("QID on ", wikibase_api_url), + label = paste0("ID on ", wikibase_api_url), namespace = wikibase_api_url ), label = defined( @@ -481,7 +483,7 @@ copy_wikidata_item <- function( ), description = defined( return_dataframe$description, - label = "Description of item" + label = "Description of entity" ), language = defined( return_dataframe$language, @@ -496,7 +498,7 @@ copy_wikidata_item <- function( ), equivalence_id = defined( return_dataframe$equivalence_id, - label = "Equivalent QID on Wikidata", + label = "Equivalent entity on Wikidata", namespace = "https://www.wikidata.org/wiki/" ), success = return_dataframe$success, @@ -508,7 +510,6 @@ copy_wikidata_item <- function( "Wikibase Copy Item Log (", strftime(action_time, "%Y-%m-%d %H:%M:%OS0"), ")" ), - description = description_text, creator = data_curator, dataset_date = Sys.Date() ) diff --git a/R/copy_wikidata_property.R b/R/copy_wikidata_property.R index cce5790..e584480 100644 --- a/R/copy_wikidata_property.R +++ b/R/copy_wikidata_property.R @@ -64,6 +64,7 @@ copy_wikidata_property <- function( log_path = tempdir(), csrf, wikibase_session = NULL) { + if (!is.null(wikibase_session)) { # For repeated queries you can add your variables directly or in a list @@ -103,6 +104,7 @@ copy_wikidata_property <- function( msg = 'copy_wikidata_item(..., data_curator): data_curator must be a person, like person("Jane, "Doe").' ) + property_wikibase_datatype <- "" # set default value if (length(pid_on_wikidata) > 1) { # Run this function in a loop if there are several PIDs to copy @@ -270,6 +272,7 @@ copy_wikidata_property <- function( datatype = response$entities[[1]]$datatype ) + property_wikibase_datatype <- response$entities[[1]]$datatype datastring ## Getting the user's CSRF token for writing. @@ -401,7 +404,7 @@ copy_wikidata_property <- function( label = existing_label, description = existing_description, language = language, - datatype = "", + datatype = property_wikibase_datatype, wikibase_api_url = wikibase_api_url, equivalence_property = pid_equivalence_property, equivalence_id = pid_on_wikidata, @@ -438,7 +441,7 @@ copy_wikidata_property <- function( label = "", description = "", language = "", - datatype = "", + datatype = property_wikibase_datatype, wikibase_api_url = wikibase_api_url, equivalence_property = pid_equivalence_property, equivalence_id = pid_on_wikidata, @@ -468,7 +471,7 @@ copy_wikidata_property <- function( action = return_dataframe$action, id_on_target = defined( return_dataframe$id_on_target, - label = paste0("PID on ", wikibase_api_url), + label = paste0("ID on ", wikibase_api_url), namespace = wikibase_api_url ), label = defined( @@ -504,7 +507,7 @@ copy_wikidata_property <- function( "Wikibase Copy Property Log (", strftime(action_time, "%Y-%m-%d %H:%M:%OS0"), ")" ), - description = description_text, + description_text, creator = data_curator, dataset_date = Sys.Date() ), diff --git a/R/create_item.R b/R/create_item.R index 0845442..05928a6 100644 --- a/R/create_item.R +++ b/R/create_item.R @@ -196,7 +196,7 @@ create_item <- function(label, label = label, description = created_item_response$entity$descriptions[[1]]$value, language = created_item_response$entity$descriptions[[1]]$language, - datatype = "item", + datatype = "wikibase-item", wikibase_api_url = wikibase_api_url, equivalence_property = equivalence_property, equivalence_id = equivalence_id, @@ -237,7 +237,7 @@ create_item <- function(label, label = label, description = "", language = language, - datatype = "item", + datatype = "wikibase-item", wikibase_api_url = wikibase_api_url, equivalence_property = equivalence_property, equivalence_id = equivalence_id, @@ -267,7 +267,7 @@ create_item <- function(label, label = label, description = description, language = language, - datatype = "item", + datatype = "wikibase-item", wikibase_api_url = wikibase_api_url, equivalence_property = equivalence_property, equivalence_id = equivalence_id, @@ -284,5 +284,61 @@ create_item <- function(label, fileEncoding = "UTF-8") } - return_dataframe + description_text <- paste0( + "Attempted and successful item creation on Wikibase to ", + wikibase_api_url, " with wbdataset:create_item() at ", + substr(as.character(action_time), 1, 19) + ) + + return_ds <- dataset_df( + action = return_dataframe$action, + id_on_target = defined( + return_dataframe$id_on_target, + label = paste0("ID on ", wikibase_api_url), + namespace = wikibase_api_url + ), + label = defined( + return_dataframe$label, + label = "Label of entity" + ), + description = defined( + return_dataframe$description, + label = "Description of entity" + ), + language = defined( + return_dataframe$language, + label = "Language of label and description" + ), + datatype = return_dataframe$datatype, + wikibase_api_url = wikibase_api_url, + equivalence_property = defined( + return_dataframe$equivalence_property, + label = paste0("Equivalence property on ", wikibase_api_url), + namespace = wikibase_api_url + ), + equivalence_id = defined( + return_dataframe$equivalence_id, + label = "Equivalent entity on Wikidata", + namespace = "https://www.wikidata.org/wiki/" + ), + success = return_dataframe$success, + comment = return_dataframe$comment, + time = return_dataframe$time, + logfile = return_dataframe$logfile, + dataset_bibentry = dublincore( + title = paste0( + "Wikibase Create Property Log (", + strftime(action_time, "%Y-%m-%d %H:%M:%OS0"), ")" + ), + description_text, + creator = data_curator, + dataset_date = Sys.Date() + ) + ) + + return_ds$rowid <- defined(paste0("wbi:", as.character(return_ds$id_on_target)), + namespace = wikibase_api_url + ) + + return_ds } diff --git a/R/create_property.R b/R/create_property.R index 9f07284..b2543f4 100644 --- a/R/create_property.R +++ b/R/create_property.R @@ -115,6 +115,7 @@ create_property <- function(label, # Save the time of running the code + action_time <- Sys.time() action_timestamp <- action_timestamp_create() log_file_name <- paste0("wbdataset_create_property_", action_timestamp, ".csv") @@ -222,7 +223,7 @@ create_property <- function(label, # wikibase-validator-label-conflict: the property already exists, and this # information should be returned to the user. message_strings <- unlist(created_property_response$error$messages) - message(message_strings) + message_strings <- message_strings[which(grepl("Property:", message_strings))] pattern <- "\\[\\[Property:*(.*?)\\|" result <- regmatches(message_strings, regexec(pattern, message_strings)) @@ -284,5 +285,60 @@ create_property <- function(label, fileEncoding = "UTF-8") } - return_dataframe + description_text <- paste0( + "Attempted and successful property creation on Wikibase to ", + wikibase_api_url, " with wbdataset:create_property() at ", + substr(as.character(action_time), 1, 19) + ) + + return_ds <- dataset_df( + action = return_dataframe$action, + id_on_target = defined( + return_dataframe$id_on_target, + label = paste0("ID on ", wikibase_api_url), + namespace = wikibase_api_url + ), + label = defined( + return_dataframe$label, + label = "Label of entity" + ), + description = defined( + return_dataframe$description, + label = "Description of entity" + ), + language = defined( + return_dataframe$language, + label = "Language of label and description" + ), + datatype = return_dataframe$datatype, + wikibase_api_url = wikibase_api_url, + equivalence_property = defined( + return_dataframe$equivalence_property, + label = paste0("Equivalence property on ", wikibase_api_url), + namespace = wikibase_api_url + ), + equivalence_id = defined( + return_dataframe$equivalence_id, + label = "Equivalent entity on Wikidata", + namespace = "https://www.wikidata.org/wiki/" + ), + success = return_dataframe$success, + comment = return_dataframe$comment, + time = return_dataframe$time, + logfile = return_dataframe$logfile, + dataset_bibentry = dublincore( + title = paste0( + "Wikibase Create Property Log (", + strftime(action_time, "%Y-%m-%d %H:%M:%OS0"), ")" + ), + creator = data_curator, + dataset_date = Sys.Date() + ) + ) + + return_ds$rowid <- defined(paste0("wbi:", as.character(return_ds$id_on_target)), + namespace = wikibase_api_url + ) + + return_ds } diff --git a/man/copy_wikidata_item.Rd b/man/copy_wikidata_item.Rd index 102eccc..e183c60 100644 --- a/man/copy_wikidata_item.Rd +++ b/man/copy_wikidata_item.Rd @@ -14,7 +14,8 @@ copy_wikidata_item( wikibase_api_url = "https://reprexbase.eu/jekyll/api.php", data_curator = NULL, log_path = tempdir(), - csrf + csrf, + wikibase_session = NULL ) copy_wikidata_items(