Plants of the World Online (POWO) is a database of information on the world’s flora. It curates information from published floras and other sources of floristic information. POWO covers much of the same grounds as WCVP - you can get taxonomic information for names from it. But it also has more general information about taxa, like descriptions, lifeforms, images, and distributions.
library(kewr)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(tidyr)
Searching POWO works by exact matching, so any mispellings or unrecognised orthographic variants will not be matched.
For example, searching Ulex europeaus
will not return any results:
results <- search_powo("Ulex europeaus")
results
#> <POWO search: 'Ulex europeaus' filters: 'none'>
#> total results: 0
#> returned results: 0
#> total pages: 0
#> First result:
But searching Ulex europaeus
will:
results <- search_powo("Ulex europaeus")
results
#> <POWO search: 'Ulex europaeus' filters: 'none'>
#> total results: 4
#> returned results: 4
#> total pages: 1
#> First result:
#> List of 1
#> $ :List of 9
#> ..$ accepted: logi TRUE
#> ..$ author : chr "L."
#> ..$ kingdom : chr "Plantae"
#> ..$ family : chr "Fabaceae"
#> ..$ name : chr "Ulex europaeus"
#> ..$ rank : chr "Species"
#> ..$ url : chr "/taxon/urn:lsid:ipni.org:names:524298-1"
#> ..$ fqId : chr "urn:lsid:ipni.org:names:524298-1"
#> ..$ images :List of 3
By default, search_powo
limits the number of results returned to 50. If you are expecting more results, you can increase this limit.
results <- search_powo("Ulex", limit=100)
results
#> <POWO search: 'Ulex' filters: 'none'>
#> total results: 119
#> returned results: 100
#> total pages: 2
#> First result:
#> List of 1
#> $ :List of 10
#> ..$ accepted: logi TRUE
#> ..$ author : chr "L."
#> ..$ kingdom : chr "Plantae"
#> ..$ family : chr "Fabaceae"
#> ..$ name : chr "Ulex"
#> ..$ rank : chr "Genus"
#> ..$ snippet : chr " <b>General</b>: , <em>Ulex</em> (Europe, mostly western, and Mediterranean region)<br/> <b>Use</b>: <em>Ulex</"| __truncated__
#> ..$ url : chr "/taxon/urn:lsid:ipni.org:names:23746-1"
#> ..$ fqId : chr "urn:lsid:ipni.org:names:23746-1"
#> ..$ images :List of 3
However, for searches with a large number of results, this may not be practical. In this case, or if you just don’t know how many results to expect, you can request the next page of results.
ulex_page1 <- search_powo("Ulex")
ulex_page2 <- request_next(ulex_page1)
bind_rows(
tidy(ulex_page1),
tidy(ulex_page2)
)
#> # A tibble: 100 × 11
#> accepted author kingdom family name rank snippet url fqId images
#> <lgl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <list>
#> 1 TRUE L. Plantae Fabace… Ulex Genus " <b>Gen… /taxo… urn:l… <tibb…
#> 2 TRUE Desf. Plantae Caryop… Arena… Spec… " <b>Spe… /taxo… urn:l… <NULL>
#> 3 FALSE Webb Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <NULL>
#> 4 FALSE Esp.San… Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <NULL>
#> 5 FALSE Link ex… Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <NULL>
#> 6 TRUE Welw. e… Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <tibb…
#> 7 FALSE Mabille Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <NULL>
#> 8 TRUE Clemente Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <NULL>
#> 9 FALSE Thore Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <NULL>
#> 10 FALSE Willk. … Plantae Fabace… Ulex … Spec… NA /taxo… urn:l… <NULL>
#> # … with 90 more rows, and 1 more variable: synonymOf <list>
You can perform more complicated searches using keywords and filters. For example, you can search for all accepted species in a particular family.
results <- search_powo(list(family="Ephedraceae"),
filters=c("accepted", "species"))
results
#> <POWO search: family='Ephedraceae' filters: 'accepted, species'>
#> total results: 73
#> returned results: 50
#> total pages: 2
#> First result:
#> List of 1
#> $ :List of 9
#> ..$ accepted: logi TRUE
#> ..$ author : chr "Decne."
#> ..$ kingdom : chr "Plantae"
#> ..$ family : chr "Ephedraceae"
#> ..$ name : chr "Ephedra alata"
#> ..$ rank : chr "Species"
#> ..$ url : chr "/taxon/urn:lsid:ipni.org:names:383343-1"
#> ..$ fqId : chr "urn:lsid:ipni.org:names:383343-1"
#> ..$ images :List of 3
As well as taxonomic keywords, it is possible to search by other characteristics.
For example, finding all accepted legumes with blue flowers.
blue_flowers <- search_powo(list(flower="blue", family="Fabaceae"),
filters=c("accepted"))
blue_flowers
#> <POWO search: flower='blue', family='Fabaceae' filters: 'accepted'>
#> total results: 152
#> returned results: 50
#> total pages: 4
#> First result:
#> List of 1
#> $ :List of 10
#> ..$ accepted: logi TRUE
#> ..$ author : chr "(Hutch.) Hepper"
#> ..$ kingdom : chr "Plantae"
#> ..$ family : chr "Fabaceae"
#> ..$ name : chr "Kotschya speciosa"
#> ..$ rank : chr "Species"
#> ..$ snippet : chr " <b>Flower</b>: Standard <em>blue</em> with yellow mark at the base, obovate, 1.4 cm"
#> ..$ url : chr "/taxon/urn:lsid:ipni.org:names:501291-1"
#> ..$ fqId : chr "urn:lsid:ipni.org:names:501291-1"
#> ..$ images :List of 1
Another use is to get a checklist of accepted species in a country.
checklist <- search_powo(list(distribution="Mexico"),
filters=c("accepted"))
checklist
#> <POWO search: distribution='Mexico' filters: 'accepted'>
#> total results: 31660
#> returned results: 50
#> total pages: 634
#> First result:
#> List of 1
#> $ :List of 9
#> ..$ accepted: logi TRUE
#> ..$ author : chr "T.F.Daniel"
#> ..$ kingdom : chr "Plantae"
#> ..$ family : chr "Acanthaceae"
#> ..$ name : chr "Justicia cymulifera"
#> ..$ rank : chr "Species"
#> ..$ snippet : chr " <b>Location</b>: <em>Mexico</em>"
#> ..$ url : chr "/taxon/urn:lsid:ipni.org:names:77089454-1"
#> ..$ fqId : chr "urn:lsid:ipni.org:names:77089454-1"
A full list of keywords and filters can be found in the help page for search_powo
.
As well as searching by keyword, it is possible to use the IPNI ID of a taxon to look up its record in POWO. To get the IPNI ID, you can search WCVP, POWO, or IPNI, or use KNMS to find matches for the name.
ipni_id <- "119003-2"
record <- lookup_powo(ipni_id)
record
#> <POWO taxon id: 119003-2>
#> Name: Helianthus annuus
#> Authors: L.
#> Status: Accepted
#> Rank: SPECIES
#> Accepted taxon ID: 119003-2
#> Synonyms: 52
#> Includes distribution: FALSE
Optionally, you can choose to request the distribution information for the taxon as well.
record <- lookup_powo(ipni_id, distribution=TRUE)
tidied <- tidy(record)
tidied %>%
select(fqId, distribution) %>%
unnest(cols=distribution) %>%
select(-introduced) %>%
unnest(cols=natives)
#> # A tibble: 8 × 6
#> fqId establishment featureId tdwgCode tdwgLevel name
#> <chr> <chr> <chr> <chr> <int> <chr>
#> 1 urn:lsid:ipni.org:name… Native 16 ARI 3 Arizona
#> 2 urn:lsid:ipni.org:name… Native 28 BAN 3 Bangladesh
#> 3 urn:lsid:ipni.org:name… Native 52 CAL 3 California
#> 4 urn:lsid:ipni.org:name… Native 206 MXC 3 Mexico Cen…
#> 5 urn:lsid:ipni.org:name… Native 207 MXE 3 Mexico Nor…
#> 6 urn:lsid:ipni.org:name… Native 210 MXN 3 Mexico Nor…
#> 7 urn:lsid:ipni.org:name… Native 211 MXS 3 Mexico Sou…
#> 8 urn:lsid:ipni.org:name… Native 224 NEV 3 Nevada