Identifier la relation entre les types d'entités

Pour certains types d'entités, vous devez établir la relation entre les contenus de votre flux. Ces informations aident Google à afficher la bonne structure et l'ordre appropriés de vos contenus auprès des utilisateurs, et à identifier le bon contenu lorsqu'une requête est ambiguë.

Sélectionnez le type de contenu que vous fournissez:

If you're a TV show provider, you need to add the TVEpisode, TVSeason, and TVSeries entity types in your media catalog feed. You can find the definitions for these entities in the Understand the available entity types section by filtering for these types.

Identify the relationships

Ensure the following relationships are established among them:

Figure: The partOfSeries and partOfSeason properties connect the TV show entity types together.
  • A TVEpisode entity requires you to provide the partOfSeries property, which specifies the @id and name of the episode's TVSeries entity.

    "partOfSeries": {
      "@type": "TVSeries",
      "@id": "http://www.example.com/my_favorite_tv_show",
      "name": "My Favorite TV Show",
    },
    
  • If your feed contains TV seasons, a TVSeason entity also requires you to specify its TVSeries entity in the partOfSeries property.

  • A TVEpisode entity requires you to provide the partOfSeason property, which specifies the @id and seasonNumber of the episode's TVSeason entity.

    "partOfSeason": {
      "@type": "TVSeason",
      "@id": "http://www.example.com/my_favorite_tv_show/s7",
      "seasonNumber": 7
    },
    

    If a TVEpisode entity doesn't have a corresponding TVSeason entity in the feed, take the following steps to provide the partOfSeason.@id and partOfSeason.seasonNumber properties for the TVEpisode entity:

    • Take its partofSeries.@id and attach a placeholder query field (for example, ?season1) to create a unique partOfSeason.@id (for example, http://www.example.com/my_favorite_tv_show?season1).
    • Set partOfSeason.seasonNumber to 1.
    Later, if you decide to provide TV seasons in the feed, you can either reuse the existing partOfSeason.@id for the corresponding TVSeason entity or replace this placeholder partOfSeason.@id with the actual @id of the TVSeason entity.

Example

My Favorite TV Show

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "TVSeries",
  "@id": "http://www.example.com/my_favorite_tv_show",
  "url": "http://www.example.com/my_favorite_tv_show",
  "name": "My Favorite TV Show",
  "potentialAction":{  },
  ...
}

My Favorite TV Show (season 7)

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "TVSeason",
  "@id": "http://www.example.com/my_favorite_tv_show/s7",
  "url": "http://www.example.com/my_favorite_tv_show/s7",
  "name": "My Favorite TV Show, Season 7",
  "seasonNumber": 7,
  "partOfSeries": {
    "@type": "TVSeries",
    "@id": "http://www.example.com/my_favorite_tv_show",
    "name": "My Favorite TV Show",
  },
  "potentialAction":{  },
  ...
}

Episode 3 of My Favorite TV Show (season 7)

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "TVEpisode",
  "@id": "http://www.example.com/my_favorite_tv_show/s7/e3",
  "url": "http://www.example.com/my_favorite_tv_show/s7/e3",
  "name": "John Doe returns at night",
  "episodeNumber": 3,
  "partOfSeason": {
    "@type": "TVSeason",
    "@id": "http://www.example.com/my_favorite_tv_show/s7",
    "seasonNumber": 7
  },
  "partOfSeries": {
    "@type": "TVSeries",
    "@id": "http://www.example.com/my_favorite_tv_show",
    "name": "My Favorite TV Show",
  },
  "potentialAction":{  },
  ...
}

如果您是广播电台提供商,则需要在媒体目录 Feed 中添加 RadioBroadcastService 实体类型。您可以通过在了解可用的实体类型部分中过滤此类型,找到这些实体的定义。

确定关系

