Get Wikidata property of an item as a vector or list of the same length as input
Source:R/tw_get_property.R
tw_get_property_same_length.RdGet Wikidata property of an item as a vector or list of the same length as input
Usage
tw_get_property_same_length(
id,
p,
only_first = FALSE,
preferred = FALSE,
latest_start_time = FALSE,
language = tidywikidatar::tw_get_language(),
id_df = NULL,
cache = NULL,
overwrite_cache = FALSE,
cache_connection = NULL,
disconnect_db = TRUE,
wait = 0
)
tw_get_p(
id,
p,
only_first = FALSE,
preferred = FALSE,
latest_start_time = FALSE,
language = tidywikidatar::tw_get_language(),
id_df = NULL,
cache = NULL,
overwrite_cache = FALSE,
cache_connection = NULL,
disconnect_db = TRUE,
wait = 0
)Arguments
- id
A character vector, must start with Q, e.g. "Q180099" for the anthropologist Margaret Mead. Can also be a data frame of one row, typically generated with
tw_search()or a combination oftw_search()andtw_filter_first().- p
A character vector, a property. Must always start with the capital letter "P", e.g. "P31" for "instance of".
- only_first
Logical, defaults to
FALSE. IfTRUE, it just keeps the first relevant property value for each id (orNAif none is available), and returns a character vector. Warning: this likely discards valid values, so make sure this is really what you want. IfFALSE, returns a list of the same length as input, with all values for each id stored in a list if more than one is found.- preferred
Logical, defaults to
FALSE. IfTRUE, returns properties that have rank "preferred" if available; if no "preferred" property is found, then it is ignored.- latest_start_time
Logical, defaults to
FALSE. IfTRUE, returns the property that has the most recent start time ("P580") as qualifier ifonly_firstis set toTRUE, or returns a list ordered by start time ifonly_firstis set toFALSE. If no such qualifier is found, then it is ignored.- language
Defaults to language set with
tw_set_language(); if not set, "en". Use "all_available" to keep all languages. For available language values, see the dedicated Wikimedia page.- id_df
Default to
NULL. If given, it should be a dataframe typically generated withtw_get(), and is used instead of calling Wikidata or using SQLite cache. Ignored whenidis of length more than one.- cache
Defaults to
NULL. If given, it should be given eitherTRUEorFALSE. Typically set withtw_enable_cache()ortw_disable_cache().- overwrite_cache
Logical, defaults to
FALSE. IfTRUE, it overwrites the table in the local sqlite database. Useful if the original Wikidata object has been updated.- cache_connection
Defaults to
NULL. IfNULL, and caching is enabled,tidywikidatarwill use a local sqlite database. A custom connection to other databases can be given (see vignettecachingfor details).- disconnect_db
Defaults to
TRUE. IfFALSE, leaves the connection to cache open.- wait
In seconds, defaults to 0. Time to wait between queries to Wikidata. If data are cached locally, wait time is not applied. If you are running many queries systematically you may want to add some waiting time between queries.
Examples
# By default, it returns a list of the same length as input,
# no matter how many values for each id/property
if (interactive()) {
tw_get_property_same_length(
id = c(
"Q180099",
"Q228822",
"Q76857"
),
p = "P26"
)
# Notice that if no relevant match is found, it returns a NA
# This is useful for piped operations
tibble::tibble(id = c(
"Q180099",
"Q228822",
"Q76857"
)) %>%
dplyr::mutate(spouse = tw_get_property_same_length(id, "P26"))
# Consider unnesting for further analysis
tibble::tibble(id = c(
"Q180099",
"Q228822",
"Q76857"
)) %>%
dplyr::mutate(spouse = tw_get_property_same_length(id, "P26")) %>%
tidyr::unnest(cols = spouse)
# If you are sure that you are interested only in the first return value,
# consider setting only_first=TRUE to get a character vector rather than a list
# Be mindful: you may well be discarding valid values.
tibble::tibble(id = c(
"Q180099",
"Q228822",
"Q76857"
)) %>%
dplyr::mutate(spouse = tw_get_property_same_length(id, "P26",
only_first = TRUE
))
}
tw_get_p(id = "Q180099", "P26")
#> [[1]]
#> [1] "Q594736" "Q2144944" "Q314252"
#>