-
Notifications
You must be signed in to change notification settings - Fork 3
CITES listing calculation
CITES lists taxon concepts in appendices on various taxonomic levels. Practically, the highest rank at which taxa seem to be listed is order.
In the following description, when a taxon concept is listed explicitly, that means there is a listing change record linking to that taxon concept directly. If a taxon concept is listed implicitly, that means it inherited the listing from its explicitly listed ancestors and / or descendants. The rules of inheriting the listing are quite complex.
Full name | Rank | Explicit listing | Inclusion | Effective since | Implicit listing |
---|---|---|---|---|---|
Boidae | Family | II | 1977 | I/II | |
Boa | Genus | I/II | |||
Boa constrictor | Species | II | Boidae | 1987 | I/II |
Boa constrictor occidentalis | Subspecies | I | 1987 | I |
It is helpful to analyse this example using the Checklist "history" view of Boa constrictor. That species was first listed explicitly in Appendix II in 1975. In 1977, the family Boidae was listed on Appendix II and the species listing was changed to be an "included" in the family listing. An inclusion is something in between an explicit and implicit listing. In 1987, the subspecies Boa constrictor occidentalis was listed on appendix I.
When we look at the data currently (2017), we can see the explicit appendix II listing is inherited by all descendants of Boidae, except the subspecies, which has it's own explicit listing that takes precedence. That appendix I listing is propagated up the tree and affects the implicit listing of all ancestors.
The value of implicit listing can be calculated historically, for example in 1986 all descendants of Boidae would have the implicit listing = 'II'. The value of implicit listing calculated for current data is also referred to as current listing.
The value of current listing is presented in the Checklist and the Species+ API. The visibility rules of taxa within the checklist are directly linked to the explicit / implicit listing differentiation:
- it does not include subspecies unless they're listed explicitly
- it does not include taxa higher than species unless they're listed explicitly
Calculating the current listing is carried out by a set of stored procedures which need to be run in the correct order, as they use their intermediate results to come up with the final listing. The data structure used for updating the current state of calculations is the "listing" hstore field.
This process starts by analysing all explicit listing and marking taxa as follows:
- LISTED if there is a current explicit ADDITION (inclusions do not qualify)
- EXCLUDED if there is a current explicit ADDITION with exclusion for this taxon concept
- DELETED if it has been deleted from appendices
In all of these cases, the status of the listing is marked as explicit.
Next, we propagate the status down the tree (implicit listing from ancestors). If when traversing the tree we reach a node with explicit listing, we let it override information propagated from ancestors.
Finally, for every explicitly listed taxon concept we propagate its listing information up the tree to all of its previously unmarked ancestors, who are now all implicitly listed (implicit listing from descendants).
This process starts with calculating the value of fully_covered
flag. If that flag is set to true, that means all populations of the taxon are currently listed without any exceptions, and that applies to all descendants as well. So the cases when a taxon is not fully covered are as follows:
- taxa excluded or deleted from listings
- taxa that only have some populations listed
- taxa that don't have listed ancestors, only descendants
Next, the fully_covered
flag is propagated to all ancestors, wand the 'NC' part is appended to their current listing value when the flag is unset.
Finally, the cites_show
flag is calculated, which defines which taxa show in the CITES Checklist. It is set to true for all taxa except:
- implicitly listed subspecies & varieties
- higher taxa (incl. genus) that do not have listed ancestors
- hybrids
- excluded taxa
- not listed taxa
- deleted taxa, except those which have listed descendants
Hash annotation symbols are added to the listing hstore, for easier access for later processing of this value (e.g. for purposes of the CITES Checklist and Species+ downloads)
Non-hash annotations are dynamically assigned numbers for inclusion in the CITES Checklist "index" output, in taxonomic order. Taxa with such annotations will have the annotation number included in their entry in the index pdf, and an annotations key will be appended to the end of the pdf.
The "original" value is stored in listing->'cites_listing_original'
. Effectively this is the explicit listing + any listing cascading from ancestors. For example, in case of Boidae this is 'II'.
The "actual" value is stored in listing->'cites_listing'
. It is calculated using a recursive function, which incorporates listing from descendants in the the final current listing value. For example, in case of Boidae this is 'I/II'
The calculations have been tuned to cater for many edge cases. Many of them have been captured in form of unit tests, since even a minor change to the calculation may produce unexpected regressions. Here are some examples of unusual listings.
- on species level: populations listed separately: Loxodonta africana I/II, Caiman latirostris I/II
- on species level: subspecies listed separately: Boa constrictor I/II
- on genus level: species listed separately: Arctocephalus spp I/II
- on family level: species listed separately: Lutrinae spp I/II, Tapiridae spp I/II
- on order level: species listed separately: Acipenseriformes spp I/II
- some populations not listed: Panax ginseng II/NC, Antilocapra americana I/NC
- taxon listed and some subtaxa not listed: Psittaciformes spp I/II/NC
- taxon not listed and subtaxa not listed: Aloe vera NC, Pereskia NC
- taxon not listed and subtaxa listed: Cervus elaphus I/II/III/NC, Axis porcinus I/NC
- subtaxa deleted from appendices: Psittaciformes spp I/II/NC
- species deleted but subspecies listed, e.g. Pseudomys fieldi I/NC