Standard / comp

OGS Composition Model Specification

Open Gastronomy Standard — Composition v0.1


1. Overview

This specification defines how dishes and beverages are structurally modeled in OGS. It establishes controlled vocabularies for component roles, cooking methods, and transformation indicators that together describe how individual ingredients combine into a finished dish.


2. Component Roles

Each component in a dish is assigned a role from the following controlled vocabulary:

Role Description
main_protein Primary protein element (meat, fish, legume, tofu)
main_vegetable Primary vegetable element
starch Starch or carbohydrate base (rice, pasta, bread, potato)
sauce Liquid or semi-liquid accompaniment
fat_component Primary fat source (butter, oil, rendered fat)
acid_component Primary acid source (vinegar, citrus, fermented)
aromatic_garnish Herbs, microgreens, or aromatic finishing elements
seasoning Salt, pepper, spice blends, finishing seasonings
textural_element Component added primarily for textural contrast

A single ingredient MAY fulfill multiple roles. For example, a lemon vinaigrette could be both sauce and acid_component.


3. Cooking Methods Vocabulary

OGS v0.1 defines the following cooking method terms:

Method Description
raw No heat applied; uncooked
seared Brief, high-heat surface cooking for crust formation
grilled Cooked over direct radiant heat (charcoal, gas, wood)
roasted Cooked in dry heat in an oven, typically uncovered
braised Slow-cooked in liquid after initial browning
poached Gently cooked submerged in liquid below boiling point
steamed Cooked by steam without direct liquid contact
fried Cooked submerged in hot fat (deep-fried)
confit Slow-cooked submerged in fat at low temperature
smoked Exposed to smoke for flavoring (hot or cold)
fermented Transformed by microbial activity
cured Preserved with salt, sugar, nitrates, or acid
pickled Preserved in acid (vinegar) or lacto-fermented brine
dehydrated Moisture removed by air, heat, or freeze-drying
sous_vide Vacuum-sealed and cooked in precisely controlled water bath
blanched Briefly boiled then shocked in ice water
sauteed Cooked quickly in a small amount of fat over high heat
baked Cooked in dry oven heat (typically for doughs and batters)
charred Surface deliberately blackened by extreme heat
emulsified Blended to form stable fat-liquid suspension

4. Maillard Index

The Maillard index quantifies the degree of browning reaction (Maillard reaction and caramelization) applied to a component:

Value Anchor Description
0 No browning — raw, blanched, steamed, poached
1 Light — pale gold, minimal crust (light sauté)
2 Golden — even golden-brown crust (well-sautéed, toasted)
3 Deep brown — substantial crust, rich browning (well-seared, roasted)
4 Dark — dark brown with charred edges (high-heat grilling, deep roast)
5 Fully charred — deliberately blackened surface

The Maillard index is measured on a 0–5 integer scale. Values MUST be integers between 0 and 5 inclusive.


5. Reduction Level

For sauces and liquid components, the reduction level indicates concentration:

Value Anchor Description
0 No reduction — stock, broth, or liquid as-is
1 Light reduction — slightly concentrated, still fluid
2 Moderate reduction — noticeably thickened, coat-a-spoon
3 Heavy reduction — significantly concentrated, syrupy
4 Near-glace — very thick, intensely concentrated
5 Glace-level — fully reduced to a syrupy glaze

The reduction level is measured on a 0–5 integer scale. Values MUST be integers between 0 and 5 inclusive.


6. Composition Structure

A dish's composition is expressed as an array of components, each describing one element of the dish:

"components": [
  {
    "role": "main_protein",
    "ingredient_ref": "ogs:core:ingredient:wagyu-beef",
    "cooking_method": "seared",
    "maillard_index": 3,
    "sensory_contribution": {
      "basic_tastes": {
        "umami": 8.0,
        "salty": 3.0
      },
      "aromatics": [
        {
          "family": "savory",
          "group": "meat",
          "item": "beef_fat",
          "qualifier": "cooked",
          "intensity": 7.0
        }
      ],
      "texture": ["tender", "juicy"]
    }
  },
  {
    "role": "sauce",
    "ingredient_ref": "ogs:core:ingredient:black-truffle",
    "cooking_method": "sauteed",
    "maillard_index": 1,
    "reduction_level": 3,
    "sensory_contribution": {
      "basic_tastes": {
        "umami": 7.0
      },
      "aromatics": [
        {
          "family": "earth",
          "group": "fungal",
          "item": "truffle",
          "intensity": 9.0
        }
      ]
    }
  }
]

6.1 Component Fields

Field Type Required Description
role string YES Component role from controlled vocabulary (Section 2)
ingredient_ref string YES OGS ID reference to the ingredient entity
cooking_method string NO Cooking method from controlled vocabulary (Section 3)
maillard_index integer NO Browning level, 0–5 (Section 4)
reduction_level integer NO Concentration level for liquids, 0–5 (Section 5)
proportion string NO Relative proportion: dominant, significant, accent, trace
sensory_contribution object NO Partial sensory profile describing this component's contribution to the dish

6.2 Proportion Values

Value Description
dominant The primary element by volume/weight (>40% of dish)
significant A major element (15–40%)
accent A supporting element (5–15%)
trace A finishing or seasoning element (<5%)

7. Dish-Level Fields

Beyond composition, a dish entity carries these additional fields:

Field Type Required Description
cuisine string NO Cuisine tradition (e.g., "french", "japanese", "italian")
service_temperature string NO One of: frozen, cold, cool, room, warm, hot, very_hot
course string NO One of: amuse, appetizer, soup, salad, fish, main, cheese, dessert, petit_four
overall_sensory_profile object YES Complete sensory profile of the finished dish (see ogs-sense.md)

8. Beverage Composition Fields

For beverages, composition is simpler but includes structural metadata:

Field Type Required Description
type string YES Beverage type: wine, beer, spirit, cider, sake, other
subtype string NO Specific subtype (e.g., "red", "white", "sparkling", "rosé", "ipa", "stout")
grape_varieties array NO Array of grape variety names (for wine)
vintage integer NO Harvest year
region string NO Production region
appellation string NO Official appellation or denomination
producer string NO Producer or winery name
abv number NO Alcohol by volume (percentage, e.g., 13.5)
residual_sugar number NO Residual sugar in g/L

9. References