由于此类集成只有一种实体类型,并且不需要建立任何显式关系,因此请务必为 RadioBroadcastService 实体收集以下信息:

  • description:电台的说明。
  • broadcastDisplayName:电台的显示名称。
  • areaServed:电台的服务区域。
  • callSign:政府签发的无线电台官方呼号。对于北美洲的广播电台,此属性为必需属性。
  • broadcastFrequency:电台的频率规范。
    • 对于地面 AM/FM 电台,此属性为必填属性。
    • 对于仅限在线播放的内容,此值设为 INTERNET_STREAM
  • broadcastAffiliateOf:此电台提供节目的网络。如果相应电台不属于任何联属机构,则无需此属性。
  • broadcaster:拥有和运营相应电台的组织。
  • parentService:父级电台。如果电台是其他电台的转播器或转换器,则必须提供此属性。

示例

{
  "@context": "http://schema.googleapis.com",
  "@type": "RadioBroadcastService",
  "@id": "https://www.example.com/stations?id=1",
  "url": "https://www.example.com/stations?id=1",
  "name": "KABC",
  "callSign": "KABC-FM",
  "broadcastDisplayName": "KABC",
  "description": "Local News & Information",
  "broadcastFrequency": {
    "@type": "BroadcastFrequencySpecification",
    "broadcastFrequencyValue": "89.5",
    "broadcastSignalModulation": "FM",
    "broadcastSubChannel": "HD1"
  },
  "areaServed": {
    "@type": "City",
    "name": "San Francisco, CA"
  },
  "broadcastAffiliateOf": [
    {
      "@id": "https://www.example.com/networks/xyz",
      "@type": "Organization",
      "name": "XYZ",
      "sameAs": "https://en.wikipedia.org/wiki/XYZ"
    },
    {
      "@id": "https://www.example.com/networks/efg",
      "@type": "Organization",
      "name": "EFG",
      "sameAs": "https://www.example.com/"
    }
  ],
  "broadcaster": [
    {
      "@type": "Organization",
      "name": "California Local Public Broadcasting",
      "sameAs": "https://www.example.org/w/clpb/"
    },
    {
      "@type": "Organization",
      "sameAs": "https://www.example.org/kabc",
      "name": "KABC Inc"
    }
  ],
  "potentialAction": {  },
  
}

Musique

如果您是音乐提供商,则需要在媒体目录 Feed 中添加 MusicGroupMusicAlbumMusicRecording 实体类型。您可以通过在了解可用的实体类型部分中过滤出这些类型,找到这些实体的定义。

MusicGroupMusicAlbumMusicRecording 可让您的应用或平台在播放种子实体中的所有内容后,播放播放列表 (MusicPlaylist) 中的更多内容。请查看以下场景:

  • MusicAlbum 实体包含专辑 XYZ(种子实体)中的歌曲列表。
  • MusicPlaylist 实体包含与专辑 XYZ 中的歌曲类似的歌曲播放列表。
  • MusicAlbum 实体将 MusicPlaylist 实体作为实体启动的操作包含在内。

在这种设置下,播放 Album XYZ 中的所有歌曲后,您的应用可以继续播放 MusicPlaylist 实体提供的播放列表中的歌曲。

实体操作和实体启动的操作

聆听 Action 支持两种类型的 Action:

  • 实体操作:播放特定音乐人、专辑或歌曲(种子实体)。包括 MusicGroupMusicAlbumMusicRecording
  • 以实体为种子的 Action:播放与种子实体类似的内容。其中包括 MusicPlaylist
    • 完成实体操作后,您的应用或平台可能会发起实体启动的操作。
    • 以实体为种子的 Action 可以包含播放种子实体中内容的操作。

我们建议您在每个实体操作中添加实体种子操作。

  • 对于 MusicGroup,如果您提供实体启动的 Action,请标识其 MusicPlaylist@idname
  • 对于 MusicAlbumMusicRecording,您需要确定它们属于哪个 MusicGroup
    • 确定其 MusicGroup@idname
    • 如果您提供的是实体启动的 Action,请指明其 MusicPlaylist@idname
  • 对于 MusicPlaylist
    • 请指明最能代表播放列表中内容的 genre(如果适用)。
    • 如果播放列表是手动挑选的,请标识 numTracks
      • 如果没有 numTracks,则表示播放列表是自动生成的无限播放列表。
  • 音乐人:我最喜欢的音乐人
{
  "@context":"http://schema.googleapis.com/",
  "@type":"MusicGroup",
  "@id":"http://www.example.com/artist/my_favorite_artist/",
  "url":"http://www.example.com/artist/my_favorite_artist/",
  "name":"My Favorite Artist",
  "potentialAction":{  },
  "subjectOf": {
    "@type":"MusicPlaylist",
    "@id":"http://www.example.com/artist_mix/my_favorite_artist/",
    "url":"http://www.example.com/artist_mix/my_favorite_artist/",
    "name":"My Favorite Artist Mix",
    "potentialAction":{  },
  },
  ...
}
  • 专辑:我最喜欢的专辑
  • 音乐人:我最喜欢的音乐人
{
  "@context":"http://schema.googleapis.com/",
  "@type":"MusicAlbum",
  "@id":"http://www.example.com/album/my_favorite_album",
  "url":"http://www.example.com/album/my_favorite_album",
  "name":"My Favorite Album",
  "byArtist":{
    "@type":"MusicGroup",
    "@id": "http://www.example.com/artist/my_favorite_artist/",
    "name":"My Favorite Artist"
  },
  "potentialAction":{  },
  "subjectOf": {
    "@type":"MusicPlaylist",
    "@id":"http://www.example.com/album_mix/my_favorite_album",
    "url":"http://www.example.com/album_mix/my_favorite_album",
    "name":"My Favorite Album Mix",
    "potentialAction":{  },
  },
  ...
}
  • 歌曲:我喜爱的歌曲
  • 音乐人:我最喜欢的音乐人
{
  "@context":"http://schema.googleapis.com/",
  "@type":"MusicRecording",
  "@id":"http://www.example.com/track/my_favorite_song",
  "url":"http://www.example.com/track/my_favorite_song",
  "name":"My Favorite Song",
  "byArtist":{
    "@type":"MusicGroup",
    "@id": "http://www.example.com/artist/my_favorite_artist/",
    "name":"My Favorite Artist"
  },
  "potentialAction":{  },
  "subjectOf": {
    "@type":"MusicPlaylist",
    "@id":"http://www.example.com/track_mix/my_favorite_song",
    "url":"http://www.example.com/track_mix/my_favorite_song",
    "name":"My Favorite Song Mix",
    "potentialAction":{  },
  },
  ...
}
  • 自定义播放列表:“2010 年代热门流行歌曲”
{
  "@context":"http://schema.googleapis.com/",
  "@type":"MusicPlaylist",
  "@id":"http://www.example.com/playlist/top_pop_songs/",
  "url":"http://www.example.com/playlist/top_pop_songs/",
  "name":"Top Pop Songs of the 2010s",
  "genre": [
     "pop",
     "2010s"
  ],
  "numTracks":"46",
  "potentialAction":{  },
  ...
}

If you're a Live TV provider, you need to add the Organization, BroadcastService, CableOrSatelliteService, and TelevisionChannel entity types in your media catalog feed to represent your channel lineup. You may also need to provide the BroadcastEvent, TVSeries, TVEpisode, Movie, and SportsEvent entities to represent the associated EPG (electornic programming guide). You can find the definitions for these entities in the Understand the available entity types section by filtering for these types. For a more detailed explanation, you can visit the Live TV Channels page.

Relationships between entities representing Live TV channels

The figure below shows how the Organization, BroadcastService, CableOrSatelliteService, and TelevisionChannel entities are related:

The links between the Live TV channel entity types
Figure: The links between the Live TV channel entity types.

  • Organization (operator) entity representing the feed provider and also the parent organization of CableOrSatelliteService service are connected using the provider property on the CableOrSatelliteService entity.
  • Organization entities corresponding to the BroadcastService entities are connected using the broadcastAffiliateOf property on the BroadcastService entity.
  • TelevisionChannel entities connect with the CableOrSatelliteService entity, that represents the lineup they belong to, using the inBroadcastLineup property.
  • TelevisionChannel entities connect with the BroadcastService entity, whose programming this channel provides, using the providesBroadcastService property.

