Xác định mối quan hệ giữa các loại thực thể

Một số loại thực thể yêu cầu bạn thiết lập mối quan hệ giữa nội dung trong nguồn cấp dữ liệu. Thông tin này giúp Google hiển thị thứ tự và cấu trúc nội dung phù hợp cho người dùng, đồng thời xác định nội dung chính xác khi cụm từ tìm kiếm của người dùng không rõ ràng.

Chọn loại nội dung mà bạn cung cấp:

Nếu là nhà cung cấp chương trình truyền hình, bạn cần thêm các loại thực thể TVEpisode, TVSeasonTVSeries vào nguồn cấp dữ liệu danh mục nội dung nghe nhìn. Bạn có thể tìm thấy định nghĩa cho các thực thể này trong phần Tìm hiểu các loại thực thể hiện có bằng cách lọc theo các loại này.

Xác định mối quan hệ

Đảm bảo thiết lập các mối quan hệ sau đây giữa các thành phần:

Hình: Thuộc tính partOfSeriespartOfSeason kết nối các loại thực thể chương trình truyền hình với nhau.
  • Thực thể TVEpisode yêu cầu bạn cung cấp thuộc tính partOfSeries. Thuộc tính này chỉ định @idname của thực thể TVSeries của tập.

    "partOfSeries": {
      "@type": "TVSeries",
      "@id": "http://www.example.com/my_favorite_tv_show",
      "name": "My Favorite TV Show",
    },
    
  • Nếu nguồn cấp dữ liệu của bạn chứa các phần của chương trình truyền hình, thì thực thể TVSeason cũng yêu cầu bạn chỉ định thực thể TVSeries trong thuộc tính partOfSeries.

  • Thực thể TVEpisode yêu cầu bạn cung cấp thuộc tính partOfSeason. Thuộc tính này chỉ định @idseasonNumber của thực thể TVSeason của tập.

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

    Nếu một thực thể TVEpisode không có thực thể TVSeason tương ứng trong nguồn cấp dữ liệu, hãy làm theo các bước sau để cung cấp thuộc tính partOfSeason.@idpartOfSeason.seasonNumber cho thực thể TVEpisode:

    • Lấy partofSeries.@id và đính kèm trường truy vấn phần giữ chỗ (ví dụ: ?season1) để tạo một partOfSeason.@id duy nhất (ví dụ: http://www.example.com/my_favorite_tv_show?season1).
    • Đặt partOfSeason.seasonNumber thành 1.
    Sau đó, nếu quyết định cung cấp các phần trong chương trình truyền hình trong nguồn cấp dữ liệu, bạn có thể sử dụng lại partOfSeason.@id hiện có cho thực thể TVSeason tương ứng hoặc thay thế phần giữ chỗ partOfSeason.@id này bằng @id thực tế của thực thể TVSeason.

Ví dụ:

Chương trình truyền hình yêu thích của tôi

{
  "@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":{  },
  ...
}

Chương trình truyền hình yêu thích của tôi (phần 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":{  },
  ...
}

Tập 3 của Chương trình truyền hình yêu thích của tôi (phần 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":{  },
  ...
}

Nếu là nhà cung cấp đài phát thanh, bạn cần thêm loại thực thể RadioBroadcastService vào nguồn cấp dữ liệu danh mục nội dung nghe nhìn. Bạn có thể tìm thấy định nghĩa cho các thực thể này trong phần Tìm hiểu các loại thực thể hiện có bằng cách lọc theo loại này.

Xác định mối quan hệ

Vì chỉ có một loại thực thể cho các hoạt động tích hợp như vậy, trong khi không cần thiết lập mối quan hệ rõ ràng, hãy đảm bảo bạn thu thập những thông tin sau đây cho các thực thể RadioBroadcastService:

  • description: Nội dung mô tả về đài phát thanh.
  • broadcastDisplayName: Tên hiển thị của đài phát thanh.
  • areaServed: Khu vực có đài phát thanh.
  • callSign: Ký hiệu gọi chính thức do chính phủ cấp cho đài phát thanh. Đối với các đài phát thanh ở Bắc Mỹ, thuộc tính này là bắt buộc.
  • broadcastFrequency: Thông số kỹ thuật tần số của đài phát thanh.
    • Đối với đài phát thanh AM/FM truyền thống, bạn phải cung cấp thuộc tính này.
    • Đối với nội dung chỉ phát trực tuyến, giá trị này được đặt thành INTERNET_STREAM.
  • broadcastAffiliateOf: Mạng mà đài phát thanh này cung cấp chương trình. Nếu đài phát thanh không thuộc bất kỳ tổ chức liên kết nào, thì bạn không bắt buộc phải thêm thuộc tính này.
  • broadcaster: Tổ chức sở hữu và điều hành đài phát thanh.
  • parentService: Đài phát thanh mẹ. Nếu đài phát thanh là đài phát lại hoặc đài phát sóng của một đài phát thanh khác, thì bạn bắt buộc phải cung cấp thuộc tính này.

Ví dụ:

{
  "@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": {  },
  
}

Nếu là nhà cung cấp nhạc, bạn cần thêm các loại thực thể MusicGroup, MusicAlbumMusicRecording vào nguồn cấp dữ liệu danh mục nội dung nghe nhìn. Bạn có thể tìm thấy định nghĩa cho các thực thể này trong phần Tìm hiểu các loại thực thể hiện có bằng cách lọc theo các loại này.

MusicGroup, MusicAlbumMusicRecording cho phép ứng dụng hoặc nền tảng của bạn phát thêm nội dung từ danh sách phát (MusicPlaylist) sau khi phát hết nội dung từ thực thể hạt giống. Hãy xem xét trường hợp sau:

  • Thực thể MusicAlbum chứa danh sách bài hát trong Album XYZ (thực thể hạt giống).
  • Thực thể MusicPlaylist chứa danh sách phát gồm các bài hát tương tự như các bài hát trong Album XYZ.
  • Thực thể MusicAlbum bao gồm thực thể MusicPlaylist dưới dạng Thao tác được tạo bằng thực thể.

Trong chế độ thiết lập này, sau khi phát hết tất cả các bài hát trong Đĩa nhạc XYZ, ứng dụng của bạn có thể tiếp tục phát các bài hát trong danh sách phát do thực thể MusicPlaylist cung cấp.

Hành động thực thể và Hành động được tạo từ thực thể

Hành động nghe hỗ trợ hai loại Hành động:

  • Hành động liên quan đến thực thể: Phát một nghệ sĩ, đĩa nhạc hoặc bài hát cụ thể (thực thể hạt giống). Các API này bao gồm MusicGroup, MusicAlbum, MusicRecording.
  • Hành động bắt nguồn từ thực thể: Phát nội dung tương tự như thực thể ban đầu. Bao gồm MusicPlaylist.
    • Sau khi hoàn tất một Hành động liên quan đến thực thể, ứng dụng hoặc nền tảng của bạn có thể bắt đầu một Hành động do thực thể tạo.
    • Hành động được tạo từ thực thể có thể bao gồm việc phát nội dung từ thực thể ban đầu.

Bạn nên đưa một Hành động được tạo bằng thực thể vào mỗi Hành động thực thể.

Xác định mối quan hệ

  • Đối với MusicGroup, nếu bạn cung cấp Hành động do thực thể tạo, hãy xác định @idname của MusicPlaylist.
  • Đối với MusicAlbumMusicRecording, bạn cần xác định MusicGroup mà chúng thuộc về.
    • Xác định @idname của MusicGroup.
    • Nếu bạn cung cấp một Hành động do thực thể tạo, hãy xác định @idname của MusicPlaylist.
  • Đối với MusicPlaylist,
    • Xác định genre thể hiện nội dung trong danh sách phát một cách phù hợp nhất (nếu có).
    • Nếu danh sách phát được tuyển chọn thủ công, hãy xác định numTracks.
      • Việc không có numTracks cho Google biết rằng danh sách phát đó là danh sách phát vô tận được tạo tự động.

Ví dụ:

  • Nghệ sĩ: Nghệ sĩ tôi yêu thích
{
  "@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":{  },
  },
  ...
}
  • Album: Album yêu thích của tôi
  • Nghệ sĩ: Nghệ sĩ tôi yêu thích
{
  "@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":{  },
  },
  ...
}
  • Bài hát: My Favorite Song
  • Nghệ sĩ: Nghệ sĩ tôi yêu thích
{
  "@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":{  },
  },
  ...
}
  • Danh sách phát tuỳ chỉnh: "Các bài hát pop hàng đầu của thập niên 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":{  },
  ...
}

