<taxonomy> <rank="species" value="alfari"/> <rank="genus" value="Azteca"/> <author value="Emery"/>
What is referred to as "species" value="alfari"/ is actually the specific epithet. The "species" value in this instance would actually be "Azteca alfari" You're probably familiar with this protocol of referring to the scientific name of an organism which implies citing the genus name & the specific epithet which together comprise the species names - as per the Linnean system of binomial nomenclature. Should I have the 'wrong end of
the
stick' of the discourse at this stage then please advise me.
Well, the above use to be true but not any more. The latest version of the Zoological Code drops all reference to "epithet" and now calls it the "specific name" (Article 5 and Glossary under "Name" - epithet doesn't even appear in the Index).
More to the point, to be absolutely proper (under the current ICZN) the above would look like this:
<taxonomy> <rank="species" specific_name="alfari"/> <rank="genus" generic_name="Azteca"/> <author value="Emery"/>
But this would be a particularly unclever way of doing it. If you wanted to change it I would suggest de-generalising it a bit to:
<taxonomy> <specific_name="alfari"/> <generic_name="Azteca"/> <author value="Emery"/>
The rank element doesn't really contribute much since you'll need to parse the "value" attribute to figure out what's going. Might as well just get the text of the "specific_name" element directly rather than searching for the "rank" element that equals "species" and then getting the text of its "value" attribute. Yes, this change makes it more specific and less general (and is a bad thing in strict IT terms), but why make life harder than it has to be? This way of doing it might make it harder to develop a Schema definition, but I would argue strongly that the data model should come after we know what we want to do, not before (<soap_box_on> and that's partly why this discussion has drawn out for sooooo long - the BioLink team built a complete XML representation of the BioLink database, some 400 fields in 50 tables, in 3 weeks and are now using it to move data between BioLink databases and between Platypus and BioLink - and, surprise surprise, we don't have a DTD or Schema because you don't actually need one to make this stuff work <soap_box_off/>).
If you need to add a subgenus to the name just add a new element:
<taxonomy> <specific_name="alfari"/> <subgeneric_name="Alfaridris"/> <generic_name="Azteca"/> <author value="Emery"/>
I don't think this would cause any more confusion during processing or parsing than:
<taxonomy> <rank="species" value="alfari"/> <rank="subgenus" value="Alfaridris"/> <rank="genus" value="Azteca"/> <author value="Emery"/>
If the software can't handle the first then it's unlikely to be able to do much with the second either. Yes, the Schema definition would be broken by the first method and not the second, but this is a secondary consideration to someone who wants to actually process this bit of pseudo-XML. If I don't know how to handle the element called "subgeneric_name" then I won't know how to handle a rank with a value of "subgenus" either. The point is that the application and the data are tightly integrated (more than we would like them to be) and if the two get out of synch things won't go smoothly.
Yours in confusion, Steve Shattuck