Ecco un pseudocodice per il controllo corrente visualizzato in Search Console. Penso che aiuterà molto in questi thread. Potrei inviarti ShEx o SHACL ma quelli sono molto meno leggibili dall’uomo.
if not (IsDeletedContent() OR IsExternalContent())
then if not ("text" OR "articleBody" OR "sharedContent" OR "image" or "video")
then report(OneOfThreeRequired("text", "image", "video"))
if not ("author")
then Report(Required("author"))
if not("datePublished")
then Report(Required("datePublished")
L’idea è che se il DiscussionForumPosting/OP ha il suo contenuto nella pagina corrente, dovrebbe esserci un campo di contenuto di qualche tipo.
Se il DiscussionForumPosting fa riferimento a contenuti su una pagina diversa (come nella pagina originale di contenuti multipagina), può avere solo uno stub che contiene qualsiasi cosa (come il titolo dell’argomento dell’OP) e quindi fare riferimento all’URL della prima pagina. Questo è il controllo IsExternalContent(), che verifica semplicemente se url != page URL.
Il secondo esempio nella nostra documentazione doveva modellare esattamente questo caso (la 14a pagina fa riferimento a un post stub dalla prima pagina).
author e date sono attualmente richiesti in ogni caso nelle nostre regole di convalida. Questo serve principalmente a evitare un passaggio aggiuntivo per trovare questi dati. Potresti almeno vedere quanto sarebbe utile conoscere la data dell’OP per capire quanto è obsoleto il commento. Puoi semplicemente inserire elementi meta con quei dati? Non ero preoccupato per questi campi tanto quanto per il riempimento della pagina con dati ridondanti.