Structured data validation error: illustration (CreativeWork) inside an Article is not a valid image attribute?

Structured data validation error: illustration (CreativeWork) inside an Article is not a valid image attribute?

我通常将文章中的插图和照片标记为 CreativeWork - 以表彰适当的作者(视觉效果的创作者)。

<article itemscope itemtype="http://schema.org/Article">
  <h1 itemprop="headline">Headline</h1>
  <p itemprop="author" itemscope itemtype="http://schema.org/Person">by <span itemprop="name">John Public</span></p>

  <figure itemscope itemtype="http://schema.org/CreativeWork">
    <img itemprop="image" src="http://example.com/artwork.jpg" alt="Artwork" />
    <figcaption itemprop="author" itemscope itemtype="http://schema.org/Person">Illustration by <span itemprop="name">George Smith</span></figcaption>
  </figure>

  <p>Full content of the article.</p>
</article>

到目前为止一切顺利。文章有作者和插图,均已正确注明。

但是,根据Google validation tool, image is a required attribute for Article type, otherwise the code above is not passing the validation. This is not, however, a requirement of the Article Schema

我如何避免代码重复,通过 Google 架构验证并仍然向作者和插图画家致敬?

Schema.org 没有必需的属性,但像 Google 搜索这样的消费者当然可能需要提供某些属性来处理您的数据(例如,显示丰富网页摘要)。

如果你想得到Google’s Rich Snippet for Articles,你必须提供属性headlineimagedatePublished.

如果图像代表文章(对比只是文章的一部分但不具有代表性的图像),您可以使用 image property 引用 ImageObject¹ 来自Article.
为此,您只需将 itemprop 添加到 figure 元素:

<figure itemprop="image" itemscope itemtype="http://schema.org/ImageObject">

如果图像不具有代表性,则不应使用此图像(在这种情况下,您可能不会获得此 Article Rich Snippet)。为了仍然能够引用²来自 Article 的图像,您可以使用 hasPart property:

<figure itemprop="hasPart" itemscope itemtype="http://schema.org/ImageObject">

¹ 您正在使用 CreativeWork,但如果作品是图像,您最好使用子类型 ImageObject and its contentUrl property

² 如果你不使用 属性 从 Article 引用 ImageObject,它们就没有任何关系。 HTML nesting does not affect the Microdata 除非你使用 itemprop.