It is highly recommended to go through the Live TV channels concept page for concrete examples of how the relationship between the BroadcastService and Organization entities needs to be established.

Relationships between channels and their programming guide (EPG)

The figure below shows how the BroadcastEvent entity links to the rest of the entities in the feed.

The links between the Live TV event entity types
Figure: The links between the Live TV event entity types.

  • BroadcastEvent entities, representing the programming guide (EPG) of a BroadcastService, are connected with the BroadcastService entities using the publishedOn property on the BroadcastEvent entity.
  • BroadcastEvent entities can also be connected to top level TVEpisode, TVSeries, Movie entities using the workPerformed property.
  • BroadcastEvent entities can also be connected to top level SportsEvent entities using the broadcastOfEvent property.
  • For channel-less events streamed online, theBroadcastEvent entities connect with the entity representing the live event using either the workPerformed or broadcastOfEvent property depending on what is being live streamed. In such cases, the publishedOn property is not required since the connection to a channel is not required.

Examples

The following section provides examples and snippet for various Watch Action use cases.

National TV service provider on the internet

A fictional Internet Protocol Television service provider, ExampleTV Digital Service (Organization), provides Live TV service on the Internet, which contains the following two channels: ExampleTV-Movie (Organization) and ExampleTV-Comedy (Organization):

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"Organization",
  "@id":"http://example.com/exampletv/digital",
  "name":"ExampleTV Digital Service",
  "sameAs": "https://en.wikipedia.org/wiki/exampletv_digital_service"
},
{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"Organization",
  "@id":"http://example.com/exampletv/movie",
  "name":"ExampleTV Movie",
  "sameAs": "https://en.wikipedia.org/wiki/exampletv_movie"
},
{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"Organization",
  "@id":"http://example.com/exampletv/comedy",
  "name":"ExampleTV Comedy",
  "sameAs": "https://en.wikipedia.org/wiki/exampletv_comedy"
}

These two BroadcastService entities provide the details of deep links and access requirement for the fictional channels ExampleTV-Movie and ExampleTV-Comedy:

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"BroadcastService",
  "@id":"https://www.example.com/exampletv/broadcast/movie",
  "name": "ExampleTV-Movie",
  "alternateName": [
    "Example Television Movie",
    "Example TV Movie"
  ],
  "description": "A fictional Internet Protocol TV movie channel.",
  "broadcastDisplayName":"ExampleTV-Movie",
  "broadcastAffiliateOf":{
    "@type":"Organization",
    "@id":"http://www.example.com/exampletv/movie"
  },
  "potentialAction": {
    "@type": "WatchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "http://www.example.com/exampletv/broadcast/movie?autoplay=true",
      "inLanguage": "en",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/MobileWebPlatform",
        "http://schema.org/AndroidPlatform",
        "http://schema.org/AndroidTVPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.googleapis.com/GoogleVideoCast"
      ]
    },
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "subscription",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "@id": "http://www.example.com/exampletv/basic_subscription",
        "name": "Basic subscription",
        "identifier": "example.com:basic",
        "commonTier": true
      },
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        }
      ]
    }
  },
  "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "TMS_ID",
      "value": "12345"
    },
    {
      "@type": "PropertyValue",
      "propertyID": "_PARTNER_ID_",
      "value": "exampletv-movie-33345"
    }
  ]
},
{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"BroadcastService",
  "@id":"https://www.example.com/exampletv/broadcast/comedy",
  "name": "ExampleTV-Comedy",
  "alternateName": [
    "Example Television Comedy",
    "Example TV Comedy"
  ],
  "description": "A fictional Internet Protocol TV comedy channel.",
  "broadcastDisplayName":"ExampleTV-Comedy",
  "broadcastAffiliateOf":{
    "@type":"Organization",
    "@id":"http://www.example.com/exampletv/comedy"
  },
  "potentialAction": {
    "@type": "WatchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "http://www.example.com/exampletv/broadcast/comedy?autoplay=true",
      "inLanguage": "en",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/MobileWebPlatform",
        "http://schema.org/AndroidPlatform",
        "http://schema.org/AndroidTVPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.googleapis.com/GoogleVideoCast"
      ]
    },
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "subscription",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "@id": "http://www.example.com/exampletv/basic_subscription",
        "name": "Basic subscription",
        "identifier": "example.com:basic",
        "commonTier": true
      },
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        }
      ]
    }
  },
  "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "TMS_ID",
      "value": "15555"
    },
    {
      "@type": "PropertyValue",
      "propertyID": "_PARTNER_ID_",
      "value": "exampletv-comedy-12323"
    }
  ]
}

