edalcin/biodiversitydataskills

darwin-core

Helps users work with Darwin Core (DwC), Darwin Core Archive (DwC-A), Darwin Core Conceptual Model (DwC-CM), and Darwin Core Data Package (DwC-DP), the biodiversity data standards maintained by TDWG.

Ver código fuente
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

Darwin Core Skill

Skill for working with Darwin Core and its related standards maintained by TDWG:

  • DwC-A — Darwin Core Archive (star-schema ZIP format; existing tooling)
  • DwC-CM — Darwin Core Conceptual Model (ratified 2026-05-26; semantics of class relationships)
  • DwC-DP — Darwin Core Data Package (ratified 2026-05-26; relational tabular format extending Frictionless Data)

Setup

1. Install Python 3.9+

Make sure Python 3.9 or later is installed:

bash
python --version

2. Install dependencies

bash
cd /path/to/darwin-core
pip install -r requirements.txt

3. (Optional) Sync references

To download the latest Darwin Core term definitions:

bash
python scripts/sync.py

Usage

1. Explain the Darwin Core standard

General overview:

bash
python scripts/explain.py

Explain a specific term:

bash
python scripts/explain.py --term occurrenceID
python scripts/explain.py --term decimalLatitude

List all available terms:

bash
python scripts/explain.py --list

2. Validate a Darwin Core Archive

Validates a DwC-A (.zip) checking structure, terms, and data:

bash
python scripts/validate.py occurrences.zip

Detailed validation:

bash
python scripts/validate.py occurrences.zip --verbose

3. Generate a DwC-A template

Creates a basic Darwin Core Archive structure:

bash
python scripts/generate_template.py my_project --dir ./output

Generate with Event core (default: Occurrence):

bash
python scripts/generate_template.py my_project --core event --dir ./output

Generate with Taxon core:

bash
python scripts/generate_template.py my_project --core taxon --dir ./output

4. Map CSV columns to DwC terms

Analyzes a CSV and suggests mappings to Darwin Core terms:

bash
python scripts/map_columns.py data.csv

Generate a new CSV with DwC headers:

bash
python scripts/map_columns.py data.csv --output mapped.csv

Interactive mode (confirm each suggestion):

bash
python scripts/map_columns.py data.csv --interactive

5. Sync references

Updates term definitions and extensions from official sources:

bash
python scripts/sync.py

References

Known Darwin Core Extensions

