{
    "id": "https://schema.org.uk/schemas/cafe/1.0",
    "version": "1.0",
    "name": "Cafe Schema",
    "description": "The Cafe Schema organises cafe identity, contact, location, opening hours, menu, facilities and customer information into a consistent format, using Schema.org vocabulary where applicable.",
    "sections": [
        {
            "name": "Identity",
            "key": "identity",
            "attributes": [
                {
                    "name": "cafe.id",
                    "label": "Identifier",
                    "description": "The permanent unique identifier already assigned to the cafe. JSON-LD states the same value as @id. The identifier is not calculated from the name, telephone, or address.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": true,
                    "schema_org": "@id"
                },
                {
                    "name": "cafe.title",
                    "label": "Title",
                    "description": "The name of the cafe.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": true,
                    "schema_org": "name"
                },
                {
                    "name": "cafe.description",
                    "label": "Description",
                    "description": "A text description of the cafe.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "description"
                }
            ]
        },
        {
            "name": "Incorporation details",
            "key": "company",
            "attributes": [
                {
                    "name": "cafe.company.name",
                    "label": "Company name",
                    "description": "The registered company name, when the business is registered at Companies House and states that name. A missing value stays unknown. This is not the trading name. JSON-LD uses legalName.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "legalName",
                    "component": "https://schema.org.uk/schemas/components/company"
                },
                {
                    "name": "cafe.company.number",
                    "label": "Company number",
                    "description": "The company number, when the business is registered at Companies House and states that number. A missing value stays unknown. This is not a VAT number. When a number is stated, JSON-LD uses a PropertyValue named companyNumber.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "additionalProperty",
                    "component": "https://schema.org.uk/schemas/components/company"
                },
                {
                    "name": "cafe.company.incorporated_on",
                    "label": "Incorporation date",
                    "description": "The incorporation date, when the business is registered at Companies House and states that date. A missing date stays unknown. JSON-LD uses foundingDate for that stated date.",
                    "data_type": "date",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "foundingDate",
                    "component": "https://schema.org.uk/schemas/components/company"
                },
                {
                    "name": "cafe.company.vat",
                    "label": "VAT number",
                    "description": "The VAT number, when the business is registered for VAT and states that number. A missing value stays unknown. This is not the company number. JSON-LD uses vatID.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "vatID",
                    "component": "https://schema.org.uk/schemas/components/company"
                }
            ]
        },
        {
            "name": "Contact",
            "key": "contact",
            "attributes": [
                {
                    "name": "cafe.contact.phone",
                    "label": "Phone",
                    "description": "The telephone number of the cafe.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "telephone",
                    "component": "https://schema.org.uk/schemas/components/contact"
                },
                {
                    "name": "cafe.contact.url",
                    "label": "Url",
                    "description": "The website address of the cafe.",
                    "data_type": "url",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "url",
                    "component": "https://schema.org.uk/schemas/components/contact"
                },
                {
                    "name": "cafe.contact.email",
                    "label": "Email",
                    "description": "An email address for the cafe, when one is stated. Leave it empty when none is known.",
                    "data_type": "email",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "email",
                    "component": "https://schema.org.uk/schemas/components/contact"
                }
            ]
        },
        {
            "name": "Location and coordinates",
            "key": "location_and_coordinates",
            "attributes": [
                {
                    "name": "cafe.location.address",
                    "label": "Address",
                    "description": "The postal address of the cafe. The original address line stays intact.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "address"
                },
                {
                    "name": "cafe.location.latitude",
                    "label": "Latitude",
                    "description": "The WGS84 latitude of the cafe.",
                    "data_type": "number",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "latitude"
                },
                {
                    "name": "cafe.location.longitude",
                    "label": "Longitude",
                    "description": "The WGS84 longitude of the cafe. A coordinate pair is required before JSON-LD includes GeoCoordinates.",
                    "data_type": "number",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "longitude"
                },
                {
                    "name": "cafe.location.postcode",
                    "label": "Postcode",
                    "description": "The UK postcode when one postcode is present in the postal address.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "postalCode",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "cafe.location.street",
                    "label": "Street",
                    "description": "The street line when the postal address separates it from the town. A borough is not the street.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "streetAddress",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "cafe.location.locality",
                    "label": "Locality",
                    "description": "The town or city when the postal address states it as its own part. A borough is not the locality.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "addressLocality",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "cafe.location.region",
                    "label": "Region",
                    "description": "The county or region when the postal address states it as its own part. A media-market code is not a region and is left empty.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "addressRegion",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "cafe.location.country",
                    "label": "Country",
                    "description": "The country when the address states it. A two-letter country code is recorded as the country name. Leave it empty when the country is not stated.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "addressCountry",
                    "component": "https://schema.org.uk/schemas/components/address"
                }
            ]
        },
        {
            "name": "Opening hours",
            "key": "opening_hours",
            "attributes": [
                {
                    "name": "cafe.hours.opening",
                    "label": "Opening hours",
                    "description": "The regular opening hours when a weekly timetable states each open day and its opening and closing times. A current open or closed status is not opening hours. Busy periods are not opening hours. A day with no stated times is left empty.",
                    "data_type": "object",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "openingHoursSpecification"
                }
            ]
        },
        {
            "name": "Images",
            "key": "images",
            "attributes": [
                {
                    "name": "cafe.image.logo",
                    "label": "Logo",
                    "description": "The address of the cafe logo, when one is stated. A missing address is omitted.",
                    "data_type": "url",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "logo"
                },
                {
                    "name": "cafe.image.main",
                    "label": "Main image",
                    "description": "The address of the main image of the cafe, when one is stated. A count of photographs is not an image. A missing address is omitted.",
                    "data_type": "url",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "image",
                    "component": "https://schema.org.uk/schemas/components/image"
                }
            ]
        },
        {
            "name": "Reputation",
            "key": "review_statistics",
            "attributes": [
                {
                    "name": "cafe.review.rating",
                    "label": "Review rating",
                    "description": "A review score from one provider. It is not a qualification or an award. A scale is recorded only when that provider states it. The score stays in the native record and is not copied into the core business JSON-LD.",
                    "data_type": "number",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "ratingValue",
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "cafe.review.count",
                    "label": "Review count",
                    "description": "The number of reviews accompanying a review rating from the same provider. It is not calculated from another provider.",
                    "data_type": "integer",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "reviewCount",
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "cafe.review.rating_count",
                    "label": "Rating count",
                    "description": "The number of ratings when the provider states it separately from the number of reviews. It is not calculated from the distribution.",
                    "data_type": "integer",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "ratingCount",
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "cafe.review.distribution",
                    "label": "Rating distribution",
                    "description": "Numbers recorded against scores 1 to 5. They are not the review count. Schema.org has no single property for the five counts, so this stays unmapped.",
                    "data_type": "object",
                    "scope": "cafe",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "cafe.review.scale",
                    "label": "Rating scale",
                    "description": "The lowest and highest points of a review scale, when the scale is stated. Schema.org records those points as separate properties, so this attribute is not given one of them.",
                    "data_type": "object",
                    "scope": "cafe",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "cafe.review.provider",
                    "label": "Review provider",
                    "description": "The organisation that published these figures. Figures from another provider are a separate observation and are not averaged together.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "cafe.review.observed_on",
                    "label": "Observation date",
                    "description": "The date on which these figures were observed, when that date is stated.",
                    "data_type": "date",
                    "scope": "cafe",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                }
            ]
        },
        {
            "name": "Price",
            "key": "price",
            "attributes": [
                {
                    "name": "cafe.price_range",
                    "label": "Price level",
                    "description": "A price indication using £, ££, or £££. Leave it empty when none is stated. This is not a menu price.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "priceRange"
                }
            ]
        },
        {
            "name": "Payment",
            "key": "payment",
            "attributes": [
                {
                    "name": "cafe.payment.methods",
                    "label": "Payment methods",
                    "description": "The payment methods the cafe states it accepts. The recorded values are Cash, Credit card, Debit card, Contactless card, and Mobile payment. A tab stays with these methods. A missing value is unknown. JSON-LD uses paymentAccepted for the stated methods.",
                    "data_type": "list",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "paymentAccepted"
                },
                {
                    "name": "cafe.payment.currency",
                    "label": "Currencies accepted",
                    "description": "The currency the cafe states that it accepts. The recorded value is pounds sterling. A missing value stays unknown. JSON-LD uses currenciesAccepted.",
                    "data_type": "text",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "currenciesAccepted"
                }
            ]
        },
        {
            "name": "Menu",
            "key": "services",
            "attributes": [
                {
                    "name": "cafe.service.coffee",
                    "label": "Coffee",
                    "description": "Whether the cafe offers coffee, including oat milk or iced coffee. Tea and hot chocolate are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.lunch",
                    "label": "Lunch",
                    "description": "Whether the cafe offers lunch, including a ploughman's. Breakfast and brunch are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.cakes",
                    "label": "Cakes and pastries",
                    "description": "Whether the cafe offers cakes or pastries, including homemade cakes, cookies, or other desserts. Scones are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.breakfast",
                    "label": "Breakfast",
                    "description": "Whether the cafe offers breakfast, including a fried breakfast. Brunch and lunch are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.tea",
                    "label": "Tea",
                    "description": "Whether the cafe offers tea. Coffee and a cream tea are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.takeaway",
                    "label": "Takeaway food and drinks",
                    "description": "Whether the cafe offers takeaway food or drinks, including bakery goods or a slice of cake. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.sandwiches",
                    "label": "Sandwiches",
                    "description": "Whether the cafe offers sandwiches, including a bacon bap or a wrap. Toasties are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.salads",
                    "label": "Salads",
                    "description": "Whether the cafe offers salads, including a boxed salad. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.vegan",
                    "label": "Vegan options",
                    "description": "Whether the cafe offers vegan dishes. Vegetarian options are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.homemade",
                    "label": "Homemade food",
                    "description": "Whether the cafe offers homemade food, including quiche. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.brunch",
                    "label": "Brunch",
                    "description": "Whether the cafe offers brunch. Breakfast is separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.vegetarian",
                    "label": "Vegetarian options",
                    "description": "Whether the cafe offers vegetarian dishes. Vegan options are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.cream_tea",
                    "label": "Cream tea and afternoon tea",
                    "description": "Whether the cafe offers a cream tea or afternoon tea. Tea as a drink is separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.hot_meals",
                    "label": "Burgers, pizza and hot meals",
                    "description": "Whether the cafe offers a hot meal, including a burger, pizza, fish and chips, or a jacket potato. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.hot_chocolate",
                    "label": "Hot chocolate",
                    "description": "Whether the cafe offers hot chocolate. Coffee is separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.toasties",
                    "label": "Toasties",
                    "description": "Whether the cafe offers toasties. Sandwiches are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.milkshakes",
                    "label": "Milkshakes and smoothies",
                    "description": "Whether the cafe offers milkshakes or smoothies. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.scones",
                    "label": "Scones",
                    "description": "Whether the cafe offers scones. Cakes and a cream tea are separate. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.soup",
                    "label": "Soup",
                    "description": "Whether the cafe offers soup. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.ice_cream",
                    "label": "Ice cream",
                    "description": "Whether the cafe offers ice cream. Ice cream for a dog is recorded with dog friendly. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.retail",
                    "label": "Retail shop",
                    "description": "Whether the cafe has a shop, including local produce, gifts, or coffee beans. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "cafe.service.catering",
                    "label": "Event catering",
                    "description": "Whether the cafe offers catering for an event, including a buffet. JSON-LD includes a Service of this name in hasOfferCatalog only when the value is stated as offered. An explicit no and an unknown value add nothing.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "Service"
                }
            ]
        },
        {
            "name": "Amenities",
            "key": "amenities",
            "attributes": [
                {
                    "name": "cafe.amenity.outdoor_seating",
                    "label": "Outdoor seating",
                    "description": "Whether the cafe has outdoor seating, including heated outdoor seating. Indoor seating is separate. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.dogs",
                    "label": "Dog friendly",
                    "description": "Whether the cafe welcomes dogs, including indoors, and whether it offers a dog treat or ice cream for a dog. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.indoor_seating",
                    "label": "Indoor seating",
                    "description": "Whether the cafe has indoor seating. Outdoor seating is separate. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.parking",
                    "label": "Parking",
                    "description": "Whether the cafe has parking, including free parking. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.toilets",
                    "label": "Customer toilets",
                    "description": "Whether the cafe has customer toilets. An accessible toilet is separate. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.wheelchair_access",
                    "label": "Wheelchair access",
                    "description": "Whether the cafe has wheelchair access. An accessible toilet is separate. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.wifi",
                    "label": "Wi-Fi",
                    "description": "Whether the cafe offers Wi-Fi. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.play_area",
                    "label": "Children's play area",
                    "description": "Whether the cafe has a children's play area. Family welcome is recorded separately. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.accessible_toilet",
                    "label": "Accessible toilet",
                    "description": "Whether the cafe has an accessible toilet. Other customer toilets are separate. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "cafe.amenity.log_burner",
                    "label": "Log burner",
                    "description": "Whether the cafe has a log burner. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "amenityFeature"
                }
            ]
        },
        {
            "name": "Cafe details",
            "key": "details",
            "attributes": [
                {
                    "name": "cafe.details.reservations",
                    "label": "Accepts reservations",
                    "description": "Whether the cafe accepts reservations, including a booking for a large group or a group visit. This is not a reservation record. A missing value stays unknown. JSON-LD uses acceptsReservations only when the value is stated as yes or no.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "acceptsReservations"
                },
                {
                    "name": "cafe.details.families",
                    "label": "Family friendly",
                    "description": "Whether the cafe welcomes families, including meals for children. A play area is separate. A missing value stays unknown. When a value is stated, JSON-LD uses a PropertyValue named familiesWelcome.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "cafe.details.gluten_free",
                    "label": "Gluten-free options",
                    "description": "Whether the cafe offers gluten-free food, including for a coeliac customer. A missing value stays unknown. When a value is stated, JSON-LD uses a PropertyValue named glutenFreeOptions.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "cafe.details.counter",
                    "label": "Counter ordering",
                    "description": "Whether customers order at the counter. A missing value stays unknown. When a value is stated, JSON-LD uses a PropertyValue named counterOrdering.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "cafe.details.allergy",
                    "label": "Allergy accommodation",
                    "description": "Whether the cafe can cater for a stated allergy, including a nut allergy or milk-free food. A missing value stays unknown. When a value is stated, JSON-LD uses a PropertyValue named allergyAccommodation.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "cafe.details.cyclists",
                    "label": "Cyclists and motorcyclists welcome",
                    "description": "Whether the cafe welcomes cyclists or motorcyclists. A missing value stays unknown. When a value is stated, JSON-LD uses a PropertyValue named cyclistsWelcome.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "cafe.details.events",
                    "label": "Events and community sessions",
                    "description": "Whether the cafe hosts events or community sessions, including a craft session, a themed night, or a regular social. A missing value stays unknown. When a value is stated, JSON-LD uses a PropertyValue named communityEvents.",
                    "data_type": "boolean",
                    "scope": "cafe",
                    "required": false,
                    "schema_org": "additionalProperty"
                }
            ]
        }
    ],
    "components": [
        {
            "id": "https://schema.org.uk/schemas/components/address",
            "name": "Address",
            "description": "A postal address other category schemas can reuse. The original address line stays intact. Missing parts are left empty.",
            "fields": [
                "address",
                "postcode",
                "street",
                "locality",
                "region",
                "country"
            ]
        },
        {
            "id": "https://schema.org.uk/schemas/components/contact",
            "name": "Contact",
            "description": "Telephone, website, and email other category schemas can reuse. Each value is optional. A missing value stays empty.",
            "fields": [
                "phone",
                "url",
                "email"
            ]
        },
        {
            "id": "https://schema.org.uk/schemas/components/company",
            "name": "Incorporation details",
            "description": "Registered company name, company number, and incorporation date when a business is registered at Companies House, and a VAT number when it is registered for VAT. Each value is included only when it is stated. A missing value stays unknown. Other category schemas reuse these fields.",
            "fields": [
                "name",
                "number",
                "incorporated_on",
                "vat"
            ]
        },
        {
            "id": "https://schema.org.uk/schemas/components/image",
            "name": "Image",
            "description": "An image, or one image in an ordered collection. Caption, attribution, and a rights note are optional. A missing note stays empty.",
            "fields": [
                "position",
                "url",
                "caption",
                "attribution",
                "rights"
            ]
        },
        {
            "id": "https://schema.org.uk/schemas/components/reputation",
            "name": "Reputation",
            "description": "Optional figures from one rating provider. A rating, a rating count, a review count, a scale, a distribution, and the date of the observation are recorded only when that provider states them. Themes are included only when a category records them. Figures from different providers are not combined. These figures are not copied into the core business JSON-LD.",
            "fields": [
                "provider",
                "rating",
                "rating_count",
                "count",
                "scale",
                "distribution",
                "observed_on",
                "themes"
            ]
        },
        {
            "id": "https://schema.org.uk/schemas/components/review-statistics",
            "name": "Review statistics",
            "alias_of": "https://schema.org.uk/schemas/components/reputation",
            "description": "Previous name of the Reputation component. New definitions use the Reputation component.",
            "fields": [
                "provider",
                "rating",
                "rating_count",
                "count",
                "scale",
                "distribution",
                "observed_on",
                "themes"
            ]
        },
        {
            "id": "https://schema.org.uk/schemas/components/offers",
            "name": "Offers",
            "optional": true,
            "description": "A contract for a later priced offer. It is not part of a core business schema. A service, a treatment, or a free or paid facility is not an offer by itself. The contract can record the item offered, the seller, the price and its currency, availability, the start and end dates, and the conditions. Live prices and bookings are not included.",
            "fields": [
                "item",
                "seller",
                "price",
                "currency",
                "availability",
                "valid_from",
                "valid_through",
                "conditions"
            ]
        }
    ]
}
