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
- ogs-core.md — Core Specification (ID format, versioning)
- ogs-sense.md — Sensory Model (scales, aromatics, textures)
- ogs-match.md — Matching Model (how composition informs pairing)