Eggs are an interesting and slightly more complicated case for food taxonomy since they can be viewed as either a food product, or as an anatomical reference. Outside a scientific context, most of the time by “egg” we mean chicken egg, or more precisely whole egg from a hen (adult female chicken), as a food product, which falls under FoodOn’s “hen egg food product“. But eggs from other birds, fish, turtles etc. can also be consumed, so various kinds of avian and reptile eggs are (or will be) listed under the “foodon product type > vertebrate animal food product > egg food product category.
“Egg” is not listed under the “food source” branch as it is a category that cuts across various classes of chordata, and has more to do with an embryonic life stage.
From a science perspective, we might be referring to “egg” as an anatomy reference – which UBERON’s “shelled egg“, defined as an egg with its shell on – satisfies. Uberon’s term shouldn’t be confused with the common English use of shelled egg which implies having the shell removed. In the Uberon, a shelled egg (a subclass of “embryonic structure“) has albumen, egg yolk, and eggshell parts. These part-hood axioms are in FoodOn too.
But can we place an egg with shell removed in the Uberon scheme? We need that to describe input to scrambled or powdered eggs or the output of peeling a boiled egg. Egg food products may be distinguished by having a “shell off” or “shell on” in product name, e.g. “egg (shell off, dried)“.
For this, FoodOn has a separate “part of plant or animal > part of animal > egg or egg components” class that provides Uberon’s shelled egg and parts, and as well an “egg (without shell)”. It is agnostic about what kind of animal the egg is from. (Note that FoodOn will show Uberon’s “shelled egg” term by that label in Protege normally, but can be programmed to show the uiLabel annotation “egg (with shell)” by default if desired, as shown in diagram above.)
A note on LanguaL’s egg: The SKOS style broader and narrower hierarchy of egg terms had to be reorganized into FoodOn ontology classes. An “egg shell” can’t be a subclass of egg, and a whole egg can’t be without its shell – how could it be whole?