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 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 is satisfied by UBERON’s “shelled egg“, defined as an egg with its shell on. Uberon’s term shouldn’t be confused with the common English use of “shelled egg” which implies having the shell removed. In Uberon, a shelled egg (a subclass of “embryonic structure“) has albumen, egg yolk, and eggshell parts. These part-hood axioms are also in FoodOn.
But can we place an “egg with shell removed” in the Uberon scheme? We need that semantic 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 component” 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 normally in Protege, FoodOn will show Uberon’s “shelled egg” term by that label, but can be programmed to show the uiLabel annotation “egg (with shell)” if desired (as shown in diagram above) by adjusting the Protege > Preferences > Renderer > Entity Rendering > Render by annotation property setting to have the “user interface label” (http://purl.obolibrary.org/obo/GENEPIO_0000006) annotation at top of list.
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 without shell” can’t be a subclass of “whole egg” – how could it be whole? In FoodOn, this is instead represented as: