New York Public Library Whats On The Menu Dataset Structure

Structural layout of the New York Public Library 'What's on the Menu?' open dataset. The dataset is distributed as four related CSV tables (Menu, MenuPage, MenuItem, Dish) packaged in a gzip archive on Amazon S3. This JSON Structure documents the four entity types, their fields, and the foreign-key relationships that join them.

Type: object Properties: 4
LibrariesMenusRestaurantsHistoryOpen DataFoodDatasetsCultural Heritage

NyplWhatsOnTheMenuDataset is a JSON Structure definition published by New York Public Library What's On The Menu, describing 4 properties. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

menus menuPages menuItems dishes

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/new-york-public-library-whats-on-the-menu/refs/heads/main/json-structure/new-york-public-library-whats-on-the-menu-dataset-structure.json",
  "name": "NyplWhatsOnTheMenuDataset",
  "description": "Structural layout of the New York Public Library 'What's on the Menu?' open dataset. The dataset is distributed as four related CSV tables (Menu, MenuPage, MenuItem, Dish) packaged in a gzip archive on Amazon S3. This JSON Structure documents the four entity types, their fields, and the foreign-key relationships that join them.",
  "type": "object",
  "properties": {
    "menus": {
      "type": "array",
      "description": "Menu.csv — one row per digitized physical menu object.",
      "items": { "type": { "$ref": "#/definitions/Menu" } }
    },
    "menuPages": {
      "type": "array",
      "description": "MenuPage.csv — one row per digitized page; child of Menu.",
      "items": { "type": { "$ref": "#/definitions/MenuPage" } }
    },
    "menuItems": {
      "type": "array",
      "description": "MenuItem.csv — one row per transcribed dish-on-page line item; links MenuPage and Dish.",
      "items": { "type": { "$ref": "#/definitions/MenuItem" } }
    },
    "dishes": {
      "type": "array",
      "description": "Dish.csv — one row per normalized/deduplicated dish with appearance and price statistics.",
      "items": { "type": { "$ref": "#/definitions/Dish" } }
    }
  },
  "definitions": {
    "Menu": {
      "type": "object",
      "description": "A single historical menu. Root of the hierarchy.",
      "properties": {
        "id": { "type": "uint32", "description": "Primary key." },
        "name": { "type": "string" },
        "sponsor": { "type": "string" },
        "event": { "type": "string" },
        "venue": { "type": "string" },
        "place": { "type": "string" },
        "physical_description": { "type": "string" },
        "occasion": { "type": "string" },
        "notes": { "type": "string" },
        "call_number": { "type": "string", "description": "NYPL catalog call number." },
        "keywords": { "type": "string" },
        "language": { "type": "string" },
        "date": { "type": "string", "description": "Issue/use date; precision varies." },
        "location": { "type": "string" },
        "location_type": { "type": "string" },
        "currency": { "type": "string" },
        "currency_symbol": { "type": "string" },
        "status": { "type": "string", "description": "Transcription status: complete, under review, to transcribe." },
        "page_count": { "type": "uint16" },
        "dish_count": { "type": "uint16" }
      },
      "required": ["id"]
    },
    "MenuPage": {
      "type": "object",
      "description": "A digitized page of a Menu.",
      "properties": {
        "id": { "type": "uint32", "description": "Primary key." },
        "menu_id": { "type": "uint32", "description": "Foreign key -> Menu.id." },
        "page_number": { "type": "uint16" },
        "image_id": { "type": "string", "description": "NYPL Digital Collections image id." },
        "full_height": { "type": "uint16" },
        "full_width": { "type": "uint16" },
        "uuid": { "type": "uuid" }
      },
      "required": ["id", "menu_id"]
    },
    "MenuItem": {
      "type": "object",
      "description": "A transcribed line item positioning a Dish on a MenuPage.",
      "properties": {
        "id": { "type": "uint32", "description": "Primary key." },
        "menu_page_id": { "type": "uint32", "description": "Foreign key -> MenuPage.id." },
        "dish_id": { "type": "uint32", "description": "Foreign key -> Dish.id." },
        "price": { "type": "decimal", "precision": 12, "scale": 3 },
        "high_price": { "type": "decimal", "precision": 12, "scale": 3 },
        "xpos": { "type": "double", "description": "Normalized x position (0..1) on the page image." },
        "ypos": { "type": "double", "description": "Normalized y position (0..1) on the page image." },
        "created_at": { "type": "datetime" },
        "updated_at": { "type": "datetime" }
      },
      "required": ["id", "menu_page_id"]
    },
    "Dish": {
      "type": "object",
      "description": "A normalized dish aggregating all MenuItem occurrences of the same name.",
      "properties": {
        "id": { "type": "uint32", "description": "Primary key." },
        "name": { "type": "string" },
        "description": { "type": "string" },
        "menus_appeared": { "type": "uint32" },
        "times_appeared": { "type": "int32" },
        "first_appeared": { "type": "uint16", "description": "Earliest appearance year; 0 = unknown." },
        "last_appeared": { "type": "uint16", "description": "Latest appearance year; 0 = unknown." },
        "lowest_price": { "type": "decimal", "precision": 12, "scale": 3 },
        "highest_price": { "type": "decimal", "precision": 12, "scale": 3 }
      },
      "required": ["id", "name"]
    }
  },
  "x-relationships": [
    { "from": "MenuPage.menu_id", "to": "Menu.id", "cardinality": "many-to-one" },
    { "from": "MenuItem.menu_page_id", "to": "MenuPage.id", "cardinality": "many-to-one" },
    { "from": "MenuItem.dish_id", "to": "Dish.id", "cardinality": "many-to-one" }
  ]
}