SportsEvents: modelagem, práticas recomendadas e exemplo de feed

Definição

Um SportsEvent é um tipo de entidade que representa um jogo esportivo ou uma reprise completa de um jogo esportivo.

O que pode ser modelado como um SportsEvent? Um jogo de esportes
O que não pode ser modelado como um SportsEvent?

Qualquer conteúdo de formato curto, clipe ou conteúdo extra. Confira a lista:

  • Clipes curtos de recapitulação ou repetição aleatória
  • Prévias do jogo
  • Destaques do jogo
  • Erros de gravação de jogos
  • Clipes de entrevistas com jogadores
  • Vídeos dos bastidores
  • Avaliações de jogos (geradas por usuários ou não)
  • Clipes curtos aleatórios do jogo

Como lidar com esse conteúdo extra?

Casos de uso comuns para SportsEvents

S.No. Descrição Entidades obrigatórias
Caso 1

Preciso modelar um SportsEvent que faz parte do meu catálogo de TV ao vivo e é transmitido on-line.

O jogo é transmitido pela Internet e não está vinculado a nenhum canal.

SportsEvent que representa o jogo.

BroadcastEvent, que representa a transmissão do jogo.

Caso 2 Preciso modelar um SportsEvent que faz parte do meu catálogo de TV ao vivo e é transmitido on-line em um canal.

SportsEvent que representa o jogo.

BroadcastEvent que representa a transmissão do jogo.

BroadcastService, Organization, TelevisionChannel, CableOrSatelliteService entidades que representam o canal e a programação.

Caso 3 Combinações dos dois casos anteriores. Se você combinar os casos de uso anteriores, forneça todos os tipos de entidade listados na coluna "Entidades necessárias" correspondente.

Práticas recomendadas e insights sobre algumas verificações que fazemos

As diretrizes e verificações de qualidade a seguir se aplicam ao modelar eventos esportivos e as transmissões deles.

Aplique as seguintes regras em todas as integrações do SportsEvent:

  • Coloque todos os links diretos de esportes em SportsEvent.potentialAction: os links diretos no nível do jogo (WatchAction), tanto para transmissões ao vivo sem canal quanto para replays de vídeo on demand, precisam residir exclusivamente na entidade SportsEvent (SportsEvent.potentialAction). Nunca coloque potentialAction em um BroadcastEvent que faça referência a um SportsEvent. Para transmissões de canais lineares sem um link direto específico do evento, forneça o link direto do canal em BroadcastService.potentialAction. Se um jogo tiver várias transmissões (por exemplo, feeds regionais, transmissões em casa ou fora, vários idiomas ou URLs de replay ao vivo e de vídeo on demand separados), forneça uma matriz de objetos WatchAction em SportsEvent.potentialAction.
  • Janela contínua (availabilityStarts): defina SportsEvent.potentialAction.actionAccessibilityRequirement.availabilityStarts pelo menos 14 dias antes de SportsEvent.startDate (availabilityStarts <= SportsEvent.startDate - 14 days) para que os blocos de jogos futuros e as notificações de sintonização apareçam com antecedência. Não é necessário enviar a entidade do feed com 14 dias de antecedência. Os dados de eventos podem ser enviados mais perto do dia do jogo, desde que a marcação de tempo availabilityStarts seja definida pelo menos 14 dias antes de SportsEvent.startDate.
  • Buffer de prorrogação (availabilityEnds): defina SportsEvent.potentialAction.actionAccessibilityRequirement.availabilityEnds depois de SportsEvent.endDate com um buffer de pelo menos 2 a 3 horas (availabilityEnds >= SportsEvent.endDate + 2 to 3 hours ou até o fim da janela de repetição do vídeo on demand) para que o link direto não expire durante prorrogações ao vivo ou cobertura pós-jogo.
  • Requisitos de @id e url:
    • Use valores @id distintos: BroadcastEvent.@id precisa ser diferente de SportsEvent.@id.
    • Omitir url: não inclua uma propriedade url em entidades BroadcastEvent ou SportsEvent.
S.No. Entidades obrigatórias Diretrizes
Caso 1

Preciso modelar um SportsEvent que faz parte do meu catálogo de TV ao vivo e é transmitido on-line.