Nếu là nhà cung cấp nội dung truyền hình trực tiếp, bạn cần thêm các loại thực thể Organization, BroadcastService, CableOrSatelliteServiceTelevisionChannel vào nguồn cấp dữ liệu danh mục nội dung nghe nhìn để thể hiện danh sách chương trình của kênh. Bạn cũng có thể cần cung cấp các thực thể BroadcastEvent, TVSeries, TVEpisode, MovieSportsEvent để biểu thị EPG (hướng dẫn chương trình điện tử) được liên kết. Bạn có thể tìm thấy định nghĩa cho các thực thể này trong phần Tìm hiểu các loại thực thể hiện có bằng cách lọc theo các loại này. Để biết thêm thông tin giải thích chi tiết, bạn có thể truy cập vào trang Kênh truyền hình trực tiếp.

Mối quan hệ giữa các thực thể đại diện cho kênh Truyền hình trực tiếp

Hình dưới đây cho thấy mối quan hệ giữa các thực thể Organization, BroadcastService, CableOrSatelliteServiceTelevisionChannel:

Đường liên kết giữa các loại thực thể kênh Truyền hình trực tiếp
Hình: Các mối liên kết giữa các loại thực thể kênh Truyền hình trực tiếp.

  • Thực thể Organization (toán tử) đại diện cho nhà cung cấp nguồn cấp dữ liệu và cũng là tổ chức mẹ của dịch vụ CableOrSatelliteService được kết nối bằng thuộc tính provider trên thực thể CableOrSatelliteService.
  • Các thực thể Organization tương ứng với các thực thể BroadcastService được kết nối bằng thuộc tính broadcastAffiliateOf trên thực thể BroadcastService.
  • Các thực thể TelevisionChannel kết nối với thực thể CableOrSatelliteService, đại diện cho đội hình mà các thực thể đó thuộc về, bằng cách sử dụng thuộc tính inBroadcastLineup.
  • Các thực thể TelevisionChannel kết nối với thực thể BroadcastService (có chương trình do kênh này cung cấp) bằng cách sử dụng thuộc tính providesBroadcastService.

