{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schema:SportsEvent",
  "title": "SportsEvent",
  "description": "Event type: Sports event.",
  "type": "object",
  "allOf": [
    {
      "description": "An event happening at a certain time and location, such as a concert, lecture, or festival. Ticketing information may be added via the [[offers]] property. Repeated events may be structured as separate Event objects.",
      "$ref": "schema:Event"
    }
  ],
  "properties": {
    "awayTeam": {
      "description": "The away team in a sports event.",
      "anyOf": [{ "$ref": "schema:Person" }, { "$ref": "schema:SportsTeam" }]
    },
    "competitor": {
      "description": "A competitor in a sports event.",
      "oneOf": [
        {
          "anyOf": [
            { "$ref": "schema:Person" },
            { "$ref": "schema:SportsTeam" }
          ]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "$ref": "schema:Person" },
              { "$ref": "schema:SportsTeam" }
            ]
          }
        }
      ]
    },
    "homeTeam": {
      "description": "The home team in a sports event.",
      "anyOf": [{ "$ref": "schema:Person" }, { "$ref": "schema:SportsTeam" }]
    },
    "referee": {
      "description": "An official who watches a game or match closely to enforce the rules and arbitrate on matters arising from the play such as referees, umpires or judges. The name of the effective function can vary according to the sport.",
      "oneOf": [
        { "$ref": "schema:Person" },
        { "type": "array", "items": { "$ref": "schema:Person" } }
      ]
    },
    "sport": {
      "description": "A type of sport (e.g. Baseball).",
      "oneOf": [
        {
          "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "type": "string", "format": "uri" },
              { "type": "string" }
            ]
          }
        }
      ]
    }
  }
}
