Will, you and me both! I think the answer may lie in a combination of the very general and the domain (and indeed protocol specific). So for example if you are doing a 2D gel, you should use GelML to describe the procedure (see Frank, I do pay attention!). But if you're doing something that doesn't fit an existing agreed template you need something very general.

Others in the ontology/CV community have suggested that FuGE or similar things may serve this purpose. My personal view is that we need a very simple resource and link description format. So there is a URL for each input material and a URL for the procedure and the links are labelled as 'is reagent in' or 'is product of' or 'is data file generated by'.

I think you'd need a very small vocabulary with not much more than 'material', 'reagent', procedure, data, and maybe a few others. As I have said of our LaBLog system our data model is;

We have stuff. We do stuff to the stuff. We get other stuff.

This seems sufficiently general so far...