O jogo é transmitido pela Internet e não está vinculado a nenhum canal.

Entidades obrigatórias

  • SportsEvent que representa o jogo
  • BroadcastEvent que representa a transmissão do jogo

Diretrizes de modelagem

Subcaso 1: o jogo está disponível apenas ao vivo (e não como parte do catálogo de vídeo on demand)

  • Forneça a entidade BroadcastEvent para compartilhar a programação da transmissão, referenciando o jogo com BroadcastEvent.broadcastOfEvent e especificando o país de transmissão em BroadcastEvent.location.
  • Forneça o link direto da transmissão ao vivo na entidade SportsEvent usando SportsEvent.potentialAction (configurado com o anúncio precedente de 14 dias availabilityStarts e o buffer de prorrogação de 2 a 3 horas availabilityEnds).
  • Não forneça BroadcastEvent.potentialAction, BroadcastEvent.url ou SportsEvent.url.
  • Não forneça BroadcastEvent.publishedOn porque o jogo é transmitido on-line sem um canal linear.

Subcaso 2: o jogo está disponível ao vivo e como parte do catálogo de vídeo on demand (por exemplo, quando as repetições completas do jogo permanecem disponíveis on demand)

  • Forneça a entidade BroadcastEvent para compartilhar a programação de cada transmissão (referenciando BroadcastEvent.broadcastOfEvent e especificando BroadcastEvent.location).
  • Consolide a reprodução ao vivo e de vídeo on demand em SportsEvent.potentialAction, seja estendendo availabilityEnds até o final da janela de vídeo on demand, se o URL e os direitos forem idênticos, ou fornecendo vários objetos WatchAction em SportsEvent.potentialAction com as respectivas janelas actionAccessibilityRequirement.
  • Não forneça BroadcastEvent.potentialAction, BroadcastEvent.url, SportsEvent.url ou BroadcastEvent.publishedOn.

Verificações de qualidade a serem realizadas

  • Defina BroadcastEvent.isLiveBroadcast como booleano true (sem aspas) quando o jogo for transmitido ao vivo. Defina como false para uma transmissão de replay programada.
  • Para entidades BroadcastEvent que não estão ativas, BroadcastEvent.startDate não pode ser anterior a SportsEvent.startDate.
  • Inclua parentOrganization (com um URL da Wikipédia sameAs) em homeTeam e awayTeam.
Caso 2

Preciso modelar um SportsEvent que faz parte do meu catálogo de TV ao vivo e é transmitido on-line em um canal.

Entidades obrigatórias

  • SportsEvent que representa o jogo.
  • BroadcastEvent que representa a transmissão do jogo.
  • BroadcastService, Organization, TelevisionChannel, CableOrSatelliteService entidades que representam o canal e o lineup.

Diretrizes de modelagem

Subcaso 1: o jogo está disponível apenas ao vivo no canal linear (e não como parte do catálogo de vídeo on demand)

  • Forneça a entidade BroadcastEvent para compartilhar a programação da transmissão, com BroadcastEvent.publishedOn apontando para a entidade BroadcastService, BroadcastEvent.broadcastOfEvent apontando para a entidade SportsEvent e BroadcastEvent.location especificando o país da transmissão.
  • Forneça as entidades BroadcastService, Organization, TelevisionChannel e CableOrSatelliteService para representar o canal e a programação, com o link direto do canal em BroadcastService.potentialAction.
  • Nunca forneça BroadcastEvent.potentialAction, BroadcastEvent.url ou SportsEvent.url.
  • Se você também oferecer suporte a um link direto específico do jogo, forneça-o em SportsEvent.potentialAction. Se a reprodução estiver disponível apenas pelo link direto do canal linear em BroadcastService.potentialAction, omita SportsEvent.potentialAction.

Subcaso 2: o jogo está disponível ao vivo em um canal e como parte do catálogo de vídeo on demand

  • Forneça a entidade BroadcastEvent (com publishedOn, broadcastOfEvent e location) para compartilhar a programação de transmissão do canal.
  • Forneça as entidades BroadcastService, Organization, TelevisionChannel e CableOrSatelliteService com o link direto do canal em BroadcastService.potentialAction.
  • Nunca forneça BroadcastEvent.potentialAction, BroadcastEvent.url ou SportsEvent.url.
  • Forneça SportsEvent.potentialAction na entidade SportsEvent para a janela de reprodução de vídeo on demand / no nível do evento.