Bạn nên tham khảo trang khái niệm về Kênh truyền hình trực tiếp để xem các ví dụ cụ thể về cách thiết lập mối quan hệ giữa các thực thể BroadcastService và Organization.

Mối quan hệ giữa các kênh và hướng dẫn chương trình (EPG) của kênh

Hình dưới đây cho thấy cách thực thể BroadcastEvent liên kết với các thực thể còn lại trong nguồn cấp dữ liệu.

Đường liên kết giữa các loại thực thể sự kiện Truyền hình trực tiếp
Hình: Các mối liên kết giữa các loại thực thể sự kiện Truyền hình trực tiếp.

  • Các thực thể BroadcastEvent, đại diện cho hướng dẫn lập trình (EPG) của BroadcastService, được kết nối với các thực thể BroadcastService bằng cách sử dụng thuộc tính publishedOn trên thực thể BroadcastEvent.
  • Bạn cũng có thể kết nối các thực thể BroadcastEvent với các thực thể TVEpisode, TVSeries, Movie cấp cao nhất bằng thuộc tính workPerformed.
  • Bạn cũng có thể kết nối các thực thể BroadcastEvent với các thực thể SportsEvent cấp cao nhất bằng thuộc tính broadcastOfEvent.
  • Đối với các sự kiện không có kênh được phát trực tuyến, các thực thể BroadcastEvent sẽ kết nối với thực thể đại diện cho sự kiện phát trực tiếp bằng cách sử dụng thuộc tính workPerformed hoặc broadcastOfEvent tuỳ thuộc vào nội dung đang được phát trực tiếp. Trong những trường hợp như vậy, bạn không bắt buộc phải sử dụng thuộc tính publishedOn vì không cần kết nối với kênh.

Ví dụ

Phần sau đây cung cấp ví dụ và đoạn mã cho nhiều trường hợp sử dụng Hành động trong video.

Nhà cung cấp dịch vụ truyền hình quốc gia trên Internet

Một nhà cung cấp dịch vụ truyền hình qua giao thức Internet (IPTV) hư cấu, Dịch vụ kỹ thuật số ExampleTV (Organization), cung cấp dịch vụ Truyền hình trực tiếp trên Internet, trong đó có hai kênh sau: ExampleTV-Movie (Organization) và 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"
}

Hai thực thể BroadcastService này cung cấp thông tin chi tiết về đường liên kết sâu và yêu cầu truy cập cho các kênh hư cấu ExampleTV-MovieExampleTV-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"
    }
  ]
}

CableOrSatelliteService này mô tả nhà cung cấp dịch vụ Dịch vụ kỹ thuật số ExampleTV có phạm vi cung cấp trên toàn quốc:

{
  "@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",
    }
  ]
}

Các thực thể TelevisionChannel này cho biết rằng IPTV Dịch vụ kỹ thuật số ExampleTV có chương trình Phim ExampleTV trên kênh ExTV-Movie và chương trình Hài ExampleTV trên kênh 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"
  }
}

Hãy xem phần Ví dụ về truyền hình trực tiếp để biết thêm ví dụ.

Phát sóng một bộ phim trên kênh truyền hình

Một bộ phim được phát sóng trên mạng truyền hình Example TV (BroadcastService) từ 5 giờ chiều đến 7 giờ tối vào ngày 12 tháng 7 năm 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"
    }
  ]
}

Hãy xem phần Ví dụ về sự kiện truyền hình trực tiếp để biết thêm ví dụ.

Trận đấu thể thao trực tiếp được phát trực tuyến


{
  "@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"
    }
  ]
}

Hãy xem phần Ví dụ về thể thao để biết thêm ví dụ.