{
    "id": "https://schema.org.uk/schemas/dentist/1.2",
    "version": "1.2",
    "name": "Dentist Schema",
    "description": "The Dentist Schema organises practice identity, contact, location, opening hours, services, facilities and patient information into a consistent format, using Schema.org vocabulary where applicable.",
    "sections": [
        {
            "name": "Identity",
            "key": "identity",
            "attributes": [
                {
                    "name": "dentist.id",
                    "label": "Identifier",
                    "description": "The permanent unique identifier already assigned to the practice. JSON-LD states the same value as @id. The identifier is not calculated from the name, telephone, or address.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": true,
                    "schema_org": "@id"
                },
                {
                    "name": "dentist.title",
                    "label": "Title",
                    "description": "The name of the practice.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": true,
                    "schema_org": "name"
                },
                {
                    "name": "dentist.description",
                    "label": "Description",
                    "description": "A text description of the practice.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "description"
                }
            ]
        },
        {
            "name": "Incorporation details",
            "key": "company",
            "attributes": [
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "legalName",
                    "component": "https://schema.org.uk/schemas/components/company"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "additionalProperty",
                    "component": "https://schema.org.uk/schemas/components/company"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "foundingDate",
                    "component": "https://schema.org.uk/schemas/components/company"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "vatID",
                    "component": "https://schema.org.uk/schemas/components/company"
                }
            ]
        },
        {
            "name": "Contact",
            "key": "contact",
            "attributes": [
                {
                    "name": "dentist.contact.phone",
                    "label": "Phone",
                    "description": "The telephone number of the practice.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "telephone",
                    "component": "https://schema.org.uk/schemas/components/contact"
                },
                {
                    "name": "dentist.contact.url",
                    "label": "Url",
                    "description": "The website address of the practice.",
                    "data_type": "url",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "url",
                    "component": "https://schema.org.uk/schemas/components/contact"
                },
                {
                    "name": "dentist.contact.email",
                    "label": "Email",
                    "description": "An email address for the practice, when one is stated. Leave it empty when none is known.",
                    "data_type": "email",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "email",
                    "component": "https://schema.org.uk/schemas/components/contact"
                }
            ]
        },
        {
            "name": "Location and coordinates",
            "key": "location_and_coordinates",
            "attributes": [
                {
                    "name": "dentist.location.address",
                    "label": "Address",
                    "description": "The postal address of the practice. The original address line stays intact.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "address"
                },
                {
                    "name": "dentist.location.latitude",
                    "label": "Latitude",
                    "description": "The WGS84 latitude of the practice.",
                    "data_type": "number",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "latitude"
                },
                {
                    "name": "dentist.location.longitude",
                    "label": "Longitude",
                    "description": "The WGS84 longitude of the practice. A coordinate pair is required before JSON-LD includes GeoCoordinates.",
                    "data_type": "number",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "longitude"
                },
                {
                    "name": "dentist.location.postcode",
                    "label": "Postcode",
                    "description": "The UK postcode when one postcode is present in the postal address.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "postalCode",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "streetAddress",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "addressLocality",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "addressRegion",
                    "component": "https://schema.org.uk/schemas/components/address"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "addressCountry",
                    "component": "https://schema.org.uk/schemas/components/address"
                }
            ]
        },
        {
            "name": "Opening hours",
            "key": "opening_hours",
            "attributes": [
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "openingHoursSpecification"
                }
            ]
        },
        {
            "name": "Images",
            "key": "images",
            "attributes": [
                {
                    "name": "dentist.image.logo",
                    "label": "Logo",
                    "description": "The address of the practice logo, when one is stated. A missing address is omitted.",
                    "data_type": "url",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "logo"
                },
                {
                    "name": "dentist.image.main",
                    "label": "Main image",
                    "description": "The address of the main image of the practice, when one is stated. A count of photographs is not an image. A missing address is omitted.",
                    "data_type": "url",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "image",
                    "component": "https://schema.org.uk/schemas/components/image"
                }
            ]
        },
        {
            "name": "Reputation",
            "key": "review_statistics",
            "attributes": [
                {
                    "name": "dentist.review.rating",
                    "label": "Review rating",
                    "description": "A review score from one provider. It is not a clinical rating. 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": "practice",
                    "required": false,
                    "schema_org": "ratingValue",
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "reviewCount",
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "schema_org": "ratingCount",
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "dentist.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": "practice",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                },
                {
                    "name": "dentist.review.observed_on",
                    "label": "Observation date",
                    "description": "The date on which these figures were observed, when that date is stated.",
                    "data_type": "date",
                    "scope": "practice",
                    "required": false,
                    "component": "https://schema.org.uk/schemas/components/reputation"
                }
            ]
        },
        {
            "name": "Price",
            "key": "price",
            "attributes": [
                {
                    "name": "dentist.price_range",
                    "label": "Price level",
                    "description": "A price indication using £, ££, £££, or ££££. Leave it empty when none is stated. This is not a treatment price.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "priceRange"
                }
            ]
        },
        {
            "name": "Services",
            "key": "services",
            "attributes": [
                {
                    "name": "dentist.service.emergency_appointments",
                    "label": "Emergency dental appointments",
                    "description": "Whether the practice offers emergency dental appointments. Same-day availability is a separate service. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.same_day",
                    "label": "Same-day availability",
                    "description": "Whether the practice states that an appointment is available on the same day. This is not an emergency appointment. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.routine_checkups",
                    "label": "Routine dental check-ups",
                    "description": "Whether the practice offers routine dental check-ups. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.fillings",
                    "label": "Dental fillings",
                    "description": "Whether the practice offers dental fillings. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.hygiene",
                    "label": "Dental hygiene",
                    "description": "Whether the practice offers dental hygiene, including scale and polish and teeth cleaning. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.extraction",
                    "label": "Tooth extraction",
                    "description": "Whether the practice offers routine tooth extraction. Wisdom-tooth extraction is a separate service. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.wisdom_tooth_extraction",
                    "label": "Wisdom-tooth extraction",
                    "description": "Whether the practice offers wisdom-tooth extraction. This is not a routine extraction. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.crowns",
                    "label": "Crowns",
                    "description": "Whether the practice offers crowns. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.x_rays",
                    "label": "Dental X-rays",
                    "description": "Whether the practice offers dental X-rays. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.implants",
                    "label": "Dental implants",
                    "description": "Whether the practice offers dental implants. Bone grafting is a separate service. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.bone_grafting",
                    "label": "Bone grafting",
                    "description": "Whether the practice offers bone grafting. This is not a dental implant. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.root_canal",
                    "label": "Root canal treatment",
                    "description": "Whether the practice offers root canal treatment. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.dentures",
                    "label": "Dentures",
                    "description": "Whether the practice offers dentures. Impressions for dentures are part of this service. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.invisalign",
                    "label": "Invisalign",
                    "description": "Whether the practice offers Invisalign clear aligners. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.orthodontics",
                    "label": "Orthodontic treatment",
                    "description": "Whether the practice offers orthodontic treatment. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.bridges",
                    "label": "Dental bridges",
                    "description": "Whether the practice offers dental bridges. Bridge repair is part of this service. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.whitening",
                    "label": "Teeth whitening",
                    "description": "Whether the practice offers teeth whitening. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.sedation",
                    "label": "Sedation dentistry",
                    "description": "Whether the practice offers sedation dentistry. Record this when the practice states it. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.repairs",
                    "label": "Dental repairs",
                    "description": "Whether the practice offers repairs to broken or chipped teeth. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.composite_bonding",
                    "label": "Composite bonding",
                    "description": "Whether the practice offers composite bonding. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.veneers",
                    "label": "Veneers",
                    "description": "Whether the practice offers veneers. Dental inlays are a separate service. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.inlays",
                    "label": "Dental inlays",
                    "description": "Whether the practice offers dental inlays. This is not a veneer. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.cosmetic",
                    "label": "Cosmetic dentistry",
                    "description": "Whether the practice offers cosmetic dentistry. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                },
                {
                    "name": "dentist.service.facial_aesthetics",
                    "label": "Botox and facial aesthetics",
                    "description": "Whether the practice offers Botox and facial aesthetics, including dermal fillers. 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": "practice",
                    "required": false,
                    "schema_org": "Service"
                }
            ]
        },
        {
            "name": "Amenities",
            "key": "amenities",
            "attributes": [
                {
                    "name": "dentist.amenity.free_parking",
                    "label": "Free parking",
                    "description": "Whether the practice has free parking. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "amenityFeature"
                },
                {
                    "name": "dentist.amenity.wheelchair_access",
                    "label": "Wheelchair access",
                    "description": "Whether the practice has wheelchair access. A missing value is unknown, not absent.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "amenityFeature"
                }
            ]
        },
        {
            "name": "Practice",
            "key": "practice",
            "attributes": [
                {
                    "name": "dentist.practice.funding",
                    "label": "NHS / private treatment offered",
                    "description": "Whether the practice offers NHS treatment, private treatment, or both. The values are NHS only, Private only, and NHS and private. Record this from the practice or the NHS directory. A missing value is unknown. When a value is stated, JSON-LD uses a PropertyValue named funding. Schema.org healthPlanNetworkId identifies a plan network, so it is not used here.",
                    "data_type": "text",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.anxious_patients",
                    "label": "Support for anxious patients",
                    "description": "Whether the practice offers support for anxious patients. This is not a treatment. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named anxiousPatients.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.children_welcome",
                    "label": "Children welcome",
                    "description": "Whether children are welcome. A children's check-up is a service and is not recorded by this field. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named childrenWelcome.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.accepting_new_patients",
                    "label": "Accepting new patients",
                    "description": "Whether the practice is accepting new patients. Record this from the practice or the NHS directory. A missing value is unknown, not false.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "isAcceptingNewPatients"
                },
                {
                    "name": "dentist.practice.accepting_new_patients_observed_on",
                    "label": "New-patient observation date",
                    "description": "The date on which new-patient availability was observed. A missing date does not mean the practice is accepting patients. When a date is stated, JSON-LD uses a PropertyValue named acceptingNewPatientsObserved.",
                    "data_type": "date",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.written_treatment_plan",
                    "label": "Written treatment plan with costs",
                    "description": "Whether the practice provides a written treatment plan that includes costs. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named writtenTreatmentPlan.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.free_consultation",
                    "label": "Free consultation",
                    "description": "Whether the practice offers a free consultation. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named freeConsultation.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.walk_in",
                    "label": "Walk-in patients",
                    "description": "Whether the practice accepts walk-in patients. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named walkIn.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.deposit",
                    "label": "Deposit",
                    "description": "Whether the practice requires a deposit. A booking fee, a missed-appointment fee, and a registration fee are separate fields. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named deposit.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.booking_fee",
                    "label": "Booking fee",
                    "description": "Whether the practice charges a booking fee. This is not a deposit. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named bookingFee.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.missed_appointment_fee",
                    "label": "Missed-appointment fee",
                    "description": "Whether the practice charges a fee for a missed appointment. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named missedAppointmentFee.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.registration_fee",
                    "label": "Registration fee",
                    "description": "Whether the practice charges a registration fee. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named registrationFee.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "required": false,
                    "schema_org": "additionalProperty"
                },
                {
                    "name": "dentist.practice.online_booking",
                    "label": "Online booking",
                    "description": "Whether the practice offers online booking. This is not an offer and not a price. A missing value is unknown, not absent. When a value is stated, JSON-LD uses a PropertyValue named onlineBooking.",
                    "data_type": "boolean",
                    "scope": "practice",
                    "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"
            ]
        }
    ]
}
