{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "name": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "startDate": {
            "oneOf": [
                {
                    "type": "string",
                    "_format": "date"
                }
            ]
        },
        "endDate": {
            "oneOf": [
                {
                    "type": "string",
                    "_format": "date"
                }
            ]
        },
        "description": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "location": {
            "oneOf": [
                {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "enum": [
                                "http://schema.org/Place",
                                "http://schema.org/PostalAddress"
                            ]
                        }
                    }
                },
                {
                    "type": "string"
                }
            ]
        },
        "contact": {
            "oneOf": [
                {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "enum": [
                                "http://schema.org/Organization",
                                "http://schema.org/Person"
                            ]
                        }
                    },
                    "required": [
                        "properties",
                        "type"
                    ]
                },
                {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string",
                                "enum": [
                                    "http://schema.org/Organization",
                                    "http://schema.org/Person"
                                ]
                            }
                        },
                        "required": [
                            "properties",
                            "type"
                        ]
                    }
                }
            ]
        },
        "hostInstitution": {
            "oneOf": [
                {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "enum": [
                                "http://schema.org/Organization"
                            ]
                        }
                    }
                },
                {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string",
                                "enum": [
                                    "http://schema.org/Organization"
                                ]
                            }
                        }
                    }
                }
            ]
        },
        "eventType": {
            "oneOf": [
                {
                    "type": "string",
                    "enum": [
                        "Workshops and courses",
                        "Meetings and conferences",
                        "Receptions and networking",
                        "Awards and prizegivings"
                    ]
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "Workshops and courses",
                            "Meetings and conferences",
                            "Receptions and networking",
                            "Awards and prizegivings"
                        ]
                    }
                }
            ]
        },
        "url": {
            "oneOf": [
                {
                    "type": "string",
                    "_format": "uri"
                }
            ]
        },
        "keywords": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "topic": {
            "oneOf": [
                {
                    "type": "string",
                    "_format": "uri"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "_format": "uri"
                    }
                }
            ]
        },
        "targetAudience": {
            "oneOf": [
                {
                    "type": "string",
                    "_format": "uri"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "_format": "uri"
                    }
                }
            ]
        },
        "programme": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "string",
                    "_format": "uri"
                }
            ]
        },
        "deadline": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "prerequisite": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "capacity": {
            "oneOf": [
                {
                    "type": "integer"
                }
            ]
        },
        "eligibility": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                {
                    "type": "string",
                    "enum": [
                        "First come first served",
                        "Registration of interest",
                        "By invitation"
                    ]
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "First come first served",
                            "Meetings and conferences",
                            "By invitation"
                        ]
                    }
                }
            ]
        },
        "alternateName": {
            "oneOf": [
                {
                    "type": "string"
                }
            ]
        },
        "accreditation": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "enum": [
                                "http://schema.org/Organization"
                            ]
                        }
                    }
                }
            ]
        }
    },
    "required": [
        "startDate",
        "endDate",
        "name",
        "description",
        "location",
        "contact",
        "hostInstitution",
        "eventType"
    ],
    "recommended": [
        "url",
        "keywords",
        "topic",
        "targetAudience",
        "programme",
        "deadline",
        "prerequisite",
        "capacity",
        "eligibility",
        "alternateName",
        "accreditation"
    ]
}