Whenever you have a set of small molecules (with a database identifier like PubChem, ChEBI, KEGG, etc), you commonly get to a point where you might want to classify them into meaningful biological/non-biological categories (like metabolite, secondary metabolite, pesticide, lipid, steroid, terpenoid, food additive, adhesive, etc) . I currently do this by using the ChEBI ontology (specially using the Role ontology), the Chemical branch of the MeSH terms (with PubChem assignments using Eutils) and with the chemical branches of KEGG BRITE (and using all possible cross ref between KEGG compounds, ChEBI, KEGG, PubChem, etc to use each others classifications). Does anybody has other suggested routes of classifying small molecules into functional categories? Thanks!!
Your list sounds pretty complete to me. One addition would be the mapping to ATC codes, then you know what drugs you have and a somewhat meaningful hierarchy. DrugBank has also a list of drugs and experimental drugs.
PubChem actually has a very long "Classification" section, e.g. for phenol.
If you're considering the drug angle as Michael suggests, then you may also need to take into account SIDER, a database of drug side effects.
SIDER contains information on marketed medicines and their recorded adverse drug reactions. The information is extracted from public documents and package inserts. The available information include side effect frequency, drug and side effect classifications as well as links to further information, for example drug–target relations.
Added in edit on 15 Mar 2012: I would add the work of Altman et al to this. They have just published a paper on the effects and interactions of various commonly taken drugs by mining hundreds of thousands of adverse events reported to the US Food and Drug Administration (FDA) each year. You'll be most interested in their comprehensive database of drug effects (Offsides) and a database of drug-drug interaction side effects (Twosides).