Deve ser bom usar diferentes sintaxes na mesma página.
Porém, ele tem uma desvantagem: se você deseja conectar entidades especificadas em diferentes sintaxes, não pode aninhar nelas. Você precisa usar URIs. (Mas observe que nem todos os consumidores dos dados seguem essas referências de URI).
Exemplo mostrando aninhamento x referência
Você pode conectar um BreadcrumbLista um WebPagecom a breadcrumbpropriedade
Ao usar apenas uma sintaxe, você pode simplesmente aninhar os itens:
<!-- Microdata only -->
<div itemscope itemtype="http://schema.org/WebPage">
<div itemprop="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList">
</div>
</div>
<!-- JSON-LD only -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"breadcrumb":
{
"@type": "BreadcrumbList"
}
}
</script>
Mas se você combinar sintaxes, precisará especificar e fazer referência a URIs:
<!-- Microdata, giving the entitiy an URI with the 'itemid' attribute -->
<div itemscope itemtype="http://schema.org/BreadcrumbList" itemid="#page-breadcrumbs">
</div>
<!-- JSON-LD, referencing the URI "#page-breadcrumbs" which is specified in the Microdata -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"breadcrumb":
{
"@type": "BreadcrumbList",
"@id": "#page-breadcrumbs"
}
}
</script>
Para a outra direção, é necessário atribuir ao item em JSON-LD um URI @ide vincular a esse URI em, por exemplo, um linkelemento. Veja um exemplo.
Mais exemplos
Vinculei a vários exemplos que usam JSON-LD junto com Microdata nesta resposta no Stack Overflow .