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]:=
food = RandomEntity["Food"]
Out[1]=
Get some properties about that food.
In[2]:=
EntityValue[food, {"Image", "Name",
EntityProperty["Food", "VitaminAContentPerServing"],
EntityProperty["Food", "VitaminB12ContentPerServing"],
EntityProperty["Food", "VitaminB6ContentPerServing"],
EntityProperty["Food",
"VitaminCContentPerServing"]}, "PropertyAssociation"]
Out[2]=
Build a nutritional label for 1 cup of orange juice.
In[3]:=
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]=
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]:=
acrostic["Food"] // TraditionalForm
Out[5]//TraditionalForm=
Create acrostics from specific groups of food.
In[6]:=
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=