SportsEvents: Modelado, prácticas recomendadas y feed de muestra

Definición

Un SportsEvent es un tipo de entidad que representa un partido deportivo o una repetición completa de un partido deportivo.

¿Qué se puede modelar como un SportsEvent? Un partido de deportes
¿Qué no se puede modelar como un SportsEvent?

Cualquier contenido de formato corto, clip o complementario. Esta es la lista:

  • Resumen aleatorio o reproducción de clips cortos
  • Vistas previas del juego
  • Momentos destacados del partido
  • Errores de juego
  • Clips de entrevistas con jugadores
  • Videos tras bambalinas
  • Opiniones de juegos (generadas por usuarios o de otro tipo)
  • Clips cortos aleatorios del juego

¿Cómo debo manejar este tipo de contenido complementario?

Casos de uso habituales de SportsEvents

S.No. Descripción Entidades obligatorias
Caso 1

Necesito modelar un SportsEvent que forma parte de mi catálogo de TV en vivo y se transmite en línea.

El partido se transmite por Internet y no está vinculado a ningún canal.

SportsEvent que representa el juego.

BroadcastEvent que representa la transmisión del partido.

Caso 2 Necesito modelar un objeto SportsEvent que forma parte de mi catálogo de TV en vivo y se transmite en línea en un canal.

SportsEvent que representa el juego.

BroadcastEvent que representa la transmisión del partido.

Entidades BroadcastService, Organization, TelevisionChannel y CableOrSatelliteService que representan el canal y la selección de contenido

Caso 3 Combinaciones de los dos casos anteriores Si combinas los casos de uso anteriores, proporciona todos los tipos de entidades que se indican en la columna "Entidades obligatorias" correspondiente.

Prácticas recomendadas y estadísticas sobre algunas de las verificaciones que realizamos

Los siguientes lineamientos y verificaciones de calidad se aplican cuando se modelan eventos deportivos y sus transmisiones.

Aplica las siguientes reglas en todas las integraciones de SportsEvent:

  • Coloca todos los vínculos directos de deportes en SportsEvent.potentialAction: Los vínculos directos a nivel del partido (WatchAction), tanto para las transmisiones en vivo sin canal como para las repeticiones de video on demand, deben residir exclusivamente en la entidad SportsEvent (SportsEvent.potentialAction). Nunca coloques potentialAction en un BroadcastEvent que haga referencia a un SportsEvent. (Para las transmisiones de canales lineales sin un vínculo directo específico del evento, proporciona el vínculo directo del canal en BroadcastService.potentialAction). Si un partido tiene varias transmisiones (por ejemplo, feeds regionales, transmisiones locales o de visitante, varios idiomas o URLs de repetición de video on demand y en vivo independientes), proporciona un array de objetos WatchAction en SportsEvent.potentialAction.
  • Ventana de anuncio previo al evento (availabilityStarts): Establece SportsEvent.potentialAction.actionAccessibilityRequirement.availabilityStarts al menos 14 días antes de SportsEvent.startDate (availabilityStarts <= SportsEvent.startDate - 14 days) para que las tarjetas de partidos próximos y las notificaciones de sintonización puedan aparecer con anticipación. No es necesario que envíes la entidad del feed con 14 días de anticipación; los datos del evento se pueden enviar más cerca del día del partido, siempre que la marca de tiempo availabilityStarts se establezca al menos 14 días antes de SportsEvent.startDate.
  • Margen de tiempo extra (availabilityEnds): Establece SportsEvent.potentialAction.actionAccessibilityRequirement.availabilityEnds después de SportsEvent.endDate con un margen de, al menos, 2 a 3 horas (availabilityEnds >= SportsEvent.endDate + 2 to 3 hours o hasta el final de la ventana de reproducción de video on demand) para que el vínculo directo no venza durante los tiempos extras en vivo o la cobertura posterior al partido.
  • Requisitos de @id y url:
    • Usa valores @id distintos: BroadcastEvent.@id debe ser diferente de SportsEvent.@id.
    • Omite url: No incluyas una propiedad url en las entidades BroadcastEvent o SportsEvent.
S.No. Entidades obligatorias Lineamientos
Caso 1

Necesito modelar un SportsEvent que forma parte de mi catálogo de TV en vivo y se transmite en línea.

El partido se transmite por Internet y no está vinculado a ningún canal.

Entidades obligatorias

  • SportsEvent que representa el juego
  • BroadcastEvent que representa la transmisión del partido

Lineamientos para el modelado

