Integrate IUCN Red List API: Add IUCN API endpoints, schema updates, and documentation for fetching species conservation status.
Replit-Commit-Author: Agent Replit-Commit-Session-Id: e931b5ab-041b-42e7-baf1-50017869cef6 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/e19c6a51-7e4c-4bb8-a6a6-46dc00f0ec99/339e2da6-2d1a-4412-8be5-d5f8e250ffde.jpg
This commit is contained in:
@ -0,0 +1,165 @@
|
|||||||
|
To gather detailed information about species by connecting to multiple APIs, follow these steps:
|
||||||
|
|
||||||
|
## Step 1: Connect to GBIF API for Taxonomic and Occurrence Data
|
||||||
|
|
||||||
|
1. **Install pygbif**: Use Python to install the `pygbif` library, which simplifies interactions with the GBIF API.
|
||||||
|
```bash
|
||||||
|
pip install pygbif
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Fetch Species Data**: Use the `species.name_lookup()` function to retrieve taxonomic information.
|
||||||
|
```python
|
||||||
|
from pygbif import species
|
||||||
|
|
||||||
|
# Example: Fetch data for 'Helianthus annuus'
|
||||||
|
data = species.name_lookup(q='Helianthus annuus', rank="species")
|
||||||
|
print(data)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 2: Connect to Wikidata Query Service for Biological Attributes
|
||||||
|
|
||||||
|
1. **Access Wikidata Query Service**: Use the SPARQL endpoint at `https://query.wikidata.org/sparql`.
|
||||||
|
|
||||||
|
2. **Query for Biological Attributes**: Use SPARQL to fetch attributes like lifespan or population.
|
||||||
|
```sparql
|
||||||
|
# Example query to get lifespan of a species
|
||||||
|
PREFIX wdt:
|
||||||
|
PREFIX wd:
|
||||||
|
|
||||||
|
SELECT ?item ?itemLabel ?lifespan
|
||||||
|
WHERE {
|
||||||
|
?item wdt:P31 wd:Q15978631; # Species
|
||||||
|
wdt:P2114 ?lifespan. # Lifespan
|
||||||
|
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 3: Connect to IUCN Red List API for Conservation Status
|
||||||
|
|
||||||
|
1. **Obtain an API Key**: Register at the IUCN Red List to get an API token.
|
||||||
|
|
||||||
|
2. **Fetch Conservation Status**: Use the `iucnredlist` R package or the IUCN API directly.
|
||||||
|
```r
|
||||||
|
# R example using iucnredlist package
|
||||||
|
library(iucnredlist)
|
||||||
|
|
||||||
|
api <- init_api("your_api_key")
|
||||||
|
assessment_raw <- assessment_data(api, 266696959)
|
||||||
|
assessment <- parse_assessment_data(assessment_raw)
|
||||||
|
print(assessment)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 4: Connect to Swedish Biodiversity Data Infrastructure (SBDI) Bioatlas
|
||||||
|
|
||||||
|
1. **Access SBDI Bioatlas**: Use the SBDI guides to access regional biodiversity data.
|
||||||
|
|
||||||
|
2. **Fetch Regional Data**: Follow the step-by-step guides for using the Bioatlas APIs.
|
||||||
|
|
||||||
|
## Step 5: Combine Data
|
||||||
|
|
||||||
|
1. **Integrate Datasets**: Use programming languages like Python or R to merge data from different APIs based on species identifiers.
|
||||||
|
|
||||||
|
2. **Analyze and Visualize**: Use libraries like Pandas, NumPy, and Matplotlib (Python) or dplyr and ggplot2 (R) to analyze and visualize the combined data.
|
||||||
|
|
||||||
|
### Example Integration in Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
import pandas as pd
|
||||||
|
from pygbif import species
|
||||||
|
|
||||||
|
# Fetch GBIF data
|
||||||
|
gbif_data = species.name_lookup(q='Helianthus annuus', rank="species")
|
||||||
|
|
||||||
|
# Fetch Wikidata data using SPARQL (example query above)
|
||||||
|
# For simplicity, assume you have a function to execute SPARQL queries
|
||||||
|
wikidata_data = execute_sparql_query(query)
|
||||||
|
|
||||||
|
# Fetch IUCN data (example using a hypothetical IUCN API function)
|
||||||
|
iucn_data = fetch_iucn_data(species_id)
|
||||||
|
|
||||||
|
# Combine data into a single DataFrame
|
||||||
|
combined_data = pd.DataFrame({
|
||||||
|
'GBIF': gbif_data,
|
||||||
|
'Wikidata': wikidata_data,
|
||||||
|
'IUCN': iucn_data
|
||||||
|
})
|
||||||
|
|
||||||
|
# Print combined data
|
||||||
|
print(combined_data)
|
||||||
|
```
|
||||||
|
|
||||||
|
This approach allows you to gather comprehensive information about species by leveraging multiple APIs.
|
||||||
|
|
||||||
|
Citations:
|
||||||
|
[1] https://pygbif.readthedocs.io/en/latest/modules/species.html
|
||||||
|
[2] https://techdocs.gbif.org/en/openapi/v1/species
|
||||||
|
[3] https://en.wikibooks.org/wiki/SPARQL/Wikidata_Query_Service
|
||||||
|
[4] https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/A_gentle_introduction_to_the_Wikidata_Query_Service
|
||||||
|
[5] https://iucn-uk.github.io/iucnredlist/
|
||||||
|
[6] https://publicapi.dev/iucn-api
|
||||||
|
[7] https://docs.biodiversitydata.se/tutorials/step-by-step-help-guides/
|
||||||
|
[8] https://biodiversitydata.se/explore-analyze/use-your-own-tools/our-apis/
|
||||||
|
[9] https://data-blog.gbif.org/post/gbif-api-beginners-guide/
|
||||||
|
[10] https://rdrr.io/github/bioatlas/SBDI4R/src/R/search_guids.R
|
||||||
|
[11] https://github.com/ManonGros/Small-scripts-using-GBIF-API
|
||||||
|
[12] https://www.youtube.com/watch?v=2h9LNS8C764
|
||||||
|
[13] https://www.nies.go.jp/biowm/en/GBIFSpecies/
|
||||||
|
[14] https://gbif.github.io/dwc-api/apidocs/org/gbif/dwc/terms/GbifTerm.html
|
||||||
|
[15] https://phylonext.github.io/inputdata/
|
||||||
|
[16] https://github.com/gbif/gbif-api/issues/82
|
||||||
|
[17] https://peerj.com/preprints/3304v1.pdf
|
||||||
|
[18] https://www.youtube.com/watch?v=netnQb-6F0M
|
||||||
|
[19] https://github.com/NaturalHistoryMuseum/gbif-name-resolution
|
||||||
|
[20] https://fairsharing.org/FAIRsharing.zv11j3
|
||||||
|
[21] https://www.youtube.com/watch?v=TXdjxnjCvng
|
||||||
|
[22] https://stackoverflow.com/questions/39773812/how-to-query-for-people-using-wikidata-and-sparql
|
||||||
|
[23] https://query.wikidata.org
|
||||||
|
[24] https://www.youtube.com/watch?v=B59vEET-nEk
|
||||||
|
[25] https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/Wikidata_Query_Help
|
||||||
|
[26] https://librarycarpentry.github.io/lc-wikidata/05-intro_to_querying.html
|
||||||
|
[27] https://stackoverflow.com/questions/45316749/how-to-create-a-local-wikidata-query-service
|
||||||
|
[28] https://wikidataworkshop.github.io/2022/papers/Wikidata_Workshop_2022_paper_2349.pdf
|
||||||
|
[29] https://addshore.com/2019/10/your-own-wikidata-query-service-with-no-limits/
|
||||||
|
[30] https://apiv3.iucnredlist.org
|
||||||
|
[31] https://api.iucnredlist.org/api-docs/index.html
|
||||||
|
[32] https://github.com/ropensci/rredlist
|
||||||
|
[33] https://cran.r-project.org/web/packages/rredlist/vignettes/rredlist.html
|
||||||
|
[34] https://pypi.org/project/IUCN-API/
|
||||||
|
[35] https://apiv3.iucnredlist.org/api/v3/docs
|
||||||
|
[36] https://api.iucnredlist.org
|
||||||
|
[37] https://github.com/ropensci/rredlist/issues/52
|
||||||
|
[38] https://github.com/biodiversitydata-se/repo-overview
|
||||||
|
[39] https://www.biodiversa.eu/wp-content/uploads/2024/01/Biodiversa-Governance-Sub-pilot-Sweden.pdf
|
||||||
|
[40] https://community.atlassian.com/t5/Atlassian-Home-questions/Can-we-interact-with-Atlas-API/qaq-p/2427472
|
||||||
|
[41] https://biodiversitydata-se.github.io/r-tools-tutorial/
|
||||||
|
[42] https://github.com/biodiversitydata-se/documentation-overview
|
||||||
|
[43] https://docs.beyondtrust.com/entitle/docs/configuring-mongodb-atlas-api-key
|
||||||
|
[44] https://docs.biodiversitydata.se/analyse-data/
|
||||||
|
[45] https://www.frontiersin.org/journals/molecular-biosciences/articles/10.3389/fmolb.2022.926623/full
|
||||||
|
[46] https://github.com/bioatlas/r-functionality/
|
||||||
|
[47] https://chemrxiv.org/engage/api-gateway/chemrxiv/assets/orp/resource/item/6540eb2548dad23120c52242/original/the-hitchhiker-s-guide-to-statistical-analysis-of-feature-based-molecular-networks-from-non-targeted-metabolomics-data.pdf
|
||||||
|
[48] https://rdrr.io/github/bioatlas/SBDI4R/man/sbdi_lists.html
|
||||||
|
[49] https://royalsocietypublishing.org/doi/10.1098/rspb.2002.2218
|
||||||
|
[50] https://docs.ropensci.org/rgbif/articles/gbif_sql_downloads.html
|
||||||
|
[51] https://github.com/ManonGros/Small-scripts-using-GBIF-API/blob/master/query_species_list/functions_query_from_species_list.py
|
||||||
|
[52] https://techdocs.gbif.org/en/openapi/
|
||||||
|
[53] https://aubreymoore.github.io/blog/posts/using-the-species-api-to-mine-the-gbif-backbone-taxonomy/
|
||||||
|
[54] https://tutorials.inbo.be/tutorials/r_gbif_checklist/
|
||||||
|
[55] https://metacpan.org/dist/App-wdq/view/script/wdq
|
||||||
|
[56] https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/ru
|
||||||
|
[57] https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual
|
||||||
|
[58] https://wikitech.wikimedia.org/wiki/Wikidata_Query_Service
|
||||||
|
[59] https://flograttarola.com/post/rbiodiversidata/
|
||||||
|
[60] https://publicapis.io/iucn-species-database-api
|
||||||
|
[61] https://cran.r-project.org/web/packages/rredlist/rredlist.pdf
|
||||||
|
[62] https://github.com/CerrenRichards/IUCN-Threats
|
||||||
|
[63] https://git-og.github.io/EasyOpenRedList/
|
||||||
|
[64] https://www.youtube.com/watch?v=4T6GXtptmj4
|
||||||
|
[65] https://academic.oup.com/nargab/article/5/1/lqad003/6997971
|
||||||
|
[66] https://docs.biodiversitydata.se/tutorials/step-by-step-help-guides/setting-up-and-using-your-sbdi-bioatlas-account/
|
||||||
|
[67] https://apidocs.tbauctions.com/getting-started
|
||||||
|
[68] https://biodiversitydata-se.github.io/mol-data/
|
||||||
|
[69] https://www.biorxiv.org/content/10.1101/2022.08.29.505468.full
|
||||||
|
|
||||||
|
---
|
||||||
|
Answer from Perplexity: pplx.ai/share
|
@ -8,6 +8,15 @@ export const CITES_API_ENDPOINTS = {
|
|||||||
REFERENCES: "references"
|
REFERENCES: "references"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const IUCN_API_ENDPOINTS = {
|
||||||
|
BASE_URL: "https://apiv3.iucnredlist.org/api/v3",
|
||||||
|
SPECIES: "species",
|
||||||
|
SPECIES_BY_NAME: "species/name",
|
||||||
|
THREATS: "threats/species/name",
|
||||||
|
CONSERVATION_MEASURES: "measures/species/name",
|
||||||
|
HABITATS: "habitats/species/name"
|
||||||
|
};
|
||||||
|
|
||||||
// API types
|
// API types
|
||||||
export interface ApiResponse<T> {
|
export interface ApiResponse<T> {
|
||||||
success: boolean;
|
success: boolean;
|
||||||
|
@ -15,6 +15,9 @@ export const species = pgTable("species", {
|
|||||||
genus: text("genus"),
|
genus: text("genus"),
|
||||||
citesListings: jsonb("cites_listings"),
|
citesListings: jsonb("cites_listings"),
|
||||||
citesId: integer("cites_id"),
|
citesId: integer("cites_id"),
|
||||||
|
iucnStatus: text("iucn_status"),
|
||||||
|
iucnId: text("iucn_id"),
|
||||||
|
iucnData: jsonb("iucn_data"),
|
||||||
apiData: jsonb("api_data"),
|
apiData: jsonb("api_data"),
|
||||||
searchedAt: timestamp("searched_at").defaultNow(),
|
searchedAt: timestamp("searched_at").defaultNow(),
|
||||||
});
|
});
|
||||||
@ -31,6 +34,9 @@ export const insertSpeciesSchema = createInsertSchema(species).pick({
|
|||||||
genus: true,
|
genus: true,
|
||||||
citesListings: true,
|
citesListings: true,
|
||||||
citesId: true,
|
citesId: true,
|
||||||
|
iucnStatus: true,
|
||||||
|
iucnId: true,
|
||||||
|
iucnData: true,
|
||||||
apiData: true,
|
apiData: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user