This CableOrSatelliteService describes the service provider ExampleTV Digital Service that has national coverage:

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"CableOrSatelliteService",
  "@id":"http://example.com/example_iptv/us",
  "name":"Example TV Digital Service - US",
  "provider": {
    "@type": "Organization",
    "@id": "http://example.com/exampletv/digital",
  },
  "areaServed":[
    {
      "@type":"Country",
      "name": "US",
    }
  ]
}

These TelevisionChannel entities indicate that ExampleTV Digital Service IPTV has the ExampleTV Movie programming on channel ExTV-Movie and the ExampleTV Comedy programming on channel ExTV-Comedy:

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"TelevisionChannel",
  "@id":"http://example.com/exampletv/extv-movie",
  "broadcastChannelId":"ExTV-Movie",
  "broadcastServiceTier":"Basic",
  "inBroadcastLineup":{
    "@type":"CableOrSatelliteService",
    "@id":"http://example.com/example_iptv/us"
  },
  "providesBroadcastService":{
    "@type":"BroadcastService",
    "@id":"https://www.example.com/exampletv/broadcast/movie"
  }
},
{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"TelevisionChannel",
  "@id":"http://example.com/exampletv/extv-comedy",
  "broadcastChannelId":"ExTV-Comedy",
  "broadcastServiceTier":"Basic",
  "inBroadcastLineup":{
    "@type":"CableOrSatelliteService",
    "@id":"http://example.com/example_iptv/us"
  },
  "providesBroadcastService":{
    "@type":"BroadcastService",
    "@id":"https://www.example.com/exampletv/broadcast/comedy"
  }
}

See the Live TV examples section for more examples.

Broadcast of a Movie on a TV channel

A movie is broadcast on the television network Example TV (BroadcastService) between 5 pm and 7 pm on July 12th, 2019.

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "BroadcastEvent",
  "@id": "http://example.com/live/movie/new_release",
  "name": "My Favorite Movie",
  "description": "John Doe spent years perfecting his survival skills in a tropical jungle.",
  "startDate": "2019-07-12T17:00-08:00",
  "endDate": "2019-07-12T19:00-08:00",
  "videoFormat": "HD",
  "isLiveBroadcast": "False",
  "publishedOn": {
    "@type": "BroadcastService",
    "@id": "http://example.com/stations/example_tv"
  },
  "workPerformed": {
    "@type": "Movie",
    "@id": "http://www.example.com/my_favorite_movie"
  }
}
{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"BroadcastService",
  "@id":"http://example.com/stations/example_tv",
  "name":"EXAMPLE-TV",
  "broadcastDisplayName":"ABCD",
  "callSign": "EXA-TV",
  "videoFormat":"SD",
  "broadcastTimezone":"America/Los_Angeles",
  "broadcastAffiliateOf":{
    "@type":"Organization",
    "@id":"http://example.com/networks/abcd-network",
  }
  "identifier": [
   {
     "@type": "PropertyValue",
     "propertyID": "TMS_ID",
     "value": "12258"
   },
   {
     "@type": "PropertyValue",
     "propertyID": "_PARTNER_ID_",
     "value": "exampletv-123456"
   }
  ],
  "potentialAction": {
    "@type": "WatchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "http://example.com/livestream",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/MobileWebPlatform",
        "http://schema.org/AndroidPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.googleapis.com/GoogleVideoCast",
        "http://schema.org/AndroidTVPlatform"
      ]
    },
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "externalsubscription",
      "availabilityStarts": "2018-07-21T10:35:29Z",
      "availabilityEnds": "2019-10-21T10:35:29Z",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "@id": "http://example.com/subscription",
        "name": "ABCD",
        "sameAs": "http://example.com/subscription",
        "authenticator": {
          "@type": "Organization",
          "name": "TVE"
        }
      },
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        }
      ]
    }
  }
}
{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "Movie",
  "@id": "http://www.example.com/my_favorite_movie",
  "url": "http://www.example.com/my_favorite_movie",
  "name": "My Favorite Movie",
  "sameAs": "https://en.wikipedia.org/wiki/my_favorite_movie",
  "releasedEvent": {
    "@type": "PublicationEvent",
    "startDate": "2008-01-20",
    "location": {
      "@type": "Country",
      "name": "US"
    }
  },
  "description": "John Doe spent years perfecting his survival skills in a tropical jungle.",
  "actor": [
    {
      "@type": "Person",
      "name": "John Doe",
      "sameAs": "https://en.wikipedia.org/wiki/John_Doe"
    },
    {
      "@type": "Person",
      "name": "Jane Doe",
      "sameAs": "https://en.wikipedia.org/wiki/Jane_Doe"
    }
  ],
  "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "IMDB_ID",
      "value":  "tt0123456"
    }
  ]
}

