Build Food Nutrition Labels
Version 11 introduces detailed nutritional data and other information about nearly 40,000 foods. More than 500 possible properties of individual foods can be queried directly, including programmatically generated nutrition labels.
Randomly select a food entity.
In[1]:=
![Click for copyable input](assets.en/build-food-nutrition-labels/In_23.png)
food = RandomEntity["Food"]
Out[1]=
![](assets.en/build-food-nutrition-labels/O_16.png)
Get some properties about that food.
In[2]:=
![Click for copyable input](assets.en/build-food-nutrition-labels/In_24.png)
EntityValue[food, {"Image", "Name",
EntityProperty["Food", "VitaminAContentPerServing"],
EntityProperty["Food", "VitaminB12ContentPerServing"],
EntityProperty["Food", "VitaminB6ContentPerServing"],
EntityProperty["Food",
"VitaminCContentPerServing"]}, "PropertyAssociation"]
Out[2]=
![](assets.en/build-food-nutrition-labels/O_17.png)
Build a nutritional label for 1 cup of orange juice.
In[3]:=
![Click for copyable input](assets.en/build-food-nutrition-labels/In_25.png)
EntityValue[\!\(\*
NamespaceBox["LinguisticAssistant",
DynamicModuleBox[{Typeset`query$$ = " 1 cup orange juice",
Typeset`boxes$$ = RowBox[{"EntityInstance", "[",
RowBox[{
InterpretationBox[
DynamicModuleBox[{EntityFramework`Formatting`Private`open = False},
TemplateBox[{
TemplateBox[{"\"foods\""}, "GeneralizedEntityBase"],
TagBox[
GridBox[{{
TemplateBox[{
TemplateBox[{"\"food type\"",
RowBox[{"EntityProperty", "[",
RowBox[{"\"Food\"", ",", "\"FoodType\""}], "]"}],
"\"EntityProperty[\\\"Food\\\", \\\"FoodType\\\"]\
\""}, "EntityProperty"],
StyleBox["\":\"", "GeneralizedEntityInfoItem"],
RowBox[{"ContainsExactly", "[",
RowBox[{"{",
TemplateBox[{"\"orange juice\"",
RowBox[{"Entity", "[",
RowBox[{"\"FoodType\"", ",", "\"OrangeJuice\""}], "]"}],
"\"Entity[\\\"FoodType\\\", \
\\\"OrangeJuice\\\"]\"", "\"food type\""}, "Entity"], "}"}], "]"}]},
"GeneralizedEntityInfoRow"]}, {
TemplateBox[{
TemplateBox[{"\"added food types\"",
RowBox[{"EntityProperty", "[",
RowBox[{"\"Food\"", ",", "\"AddedFoodTypes\""}], "]"}],
"\"EntityProperty[\\\"Food\\\", \
\\\"AddedFoodTypes\\\"]\""}, "EntityProperty"],
StyleBox["\":\"", "GeneralizedEntityInfoItem"],
RowBox[{"ContainsExactly", "[",
RowBox[{"{", "}"}], "]"}]}, "GeneralizedEntityInfoRow"]}},
GridBoxAlignment -> {"Columns" -> {{Left}}},
DefaultBaseStyle -> "GeneralizedEntityInfoGrid",
GridBoxItemSize -> {
"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
"Column"],
Dynamic[EntityFramework`Formatting`Private`open],
"\"Entity[\\\"Food\\\", {EntityProperty[\\\"Food\\\", \\\
\"FoodType\\\"] -> ContainsExactly[{Entity[\\\"FoodType\\\", \
\\\"OrangeJuice\\\"]}], EntityProperty[\\\"Food\\\", \
\\\"AddedFoodTypes\\\"] -> ContainsExactly[{}]}]\""},
"GeneralizedEntityToggle"]],
Entity["Food", {EntityProperty["Food", "FoodType"] -> ContainsExactly[{
Entity["FoodType", "OrangeJuice"]}],
EntityProperty[
"Food", "AddedFoodTypes"] -> ContainsExactly[{}]}],
SelectWithContents -> True], ",", " ",
TemplateBox[{"1", "\"cup\"", "cups", "\"Cups\""}, "Quantity",
SyntaxForm -> Mod]}], "]"}],
Typeset`allassumptions$$ = {{
"type" -> "Clash", "word" -> "cup",
"template" -> "Assuming \"${word}\" is ${desc1}. Use as \
${desc2} instead", "count" -> "2",
"Values" -> {{
"name" -> "Unit", "desc" -> "a unit",
"input" -> "*C.cup-_*Unit-"}, {
"name" -> "FoodPackaging",
"desc" -> " referring to food packaging",
"input" -> "*C.cup-_*FoodPackaging-"}}}, {
"type" -> "Unit", "word" -> "cup",
"template" -> "Assuming ${desc1} for \"${word}\". Use ${desc2} \
instead", "count" -> "6",
"Values" -> {{
"name" -> "Cups", "desc" -> "US customary cups",
"input" -> "UnitClash_*cup.*Cups--"}, {
"name" -> "CanadianCups", "desc" -> "Canadian cups",
"input" -> "UnitClash_*cup.*CanadianCups--"}, {
"name" -> "MetricCups", "desc" -> "metric cups",
"input" -> "UnitClash_*cup.*MetricCups--"}, {
"name" -> "CupsUK", "desc" -> "UK cups",
"input" -> "UnitClash_*cup.*CupsUK--"}, {
"name" -> "CupsUSLegal", "desc" -> "US legal cups",
"input" -> "UnitClash_*cup.*CupsUSLegal--"}, {
"name" -> "CupUnits", "desc" -> "cups",
"input" -> "UnitClash_*cup.*CupUnits--"}}}},
Typeset`assumptions$$ = {}, Typeset`open$$ = {1},
Typeset`querystate$$ = {
"Online" -> True, "Allowed" -> True,
"mparse.jsp" -> 1.910975`6.73279999900569, "Messages" -> {}}},
DynamicBox[ToBoxes[
AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic,
Dynamic[Typeset`query$$],
Dynamic[Typeset`boxes$$],
Dynamic[Typeset`allassumptions$$],
Dynamic[Typeset`assumptions$$],
Dynamic[Typeset`open$$],
Dynamic[Typeset`querystate$$]], StandardForm],
ImageSizeCache->{132., {7., 16.}},
TrackedSymbols:>{
Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$,
Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}],
DynamicModuleValues:>{},
UndoTrackedVariables:>{Typeset`open$$}],
BaseStyle->{"Deploy"},
DeleteWithContents->True,
Editable->False,
SelectWithContents->True]\), EntityProperty["Food", "NutritionLabel"]]
Out[3]=
![](assets.en/build-food-nutrition-labels/O_18.png)
With that information in hand, you are able to "play with your food"—using built-in data to create food-related acrostics with tooltips of images of the foods the letters represent.
show complete Wolfram Language input
In[5]:=
![Click for copyable input](assets.en/build-food-nutrition-labels/In_27.png)
acrostic["Food"] // TraditionalForm
Out[5]//TraditionalForm=
![](assets.en/build-food-nutrition-labels/O_19.png)
Create acrostics from specific groups of food.
In[6]:=
![Click for copyable input](assets.en/build-food-nutrition-labels/In_28.png)
Row[{acrostic["Vegetables", EntityClass[
"FoodType",
EntityProperty["FoodType", "BasicFoodGroups"] -> Entity[
"BasicFoodGroup", "Vegetables"]]],
acrostic["Meat", EntityClass[
"FoodType",
EntityProperty["FoodType", "BasicFoodGroups"] -> Entity[
"BasicFoodGroup", "ProteinFoods"]]]}] // TraditionalForm
Out[6]//TraditionalForm=
![](assets.en/build-food-nutrition-labels/O_20.png)