Verificações de qualidade a serem realizadas

  • Defina BroadcastEvent.isLiveBroadcast como o booleano true (sem aspas) quando o jogo estiver ao vivo e false para uma reprise.
  • Para entidades BroadcastEvent que não estão ativas, BroadcastEvent.startDate não pode ser anterior a SportsEvent.startDate.
  • Inclua parentOrganization (com um URL da Wikipédia sameAs) em homeTeam e awayTeam.

Exemplos

Caso 1: um evento esportivo que faz parte de um catálogo de TV ao vivo e é transmitido on-line

Evento de transmissão

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "BroadcastEvent",
  "@id": "http://example.com/live_event/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": "2019-09-16T10:00-08:00",
  "endDate": "2019-09-16T13:00-08:00",
  "videoFormat": "HD",
  "isLiveBroadcast": true,
  "broadcastOfEvent": {
    "@type": "SportsEvent",
    "@id": "http://example.com/basketball/professional/final_game_6"
  },
  "location": {
    "@type": "Country",
    "name": "US"
  }
}

Evento esportivo

{
  "@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 at 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": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "athlete": [
      {
        "@type": "Person",
        "name": "John Doe"
      }
    ]
  },
  "awayTeam": {
    "@type": "SportsTeam",
    "name": "Team A",
    "sport": "https://en.wikipedia.org/wiki/Basketball",
    "parentOrganization": {
      "@type": "SportsOrganization",
      "name": "Professional Basketball League",
      "sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "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": "EP000194303282"
    }
  ],
  "potentialAction": {
    "@type": "WatchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "http://www.example.com/pbl_finals_game_6?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": "2019-09-01T10:00-08:00",
      "availabilityEnds": "2019-09-16T16:00-08:00",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "name": "Example Package",
        "commonTier": true,
        "@id": "http://www.example.com/example_package"
      },
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        }
      ]
    }
  }
}

Caso 2: um evento esportivo que faz parte de um catálogo de TV ao vivo e é transmitido on-line em um canal

Evento de transmissão

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "BroadcastEvent",
  "@id": "http://example.com/live_event/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": "2019-09-16T10:00-08:00",
  "endDate": "2019-09-16T13:00-08:00",
  "videoFormat": "HD",
  "isLiveBroadcast": true,
  "publishedOn": {
    "@type": "BroadcastService",
    "@id": "http://example.com/stations/example_tv"
  },
  "broadcastOfEvent": {
    "@type": "SportsEvent",
    "@id": "http://example.com/basketball/professional/final_game_6"
  },
  "location": {
    "@type": "Country",
    "name": "US"
  }
}

Evento esportivo

{
  "@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 at 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": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "athlete": [
      {
        "@type": "Person",
        "name": "John Doe"
      }
    ]
  },
  "awayTeam": {
    "@type": "SportsTeam",
    "name": "Team A",
    "sport": "https://en.wikipedia.org/wiki/Basketball",
    "parentOrganization": {
      "@type": "SportsOrganization",
      "name": "Professional Basketball League",
      "sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "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": "EP000194303282"
    }
  ]
}

Entidades BroadcastService, CableOrSatelliteService, TelevisionChannel e Organization, conforme definido na seção Canal de TV ao vivo em Conceitos.

Como lidar com conteúdo extra?

O que é considerado conteúdo extra?
  • Clipes curtos de recapitulação ou repetição aleatória
  • Prévias do jogo
  • Destaques do jogo
  • Erros de gravação de jogos
  • Clipes de entrevistas com jogadores
  • Vídeos dos bastidores
  • Avaliações de jogos (geradas por usuários ou não)
  • Outros clipes curtos aleatórios do jogo
S.No. Caso de uso Diretrizes de modelagem
Caso 1 Tenho conteúdo extra no meu catálogo de vídeos on demand.
  • Isso não é aceito e não pode ser fornecido no feed.
  • No entanto, o ViTA pode ser usado para fornecer um subconjunto desse conteúdo. Entre em contato com seu representante do Google para saber mais sobre o ViTA.
