# Schema Reference — Food & Beverage

Vertical schema for `businessType: "food-beverage"` — restaurants, cafes, bars, food trucks, catering.

This reference extends the base schema. All base node types remain valid. Load `schema-base.md` first.

When loading this reference, confirm: "Using schema-base + schema-food-beverage".

---

## Additional Node Types

| Entity | Neo4j Label | Schema.org Type | Required Properties |
|--------|-------------|-----------------|---------------------|
| TableReservation | `TableReservation` | `schema:FoodEstablishmentReservation` | `accountId`, `guest` (id), `partySize`, `date`, `time`, `tableNumber`, `reservationStatus` |
| MenuItem | `MenuItem` | `schema:MenuItem` | `accountId`, `name`, `description`, `price`, `category`, `allergens`, `available` |
| Menu | `Menu` | `schema:Menu` | `accountId`, `name`, `validFrom`, `validThrough`, `items` |
| DiningOrder | `DiningOrder` | `schema:Order` (F&B subtype) | `accountId`, `table` (id), `items`, `orderStatus`, `totalPrice`, `servedBy` (id) |

### DiningOrder vs base Order

`DiningOrder` is the food-and-beverage-specific label for table orders. Use `DiningOrder` (not `Order`) for orders placed at a table or counter. The base `Order` is used for general jobs — `DiningOrder` carries F&B-specific properties like `table` and `servedBy`.

---

## Relationship Patterns

```
(:Menu)-[:CONTAINS]->(:MenuItem)
(:DiningOrder)-[:FROM_TABLE]->(:TableReservation)
(:DiningOrder)-[:INCLUDES]->(:MenuItem)
```