This skill knows about all GBIF-registered extensions (https://rs.gbif.org/extensions.html), including:

ExtensionRowTypeCore
Audiovisual Mediaac/terms/MultimediaOccurrence, Taxon
Types and Specimengbif/1.0/TypesAndSpecimenTaxon
DNA derived datagbif/1.0/DNADerivedDataOccurrence, Event
Species Distributiongbif/1.0/DistributionTaxon
Species Profilegbif/1.0/SpeciesProfileTaxon
MeasurementOrFactsdwc/terms/MeasurementOrFactOccurrence, Event, Taxon
Identification Historydwc/terms/IdentificationOccurrence
Resource Relationshipdwc/terms/ResourceRelationshipOccurrence, Event, Taxon
ChronometricAgechrono/terms/ChronometricAgeOccurrence
Humboldt Ecological Inventoryeco/terms/EventEvent
ExtendedMeasurementOrFactobis/terms/ExtendedMeasurementOrFactEvent
GGBN Permits / Loansggbn/terms/...MaterialSample
Germplasmgermplasm/germplasmTerm#...Occurrence
Vernacular Namesgbif/1.0/VernacularNameTaxon
Literature Referencesgbif/1.0/ReferenceTaxon, Occurrence
Taxon Descriptiongbif/1.0/DescriptionTaxon

See references/EXTENSIONS.md for full details.


Darwin Core Conceptual Model (DwC-CM)

Ratified 2026-05-26. Provides semantics of relationships between DwC classes — the missing piece since Darwin Core's inception. Technology-agnostic (relational DB, document DB, graph DB all valid).

Full reference: references/CONCEPTUAL_MODEL.md

DwC-CM Classes (quick reference)

ClassRole
EventAction/process at a place+time; 4 specializations below
OccurrenceEvent establishing state of an Organism at place+time
SurveyEvent supporting presence/absence/abundance inferences
OrganismInteractionEvent expressing non-permanent interaction between 2 Organisms
OrganismParticular organism or taxonomically homogeneous group
OrganismRelationshipPermanent Organism-to-Organism relationships
SurveyTargetWhat a Survey was seeking
MaterialEntityPhysical matter; gathered or sampled during an Event
IdentificationTaxonomic (or other) determination by an Agent
TaxonTaxonomically homogeneous group; occupies a rank in hierarchy
LocationSpatial region or named place
GeologicalContextStratigraphic assignment context
ChronometricAgeAge from a dating method (radiocarbon, etc.)
AgentPerson, org, group, device, software that can act
ProtocolMethod used during an action
MediaEntityRecorded entity (image, sound, video, text)
NucleotideAnalysisMolecular analysis following a MolecularProtocol
NucleotideSequenceSequence produced by NucleotideAnalysis
MolecularProtocolProtocol for nucleotide analysis

Key design points:

  • Occurrence, Survey, OrganismInteraction are specializations of Event — not combinable in one Event
  • Events nest (parent/child); one child has only one parent
  • MaterialSample omitted from DwC-CM; use MaterialEntity (derived from another MaterialEntity)
  • OrganismInteraction has by (actor) and with (target) links to Occurrence
  • NucleotideAnalysis → Identification → inferred Occurrence (for eDNA/metabarcoding)

Darwin Core Data Package (DwC-DP)

Ratified 2026-05-26. Extends Frictionless Data Package spec as the reference implementation of DwC-CM. Replaces DwC-A's star-schema constraint with arbitrary relational FK graphs.

Full reference: references/DATA_PACKAGE_GUIDE.md

File structure

datapackage.json   # Required descriptor
eml.xml            # Optional EML metadata
event.csv          # One or more DwC-DP table CSV files
occurrence.csv
...

Descriptor (datapackage.json) required fields

json
{
  "profile": "http://rs.tdwg.org/dwc-dp/1.0/dwc-dp-profile.json",
  "resources": [
    {
      "name": "event",
      "path": "event.csv",
      "profile": "tabular-data-resource",
      "mediatype": "text/csv",
      "schema": {
        "fields": [...],
        "primaryKey": ["eventID"],
        "foreignKeys": [
          {
            "fields": "parentEventID",
            "predicate": "happened during",
            "reference": { "resource": "", "fields": "eventID" }
          }
        ]
      }
    }
  ]
}

Rules

  • Table name MUST be a reserved name from the profile (event, occurrence, agent, etc.)
  • Field descriptors MUST include name, title, description, type, dcterms:isVersionOf
  • foreignKeys.predicate documents relationship semantics (e.g., "happened during", "conducted by")
  • Self-referencing FK: "resource": ""
  • Compression: gzip only (.gz); datapackage.json always at root, never individually compressed
  • Copy field descriptors from http://rs.tdwg.org/dwc-dp/1.0/table-schemas for guaranteed compliance

Key URLs

  • Profile: http://rs.tdwg.org/dwc-dp/1.0/dwc-dp-profile.json
  • Table schemas: http://rs.tdwg.org/dwc-dp/1.0/table-schemas
  • Designer: https://gbif.github.io/dwc-dp/designer/
  • QRG: https://gbif.github.io/dwc-dp/qrg/

DwC-DP vs DwC-A

DwC-ADwC-DP
ContainerZIPgzip
Descriptormeta.xmldatapackage.json
SchemaStar schema onlyArbitrary FK graph
Relationship labelsImplicitExplicit predicate
StatusOperationalRatified 2026-05-26; GBIF adoption in progress

Related Skills

[skos-xl](../skos-xl/) — Use alongside this skill to define the controlled vocabularies for Darwin Core term values (e.g. basisOfRecord, occurrenceStatus, habitat) as SKOS RDF. Also supports the TDWG TAG NameThing pattern for representing taxonomic names with full nomenclatural provenance.

[DataProvenance](../DataProvenance/) — Use alongside this skill to record the lineage of a DwC-A/DwC-DP dataset: which activity (import, georeferencing, QC pass) generated or transformed which records, and which agent (collector, data manager, institution) is responsible, following the W3C PROV model.

del mismo repositorio

Más Skills

Todos los Skills
edalcin
Comunidad

biohousekeeper

Analyzes biodiversity spreadsheets (CSV/XLSX) and proposes a restructured column layout aligned with Darwin Core (DwC), asking the user clarifying questions about anything ambiguous before finalizing the report. Detects columns that should be renamed to DwC terms, composite columns that should be split (e.g. packed "lat,long" pairs, "Genus species" binomials, delimited locality hierarchies), redundant duplicate columns, and missing recommended fields (occurrenceID, basisOfRecord, eventDate, coordinates). Use when the user mentions "biohousekeeper", "clean up my spreadsheet", "restructure my biodiversity data", "map my spreadsheet to Darwin Core", or asks to analyze/tidy/fix columns in an occurrence/species/collection spreadsheet.

instalaciones
1
GitHub Stars
4
Actualizado
26 ago
edalcin
Comunidad

grist-master

Provides comprehensive technical knowledge about Grist (getgrist.com), the spreadsheet-database hybrid tool: REST API, SQL endpoint, MCP server, OAuth apps, webhooks, Python formulas and the full Excel-like function reference, column types, references/lookups, summary tables, access rules, self-hosted (Docker) installation and administration, and integrations (Zapier, n8n, Make, embedding, custom widgets). Use when the user mentions "Grist", "getgrist.com", "grist-core", "grist-widget", building or debugging Grist formulas, querying the Grist REST/SQL API, connecting an MCP client to Grist, self-hosting Grist with Docker, writing Grist access rules, or building a Grist custom widget or integration.

instalaciones
1
GitHub Stars
4
Actualizado
26 ago
edalcin
Comunidad

iczn

Expert knowledge of the International Code of Zoological Nomenclature (ICZN, 4th edition 1999, with Declarations 44-47 and the 2012 electronic-publication amendment) for zoological taxonomists and for anyone structuring taxonomic data. Decides whether a name is available, which of two competing names is valid, whether a type designation is effective, how authorship and parentheses are cited, and how to model names, taxa and nomenclatural acts in a database. Use this skill whenever the user mentions "ICZN", "zoological nomenclature", "Code of Zoological Nomenclature", an Article number of the Code, "available name", "valid name", "senior/junior synonym", "homonym", "nomen nudum", "nomen oblitum", "nomen protectum", "nomen novum", "holotype", "syntype", "lectotype", "neotype", "paratype", "type species", "type genus", "type locality", "priority", "typification", "emendation", "new combination", "ZooBank", "LSID", "Bulletin of Zoological Nomenclature", or the ICZN Commission -- and also whenever they are describing a new animal species, reviewing a taxonomic manuscript, cleaning or validating animal name strings, resolving a synonymy or a spelling variant, deciding what belongs in scientificName / scientificNameAuthorship / nomenclaturalStatus / taxonomicStatus / typeStatus, or designing a database or checklist that holds animal names, even if they never say "ICZN".

instalaciones
1
GitHub Stars
4
Actualizado
26 ago
edalcin
Comunidad

skos-xl

Helps users build, validate, convert, and explore controlled vocabularies using SKOS (Simple Knowledge Organization System) and SKOS-XL (the W3C extension for annotatable labels). Supports Darwin Core integration for biodiversity vocabularies (basisOfRecord, habitat types, taxonomic names) and Traditional Knowledge (CTA/EtnoTermos) vocabularies with CARE principles, Nagoya Protocol compliance, per-label access control, and indigenous language attribution (PROV-O). Use when the user mentions "SKOS", "SKOS-XL", "thesaurus", "controlled vocabulary", "concept scheme", "RDF vocabulary", "taxonomic names vocabulary", "Darwin Core vocabulary", "conhecimento tradicional", "etnotermos", "CTA", "CARE principles", "Nagoya Protocol", "indigenous knowledge", "skos:Concept", "prefLabel", or "broadMatch".

instalaciones
1
GitHub Stars
4
Actualizado
26 ago