Caso 2 Tenho conteúdo extra no meu catálogo ao vivo

Subcaso 1: o conteúdo está disponível para transmissão ao vivo na Internet

  • Forneça a entidade BroadcastEvent para compartilhar a programação da transmissão.
  • Forneça o link direto do conteúdo extra usando a propriedade BroadcastEvent.potentialAction. Essa exceção se aplica apenas ao conteúdo extra independente ao vivo, porque não há uma entidade SportsEvent no feed.
  • Adicione os metadados associados (ao clipe) diretamente ao BroadcastEvent . Por exemplo, é possível adicionar imagens usando a propriedade BroadcastEvent.image . As classificações indicativas podem ser adicionadas usando a propriedade BroadcastEvent.contentRating .
  • Como esse tipo de conteúdo não é um SportsEvent, o feed não pode conter uma entidade SportsEvent. Portanto, a propriedade broadcastOfEvent no BroadcastEvent não pode ser fornecida.
  • Como ele não está vinculado a um canal, não forneça a propriedade publishedOn no BroadcastEvent.

Subcaso 2: o conteúdo está disponível para transmissão ao vivo na Internet em um canal

  • A entidade BroadcastEvent precisa ser fornecida para compartilhar a programação da transmissão.
  • As entidades BroadcastService, Organization, TelevisionChannel e CableOrSatelliteService precisam ser fornecidas para representar o canal e a programação do provedor.
  • O link direto para o jogo precisa ser o link direto BroadcastService , representado pela propriedade BroadcastService.potentialAction , que precisa ser fornecida.
  • A propriedade BroadcastEvent.potentialAction não pode ser fornecida.
  • Todos os metadados associados ao clipe precisam ser adicionados diretamente ao BroadcastEvent. Por exemplo, é possível adicionar imagens usando a propriedade BroadcastEvent.image. As classificações indicativas podem ser adicionadas usando a propriedade BroadcastEvent.contentRating.
  • Como esse tipo de conteúdo não é um SportsEvent, o feed não pode conter uma entidade SportsEvent. Portanto, a propriedade broadcastOfEvent no BroadcastEvent não pode ser fornecida.
  • Como ele está vinculado a um canal, forneça a propriedade publishedOn no BroadcastEvent.
Caso 3 Tenho conteúdo extra disponível como parte do catálogo de vídeo on demand e de TV ao vivo

Como o conteúdo extra de esportes em vídeo on demand não é aceito no feed atualmente, esse caso é semelhante ao 2. Siga as instruções.

Perguntas frequentes

P: Onde posso encontrar as especificações associadas às entidades mencionadas anteriormente?

R: Confira as especificações necessárias aqui.

Documentação geral Link
SportsEvent Link
BroadcastService, Organization, TelevisionChannel , CableOrSatelliteService Link
BroadcastEvent Link

P: Existe um documento mais detalhado que explica como modelar os canais e as programações de TV ao vivo?

R: Sim, você encontra mais detalhes na seção Canal de TV ao vivo em Conceitos. Se não conseguir acessar o documento, solicite acesso de visualização.

P: O ViTA também oferece suporte a jogos ao vivo e replays completos?

R: O ViTA é compatível com metadados em jogos completos ao vivo e reprises de jogos completos baseados em ligas (além de um subconjunto de conteúdo extra).

  • Para parceiros que já têm um feed de ações de mídia funcional com o Google ou uma oferta de vídeo on demand ou TV ao vivo, o Google exige que o feed seja expandido e inclua também os tipos de SportsEvent compatíveis.

    • No curto prazo, os parceiros podem usar o ViTA para processamento de conteúdo extra. O suporte a todos os tipos de conteúdo pelo feed será lançado a longo prazo.
  • Para parceiros que não oferecem vídeo on demand ou TV ao vivo, mas transmitem apenas esportes baseados em ligas e conteúdo extra relacionado, o ViTA é uma ótima opção para começar. Entre em contato com seu representante do Google para saber mais sobre o ViTA.