Subcaso 1: El partido solo está disponible en vivo (y no como parte del catálogo de video on demand)

  • Proporciona la entidad BroadcastEvent para compartir el programa de la transmisión, haciendo referencia al partido con BroadcastEvent.broadcastOfEvent y especificando el país de transmisión en BroadcastEvent.location.
  • Proporciona el vínculo directo de la transmisión en vivo en la entidad SportsEvent con SportsEvent.potentialAction (configurado con el anuncio previo al video de 14 días availabilityStarts y el búfer de tiempo extra de 2 a 3 horas availabilityEnds).
  • No proporciones BroadcastEvent.potentialAction, BroadcastEvent.url ni SportsEvent.url.
  • No proporciones BroadcastEvent.publishedOn porque el partido se transmite en línea sin un canal lineal.

Subcaso 2: El partido está disponible en vivo y como parte del catálogo de video on demand (por ejemplo, cuando las repeticiones completas del partido siguen disponibles on demand)

  • Proporciona la entidad BroadcastEvent para compartir el programa de cada transmisión (haciendo referencia a BroadcastEvent.broadcastOfEvent y especificando BroadcastEvent.location).
  • Consolida la reproducción de contenido en vivo y de video on demand en SportsEvent.potentialAction, ya sea extendiendo availabilityEnds hasta el final de la ventana de video on demand si la URL y los derechos son idénticos, o proporcionando múltiples objetos WatchAction en SportsEvent.potentialAction con sus respectivas ventanas de actionAccessibilityRequirement.
  • No proporciones BroadcastEvent.potentialAction, BroadcastEvent.url, SportsEvent.url ni BroadcastEvent.publishedOn.

Verificaciones de calidad que se deben realizar

  • Establece BroadcastEvent.isLiveBroadcast en el valor booleano true (sin comillas) cuando el partido se transmita en vivo. Establécelo en false para una transmisión de repetición programada.
  • Para las entidades BroadcastEvent que no están publicadas, BroadcastEvent.startDate no debe ser anterior a SportsEvent.startDate.
  • Incluye parentOrganization (con una URL de Wikipedia sameAs) en homeTeam y awayTeam.
Caso 2

Necesito modelar un SportsEvent que forma parte de mi catálogo de TV en vivo y se transmite en línea en un canal.

Entidades obligatorias

  • SportsEvent que represente el juego
  • BroadcastEvent que representa la transmisión del partido.
  • BroadcastService, Organization, TelevisionChannel, CableOrSatelliteService entidades que representan el canal y la selección de contenido.

Lineamientos para el modelado

Subcaso 1: El partido solo está disponible en vivo en el canal lineal (y no como parte del catálogo de video on demand)

  • Proporciona la entidad BroadcastEvent para compartir el programa de la transmisión, con BroadcastEvent.publishedOn que apunte a la entidad BroadcastService, BroadcastEvent.broadcastOfEvent que apunte a la entidad SportsEvent y BroadcastEvent.location que especifique el país de transmisión.
  • Proporciona las entidades BroadcastService, Organization, TelevisionChannel y CableOrSatelliteService para representar el canal y la selección, con el vínculo directo del canal en BroadcastService.potentialAction.
  • Nunca proporciones BroadcastEvent.potentialAction, BroadcastEvent.url ni SportsEvent.url.
  • Si también admites un vínculo directo específico del partido, proporciónalo en SportsEvent.potentialAction. Si la reproducción solo está disponible a través del vínculo directo del canal lineal en BroadcastService.potentialAction, omite SportsEvent.potentialAction.

Subcaso 2: El partido está disponible en vivo en un canal y como parte del catálogo de video on demand

  • Proporciona la entidad BroadcastEvent (con publishedOn, broadcastOfEvent y location) para compartir el programa de transmisión del canal.
  • Proporciona las entidades BroadcastService, Organization, TelevisionChannel y CableOrSatelliteService con el vínculo directo del canal en BroadcastService.potentialAction.
  • Nunca proporciones BroadcastEvent.potentialAction, BroadcastEvent.url ni SportsEvent.url.
  • Proporciona SportsEvent.potentialAction en la entidad SportsEvent para la ventana de reproducción de nivel de evento o video on demand.

Verificaciones de calidad que se deben realizar

  • Establece BroadcastEvent.isLiveBroadcast en el valor booleano true (sin comillas) cuando el partido se transmita en vivo y false para una repetición.
  • Para las entidades BroadcastEvent que no están publicadas, BroadcastEvent.startDate no debe ser anterior a SportsEvent.startDate.
  • Incluye parentOrganization (con una URL de Wikipedia sameAs) en homeTeam y awayTeam.

Ejemplos

Caso 1: Un evento deportivo que forma parte de un catálogo de TV en vivo y se transmite en línea

Evento de transmisión