See the Live TV Event examples section for more examples.

A live sports game streamed online


{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "BroadcastEvent",
  "@id": "http://example.com/live_eevent/basketball/professional/final_game_6",
  "name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
  "description": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B.",
  "startDate": "2018-09-16T10:00-08:00",
  "endDate": "2018-09-16T13:00-08:00",
  "videoFormat": "HD",
  "isLiveBroadcast": "False",
  "potentialAction": {
    "@type": "WatchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "http://www.example.com/pbl_semis_game?autoplay=true",
      "inLanguage": "en",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/MobileWebPlatform",
        "http://schema.org/AndroidPlatform",
        "http://schema.org/AndroidTVPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.googleapis.com/GoogleVideoCast"
      ]
    },
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "subscription",
      "availabilityStarts": "2018-09-16T10:00-08:00",
      "availabilityEnds": "2018-09-16T10:00-08:00",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "name": "Example Package",
        "commonTier": true,
        "@id": "http://www.example.com/example_package"
      },
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        }
      ]
    }
  },
  "broadcastOfEvent": {
    "@type": "SportsEvent",
    "@id": "http://example.com/basketball/professional/final_game_6"
  }
}

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type":"SportsEvent",
  "@id": "http://example.com/basketball/professional/final_game_6",
  "name":"2019 Professional Basketball Finals, Game 6: Team A vs Team B",
  "sport":"https://en.wikipedia.org/wiki/Basketball",
  "description": {
      "@language": "en",
      "@value": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B."
    },
  "startDate": "2019-09-16T10:00-08:00",
  "endDate": "2019-09-16T13:00-08:00",
  "homeTeam":{
    "@type":"SportsTeam",
    "name":"Team B",
    "sport":"https://en.wikipedia.org/wiki/Basketball",
    "parentOrganization":{
      "@type":"SportsOrganization",
      "name":"Professional Basketball League",
      "sameAs":"http://www.example.com/professional_basketball_league"
    },
    "athlete":[
      {
        "@type":"Person",
        "name":"John doe"
      }
    ]
  },
  "awayTeam":{
    "@type":"SportsTeam",
    "name":"Team A",
    "sport":"https://en.wikipedia.org/wiki/Basketball",
    "athlete":[
      {
        "@type":"Person",
        "name":"Jane Doe"
      }
    ]
  },
  "location":{
    "@type":"Place",
    "name":"Example Stadium",
    "address":{
      "@type":"PostalAddress",
      "streetAddress":"1600 Amphitheatre Pkwy",
      "addressLocality":"Mountain View",
      "addressRegion":"CA",
      "postalCode":"94043",
      "addressCountry":"US"
    }
  },
  "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "TMS_ID",
      "value":  "TMS ID of this game"
    }
  ]
}

See the Sports examples section for more examples.