Улучшения схемы форума обсуждений

Давайте составим псевдокод для текущей проверки, отображаемой в Search Console. Я думаю, это сильно поможет в этих обсуждениях. Я мог бы отправить вам спецификации ShEx или SHACL, но они гораздо менее читаемы для человека.

    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")

Суть в следующем: если у записи DiscussionForumPosting (или первого сообщения темы) контент находится на текущей странице, то должно присутствовать какое-либо поле с контентом.

Если DiscussionForumPosting ссылается на контент на другой странице (например, на исходной странице многостраничного материала), то может быть достаточно заглушки, содержащей любую информацию (например, заголовок темы первого сообщения), с последующей ссылкой на URL первой страницы. Именно это проверяет функция IsExternalContent(), которая просто сверяет, что URL не совпадает с URL текущей страницы.

Второй пример в нашей документации должен был в точности моделировать этот случай (14-я страница ссылается на заглушку поста с первой страницы).

Поля author и date в наших правилах валидации в настоящее время обязательны в любом случае. Это сделано в основном для того, чтобы избежать лишнего перехода для поиска этих данных. Вы могли бы хотя бы видеть, как знание даты первого сообщения помогает понять, насколько устарел комментарий. Не могли бы вы просто добавить туда мета-элементы с этими данными? Я не слишком беспокоился по поводу этих полей в контексте раздувания страницы избыточными данными.