{
  "@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 deportivo

{
  "@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: Un evento deportivo que forma parte de un catálogo de TV en vivo y se transmite en línea en un canal

Evento de transmisión

{
  "@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 deportivo

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

Las entidades BroadcastService, CableOrSatelliteService, TelevisionChannel y Organization, como se definen en la sección Canal de TV en vivo en Conceptos.

¿Cómo debo administrar el contenido complementario?

¿Qué se considera contenido complementario?
  • Resumen aleatorio o reproducción de clips cortos
  • Vistas previas del juego
  • Momentos destacados del partido
  • Errores de juego
  • Clips de entrevistas con jugadores
  • Videos tras bambalinas
  • Opiniones de juegos (generadas por usuarios o de otro tipo)
  • Otros clips cortos aleatorios del juego
S.No. Caso de uso Lineamientos de modelado
Caso 1 Tengo contenido complementario en mi catálogo de videos on demand.
  • Esto no se admite y no se puede proporcionar en el feed.
  • Sin embargo, se puede usar ViTA para proporcionar un subconjunto de este contenido. Comunícate con tu representante de Google para obtener más información sobre ViTA.
Caso 2 Tengo contenido complementario en mi catálogo de transmisiones en vivo

Subcaso 1: El contenido está disponible para transmitirse en vivo en Internet

  • Proporciona la entidad BroadcastEvent para compartir el programa de la transmisión.
  • Proporciona el vínculo directo del contenido complementario con la propiedad BroadcastEvent.potentialAction (esta excepción se aplica solo al contenido complementario en vivo independiente, ya que no hay una entidad SportsEvent en el feed).
  • Agrega los metadatos asociados (al clip) directamente a la etiqueta BroadcastEvent . Por ejemplo, se pueden agregar imágenes con la propiedad BroadcastEvent.image . Las clasificaciones por edad se pueden agregar con la propiedad BroadcastEvent.contentRating .
  • Dado que este tipo de contenido no es un SportsEvent, el feed no debe contener una entidad SportsEvent. Por lo tanto, no se debe proporcionar la propiedad broadcastOfEvent en BroadcastEvent .
  • Como no está vinculado a un canal, no proporciones la propiedad publishedOn en BroadcastEvent.

Subcaso 2: El contenido está disponible para transmitirse en vivo en Internet en un canal

  • Se debe proporcionar la entidad BroadcastEvent para compartir el programa de la transmisión.
  • Se deben proporcionar las entidades BroadcastService, Organization, TelevisionChannel y CableOrSatelliteService para representar el canal y la selección de proveedores.
  • El vínculo directo al juego debe ser simplemente el vínculo directo BroadcastService , representado por la propiedad BroadcastService.potentialAction , que se debe proporcionar.
  • No se debe proporcionar la propiedad BroadcastEvent.potentialAction.
  • Todos los metadatos asociados (al clip) se deben agregar directamente al BroadcastEvent. Por ejemplo, las imágenes se pueden agregar con la propiedad BroadcastEvent.image. Las clasificaciones por edad se pueden agregar con la propiedad BroadcastEvent.contentRating.
  • Dado que este tipo de contenido no es un SportsEvent, el feed no debe contener una entidad SportsEvent. Por lo tanto, no se debe proporcionar la propiedad broadcastOfEvent en BroadcastEvent.
  • Como está vinculado a un canal, proporciona la propiedad publishedOn en el BroadcastEvent.
Caso 3 Tengo contenido complementario disponible como parte de los catálogos de video on demand y de TV en vivo.

Dado que el contenido complementario de deportes de video on demand no se acepta en el feed actualmente, este caso es similar al 2. Consulta las instrucciones que se indican allí.

Preguntas frecuentes

P.: ¿Dónde puedo encontrar las especificaciones asociadas para las entidades mencionadas anteriormente?

R.: Puedes encontrar las especificaciones requeridas aquí.

Documentación general Vínculo
SportsEvent Vínculo
BroadcastService, Organization, TelevisionChannel y CableOrSatelliteService Vínculo
BroadcastEvent Vínculo

P.: ¿Existe un documento más detallado que explique cómo modelar los canales y las selecciones de TV en vivo?

R.: Sí, puedes encontrar más detalles en la sección Canal de TV en vivo de Conceptos. No dudes en solicitar acceso de lectura si no puedes ver el documento.

P.: ¿ViTA también admite partidos completos en vivo y repeticiones de partidos completos?

R.: ViTA admite metadatos en partidos completos en vivo y repeticiones de partidos completos de ligas (además de un subconjunto de contenido complementario).

  • En el caso de los socios que ya tienen un feed de acciones de contenido multimedia funcional con Google o que tienen una oferta de video on demand o TV en vivo, Google requiere que el feed se expanda y también incluya los tipos de SportsEvent admitidos.

    • A corto plazo, los socios pueden usar ViTA para la transferencia de contenido complementario. La compatibilidad con todos los tipos de contenido a través del feed debería lanzarse a largo plazo.
  • Para los socios que no tienen una oferta de video on demand o TV en vivo, pero solo transmiten deportes basados en ligas y contenido complementario relacionado, ViTA es una excelente opción para comenzar. Comunícate con tu representante de Google para obtener más información sobre ViTA.