Problem
If two different species, genera or other taxons have the same name, this name is a homonym. Homonyms are illegal if they belong to the same code of nomenclature. If same name belongs to different codes, it is a hemihomonym (Starobogatov, 1991). Despite of their validity, hemihomonyms are misleading and even dangerous.
Solution
If there is a possibility that name is a hemihomonym, use postfix (b), (c) or (z) for names covered by Botanical, Bacteriological, or Zoological codes of nomenclature, respectively. To check if name is a hemihomonym, please use table below or
  
with this search API prototype.

hemi homonyms

What to  : />all names   OR />names in three codes   OR />botanical and zoological   OR />botanical and bacterial   OR />bacterial and zoological   AND />comments


" . $comm . ""; } } function showc($name) { if($name != '') { return $name . " (c)"; } } function showb($name) { if($name != '') { return $name . " (b)"; } } function showz($name) { if($name != '') { return $name . " (z)"; } } $fd = fopen("hemihomonyms.csv", "r"); $first = fgets($fd); while($line = fgets($fd, 2048)) { $fields = preg_split("/;/", $line, 6); switch ($showcase) { case "all": printf("
Botanical Zoological Bacterial
%s %s%s %s%s %s", showb($fields[0]), showo($fields[1]), showz($fields[4]), showo($fields[5]), showc($fields[2]), showo($fields[3])); break; case "three": if ($fields[0] != "" and $fields[2] != "" and $fields[4] != "") { printf("
%s %s%s %s%s %s", showb($fields[0]), showo($fields[1]), showz($fields[4]), showo($fields[5]), showc($fields[2]), showo($fields[3])); } break; case "bz": if ($fields[0] != "" and $fields[2] == "" and $fields[4] != "") { printf("
%s %s%s %s%s %s", showb($fields[0]), showo($fields[1]), showz($fields[4]), showo($fields[5]), showc($fields[2]), showo($fields[3])); } break; case "bc": if ($fields[0] != "" and $fields[2] != "" and $fields[4] == "") { printf("
%s %s%s %s%s %s", showb($fields[0]), showo($fields[1]), showz($fields[4]), showo($fields[5]), showc($fields[2]), showo($fields[3])); } break; case "cz": if ($fields[0] == "" and $fields[2] != "" and $fields[4] != "") { printf("
%s %s%s %s%s %s", showb($fields[0]), showo($fields[1]), showz($fields[4]), showo($fields[5]), showc($fields[2]), showo($fields[3])); } break; } } ?>
Botanical Zoological Bacterial

Other cases
name could be "unstable" hemihomonym if it is unclear which code should be used for this name (ambiregnal names);
name could be a true homonym (as a side result of data processing, we have a list of some true homonyms here);
there are three other codes of nomenclature which may also contain hemihomonyms: code for viruses, cultivated plants (which does not, however, control nomenclature at the generic level), and PhyloCode (which is not an "official" code yet);
if the name is in the table, there is still a possibility that it is not a hemihomonym because many published names have been considered as non-valid;
if the name is not in the table, there is still a possibility that it is a hemihomonym because not all resources have been checked.
Feedback
The work is far from perfection, there are many errors, some names are not listed. Please report your corrections and additions here.
Origin
The database is a result of processing data from several sources: Catalog of Life 2008, Wikispecies, TAXACOM on-line archives and personal communications wth TAXACOM participants. Taking into account the diverse nature of sources, we cannot guarantee that database contains only validly published names. We are very grateful to David Patterson, Patrick Leary and Dmitry Mozzherin (EOL) for their invaluable help.