Creo que esos campos @id deberían ser URL que funcionen, porque W3.org dice:
Para poder referenciar externamente nodos en un grafo, es importante que los nodos tengan un identificador. Los IRI son un concepto fundamental de Linked Data, para que los nodos estén verdaderamente enlazados, la desreferenciación del identificador debería resultar en una representación de ese nodo. Esto puede permitir a una aplicación recuperar más información sobre un nodo.
Me pregunto si esto es un problema de cómo el validador muestra el id. Por lo que puedo decir, el id se extrae del marcado y no es algo que definamos nosotros mismos, por ejemplo:
Si haces clic en esa sección de id en el validador, resalta correctamente la publicación con el id coincidente… así que parece que el validador puede identificarlo correctamente.
Noto este comportamiento en otros sitios con valores @id, por ejemplo, en los datos del esquema para esta pregunta de stackoverflow.com:
Eso es interesante. No pensé en revisar el código fuente HTML y simplemente asumí que era JSON-LD.
Google utiliza datos de esquema, pero no estoy seguro de si utilizan ese en específico. La documentación de schema.org no está escrita muy claramente.
Parece que Discourse está colocando múltiples DiscussionForumPosting en cada tema, pero el ejemplo en la documentación parece indicar que DiscussionForumPosting podría referirse solo al tema principal y no a los comentarios. La documentación enumera un campo comment con un Comment (singular), aunque la descripción está redactada en plural.
Acabo de ver cómo lo hace Invison y utiliza JSON-LD, colocando objetos Comment en un campo comment. Parece que es mucho texto adicional para enviar al navegador.
No sé cuál es la respuesta, pero intentaré investigar más tarde.
Me da la casualidad de que estoy merodeando por este foro, lo cual es conveniente. Poseo el código de Google que analiza eso.
El hilo enlazado es una buena respuesta a la tangente del comentario. Abordaré el resto aquí.
Es esencialmente no estándar interpretar los atributos de ID de HTML como ID de nodo. Se hizo al principio del análisis de microdatos de Google, probablemente por razones difusas. Se supone que debes usar itemid si quieres hacer eso explícitamente. Espero eliminar ese hack algún día, pero es difícil sacar algo así sin pérdidas.
En segundo lugar, los IRI no tienen que ser resolubles. Esa es una sugerencia de W3C, pero muchos IRI no lo son y Google definitivamente no lo requiere.
Esto solo es un problema si hace que los nodos en los datos estructurados se fusionen inadvertidamente, como si usaras un itemid del mismo valor en otro lugar del HTML. De lo contrario, es solo una rareza que se puede ignorar.
Ah, y por favor, no cambies a JSON-LD. Sinceramente, eso es preferible para el marcado con mucho texto, como los foros. Tener que duplicar el contenido textual es tonto. Es simplemente más fácil de escribir, por eso lo hemos estado promocionando.