文章结构化数据所需的新的mainEntityOfPage


12

我看了Google提出的文章“结构化数据”,发现有一个新的必填和推荐字段,上周没有。链接在这里:

https://developers.google.com/structured-data/rich-snippets/articles

列表中的第一个属性是:

  • mainEntityOfPage。@ id(推荐)

我不知道该物业的价值必须是什么?这是什么性质?它是链接到:

..或指向当前博客文章的链接,例如:

他们的示例代码中包含以下内容:

<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article" />

我目前所拥有的这还不符合测试工具的规则-我仍在忙于添加所有必需的属性,同时尝试在其中添加推荐的属性:

<div itemscope itemtype="http://schema.org/BlogPosting">
   <h1 itemprop="headline">
      <a href="http:///www.example.com/blog/1001/my-blog-article" itemprop="url">My Blog Article</a>
   </h1>
   <p>Written by
      <span itemprop="author" itemscope itemtype="http://schema.org/Person">
         <span itemprop="name">Mase Kind</span>
      </span> on
      <time itemprop="datePublished" datetime="2015-11-16T15:30:00+02:00">November 16, 2015</time>
      <meta itemprop="dateModified" content="2015-12-10T12:29:00+02:00" />
      <div itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
         <div itemprop="logo" itemscope itemtype="http://schema.org/ImageObject"></div>
         <meta itemprop="name" content="My Company Name" />
      </div>
   </p>
   <div itemprop="articleBody">
      <p>first article body</p>
   </div>
</div>

我的文档中也有此内容:

<body itemscope itemtype="http://schema.org/WebPage">
...
</body>

这会与Google提供的代码示例有任何冲突吗?


我今天早上看到同样的事情发生在我的网站上,并进入了该线程。
dasickle

Answers:


14

mainEntityOfPage属性用于提供以事物为主要实体的页面的URL 。如果您看一下inverse属性,它可能会变得更加清晰mainEntity:这给出了页面的主要实体(请参见示例)。

例如,对于包含单个博客文章的网页,您可以提供以下其中一项:

  • BlogPosting→交通mainEntityOfPage→交通WebPage
  • WebPage→交通mainEntity→交通BlogPosting

这些属性对于传达页面的主要内容是有用的(因为页面可能包含多个项目,例如,ItemList带有相关WebPage项目的,Person描述作者的内容,WebSite提供一些元数据等)。

(有关更详细的解释,请参见我对Stack Overflow的回答。)


两种使用方法mainEntityOfPage

  • 提供页面的URL
  • 嵌入/引用页面项(通常是WebPage

第二个通常没有多大意义(您宁愿使用inverse属性mainEntity),并且可能由于这个原因Google建议/期望第一个。

为了提供URL,您可以简单地使用一个link元素:

<article itemscope itemtype="http://schema.org/BlogPosting">
  <link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>

Google的结构化数据测试工具接受了这一点。

Articles Rich Snippet示例中,Google 改为使用meta元素itemid

<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>

这是无效的HTML5 + Microdata:如果meta元素具有itemprop属性,则它也必须具有content属性


如果我们还以meta形式提供带有url的内容怎么办?例如,<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article" content='https://google.com/article' /> 它将很好地验证并且不会在结构化数据测试工具中显示错误
StarWars

@StarWars:是的,这是使此meta元素有效的方式。请注意,该content值将被忽略,因此您可以提供一个空值。
UNOR

好的,我现在将content =“”添加到元标记。
StarWars

为什么Google使用meta而不是link其示例?这些都在结构化数据测试工具中得到验证。虽然,预览是不同的。当link使用时,它具有mainEntityOfPage http://example.com/article-1同时的情况下,meta它显示@id@type属性。
StarWars

@StarWars:是的,这是完全不同的:meta创建带有类型和URI作为标识符的新项目的link方式,只是链接到页面。我不知道为什么Google的文档会使用meta,尤其是因为我认为link方法更简单。
UNOR

2

这是什么性质?

背景技术所述,它是对urlsameAs属性的补充。mainEntity

它具有特有的名称,因为它可以应用于类型为的所有项目Thing。如果仅应用于Articles它,则可以称为mainTopic/ mainTopicOfArticle并更加清楚。

我不知道该物业的价值必须是什么?

该属性的值应为根据 Schema.org 工作的类型CreativeWorkURL引用的项目。这意味着它也可以是一个或如你所提到的。但是,如果要扩展AMP页面,则该值应为URL。ArticleBlogPosting

这会与Google提供的代码示例有任何冲突吗?

尽管Google的结构化数据测试工具说什么,但他们的文档不再建议使用mainEntityOfPage非AMP页面,因此您可以随意忽略它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.