¿Qué es el grafo de producto de una ficha?
El grafo de producto es el conjunto de nodos de datos estructurados que describen un producto en su ficha, enlazados entre sí: el Product, su oferta (Offer), la tienda que lo vende (Organization), su marca (Brand) y sus reseñas (Review). Lo que convierte esos nodos en un grafo son las referencias: propiedades que anidan un nodo dentro de otro o lo citan por su @id.
Lo esencial
- El grafo de producto no es un tipo de Schema.org ni una palabra clave de JSON-LD: es el nombre del conjunto de nodos que rodean a un producto y de los enlaces entre ellos.
- Cada enlace es una propiedad: offers une el producto con su oferta, seller la oferta con la tienda, brand el producto con su marca, y review y aggregateRating con las opiniones.
- Un nodo sin enlaces es una isla: Google pide usar @id cuando dos elementos se entienden mejor juntos.
- No es el Knowledge Graph de Google ni el @graph de un bloque: es lo que tu ficha dice de un producto, y con quién lo relaciona.
Una ficha de producto no se describe con un solo nodo de datos estructurados. Está el producto, pero también la oferta con su precio, la tienda que lo vende, la marca que lo fabrica y las opiniones de quienes lo han comprado. Llamamos grafo de producto a ese conjunto y, sobre todo, a los enlaces que lo unen. No es un término de ninguna especificación ni un tipo de Schema.org: es la forma de mirar el marcado de una ficha como lo que es, una red de cosas relacionadas. Tampoco es el Knowledge Graph de Google, que es la base de datos del buscador sobre el mundo. Te importa porque un producto con precio pero sin vendedor, o con una marca escrita como texto suelto, dice menos de lo que crees.
Cómo funciona
La especificación JSON-LD del W3C describe sus datos como un grafo dirigido y etiquetado: los nodos son recursos, y las propiedades son los arcos que los unen.[1]W3C. JSON-LD 1.1, A JSON-based Serialization for Linked Data Cada nodo puede llevar un identificador con @id, y otro nodo puede citarlo con una referencia, un objeto que solo lleva ese @id.[1]W3C. JSON-LD 1.1, A JSON-based Serialization for Linked Data La especificación distingue dos maneras de relacionar nodos: anidar uno dentro de una propiedad de otro, que crea una relación de padre e hijo, o referenciarlo por su identificador.[1]W3C. JSON-LD 1.1, A JSON-based Serialization for Linked Data
En una tienda, los nodos y sus enlaces salen del vocabulario de Schema.org. Estos son los que forman el grafo de un producto:
| Desde | Propiedad | Hacia | Qué dice el enlace |
|---|---|---|---|
| Product | offers |
Offer | Que existe una oferta para vender o proporcionar ese producto.[2]Schema.org. Product |
| Offer | seller |
Organization o Person | Quién vende, alquila o presta el producto.[3]Schema.org. Offer |
| Product | brand |
Brand u Organization | La marca o marcas asociadas al producto.[2]Schema.org. Product |
| Product | review |
Review | Una reseña del producto.[2]Schema.org. Product |
| Product | aggregateRating |
AggregateRating | La valoración global, calculada a partir de un conjunto de reseñas o valoraciones.[2]Schema.org. Product |
| Offer | hasMerchantReturnPolicy |
MerchantReturnPolicy | La política de devoluciones que se aplica.[3]Schema.org. Offer |
| Offer | shippingDetails |
OfferShippingDetails | Las condiciones y opciones de envío de esa oferta.[3]Schema.org. Offer |
| Product | isVariantOf |
ProductGroup | El producto base del que esta variante deriva.[2]Schema.org. Product |
Que dos nodos estén en la misma página no los une. Google explica que entiende varios elementos en una página tanto si van anidados, con un elemento principal y los demás agrupados bajo él, como si van por separado; y para los que se entienden mejor juntos pide usar @id en los dos y así indicar la relación.[4]Google Search Central. General structured data guidelines Por eso, en un grafo bien hecho, lo que solo tiene sentido dentro del producto va anidado (su oferta, sus reseñas), y lo que se repite en todo el sitio, como la tienda, se describe una vez con un @id estable y se cita desde donde haga falta.
Lo que Google hace con él
Google tiene dos funciones para productos: los fragmentos de producto, para páginas donde no se puede comprar directamente, y las fichas de comerciante, para páginas donde el cliente puede comprarte el producto. Si una página lleva las propiedades obligatorias de las fichas de comerciante, también puede optar a los fragmentos de producto, y cuantas más propiedades añades, a más mejoras puede optar.[5]Google Search Central. Introduction to Product structured data Google recomienda además que la política de devoluciones de la tienda y su programa de fidelización vayan en un nodo Organization anidado.[5]Google Search Central. Introduction to Product structured data Es decir: parte del grafo no cuelga del producto, sino de la tienda.
En una tienda
Un ejemplo ficticio: la ficha de una lámpara de una tienda inventada, con el grafo completo y recortado a lo esencial.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "Luz de Arnes",
"url": "https://www.example.com/"
},
{
"@type": "Product",
"@id": "https://www.example.com/lampara-sobremesa-oria#product",
"name": "Lámpara de sobremesa Oria",
"brand": { "@type": "Brand", "name": "Oria Studio" },
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "38"
},
"offers": {
"@type": "Offer",
"price": "89.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"seller": { "@id": "https://www.example.com/#organization" }
}
}
]
}
Dibujado, el grafo queda así:
Product (#product)
+-- brand ----------> Brand "Oria Studio"
+-- aggregateRating -> AggregateRating 4,6 (38 reseñas)
+-- offers ---------> Offer 89,00 EUR
+-- seller --> Organization (#organization)
Se lee de arriba abajo. El producto tiene su @id, así que otra página o la misma página pueden citarlo. La marca, la valoración y la oferta van anidadas porque solo tienen sentido dentro de este producto. La tienda, en cambio, está descrita una vez, fuera del producto, y la oferta la cita por su @id: ese enlace es el que dice quién vende. Quita el seller y el marcado ya no dice quién vende; cambia una letra del @id y la referencia apunta a un nodo que no existe. Con el identificador @id bien elegido, el mismo nodo de la tienda sirve para todas las fichas.
Una ficha publicada con Clione lleva un solo @graph con Organization, WebSite, BreadcrumbList y Product, con una oferta por producto, y su nodo Product tiene un @id estable que convive con el del tema en lugar de duplicarlo.
Lo que se suele confundir
Creer que, como el producto está en tu web, el marcado ya dice que lo vendes tú. No lo dice: la especificación JSON-LD trata cada relación como una propiedad que hay que escribir,[1]W3C. JSON-LD 1.1, A JSON-based Serialization for Linked Data y la que dice quién vende una oferta es seller.[3]Schema.org. Offer Un Product y un Organization en la misma página, sin esa referencia, son dos nodos sin relación, y Google avisa de que debes enlazar con @id lo que se entiende mejor junto.[4]Google Search Central. General structured data guidelines
Cómo comprobarlo
- Abre el código fuente de una ficha y localiza el nodo Product. Apunta su
@id; si no tiene, el producto es anónimo y nadie puede citarlo.[1]W3C. JSON-LD 1.1, A JSON-based Serialization for Linked Data - Sigue
offers. Tiene que haber una Offer, y susellertiene que apuntar a un@idque exista en la página, letra por letra. - Mira
brand. La marca tendría que ser un nodo Brand u Organization con su nombre,[2]Schema.org. Product y coincidir con la marca que se ve en la ficha. - Comprueba que las reseñas y la valoración del marcado se ven en la página. Google pide no marcar lo que el visitante no ve.[4]Google Search Central. General structured data guidelines
- Dibújalo en un papel. Un recuadro por nodo y una flecha por propiedad. Todo nodo al que no llega ni del que sale ninguna flecha es una isla.
Concepto cercano: @graph
El @graph es una palabra clave de JSON-LD: la lista que reúne varios nodos en un mismo bloque, con un único contexto. El grafo de producto es otra cosa: la red de enlaces que rodea a un producto, esté escrita como esté. Se puede escribir un grafo de producto completo sin @graph, con todos los nodos anidados dentro del Product, y se puede tener un @graph con cuatro nodos que no forman ningún grafo, porque la especificación permite que un @graph de nivel superior contenga nodos que no estén conectados.[1]W3C. JSON-LD 1.1, A JSON-based Serialization for Linked Data El @graph dice qué nodos hay; el grafo de producto, cómo se relacionan.
Para seguir, la guía para auditar los datos estructurados de una ficha aplica estas comprobaciones paso a paso, y la ruta de lectura de datos estructurados ordena el resto de tipos.
Sinónimos
- English
- product graph, product schema graph
- Español
- grafo del producto, grafo de datos estructurados del producto
Fuentes
- [1] W3C. JSON-LD 1.1, A JSON-based Serialization for Linked Data. Consultado el . ↑ ↑ ↑ ↑ ↑ ↑
- [2] Schema.org. Product. Consultado el . ↑ ↑ ↑ ↑ ↑ ↑
- [3] Schema.org. Offer. Consultado el . ↑ ↑ ↑ ↑
- [4] Google Search Central. General structured data guidelines. Consultado el . ↑ ↑ ↑
- [5] Google Search Central. Introduction to Product structured data. Consultado el . ↑ ↑
Historial de cambios
- Primera versión.
Esta definición se publica bajo licencia CC BY 4.0. Puedes reutilizar esta definición citando a Clione con un enlace a esta página.
Términos relacionados
@graph
Qué es @graph en JSON-LD, qué dice la especificación del W3C, cómo enlaza el producto, la tienda y la web de una ficha y cómo revisar el de tu tienda.
Identificador @id
Qué es el identificador @id en JSON-LD, cómo une los nodos de tu schema, por qué conviene que no cambie y cómo evitar dos productos donde hay uno.
Product
Qué es el tipo Product de Schema.org, qué propiedades lleva, qué pide Google para fragmentos de producto y fichas de comerciante, y cómo contrastarlo.
Offer
Qué es el tipo Offer de Schema.org, cómo se escriben el precio, la moneda y la disponibilidad, qué pide Google y en qué se diferencia de AggregateOffer.
Brand
Qué es el tipo Brand de Schema.org, cómo se marca la marca de un producto, qué pide Google y por qué la tienda que revende no pone su nombre como marca.
Review
Qué es el tipo Review de Schema.org, qué propiedades pide Google para una reseña, qué reglas tiene y cómo marcar las opiniones de tus clientes en la ficha.
Haz que los bots entiendan tu catálogo
Clione completa cada ficha de producto con lo que los bots leen mejor: el grafo JSON-LD con sus datos estructurados, la meta description y las preguntas frecuentes. Tú revisas y pulsas Push; después comprobamos tu tienda en vivo para que todo siga publicado.