如何对这个特定站点实施 "mainEntityOfPage"?
How to implement "mainEntityOfPage" to this specific site?
如何才能正确地将 mainEntityOfPage
添加到此站点?
在 Google 文档示例中,我看到类似这样的内容:
<div itemscope itemtype="http://schema.org/NewsArticle">
<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>
但这是一个单一作者的博客。它具有 blogPosts。
<article itemscope itemtype="https://schema.org/BlogPosting" class="singlearticles">
这样改就好了:
<article itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://linktoarticle"/>
不确定我是否理解 mainEntityOfPage
的用法。如果有人可以建议我如何处理这个特定的 case/website,我将不胜感激。不是通用的,因为每个网站都可以有不同的 mainEntityOfPage
,但我需要了解并理解该网站的正确实施方式。
关于 Google 的微数据示例
Google的微数据示例无效。如果 meta
元素具有 itemprop
属性,则需要 content
属性 (details)。
我描述了 ,最直接的是 link
元素,它创建了 URL 值(而不是另一个微数据项):
<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
mainEntity
使用mainEntityOfPage
if we first look its inverse property, mainEntity
更容易理解。
对于包含 BlogPosting
的 WebPage
,我们可以:
<body itemscope itemtype="http://schema.org/WebPage">
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/BlogPosting">
</article>
</body>
意思是:有一个WebPage
和一个BlogPosting
,BlogPosting
就是这个WebPage
中描述的"primary entity"。如果涉及更多项目,则表示这一点特别有意义,例如 Person
描述作者,另外五个 BlogPosting
相关 post 项目, WebSite
项目给出一些元数据等。感谢 mainEntity
/mainEntityOfPage
,消费者可以了解该页面上的 primary/main 项目是什么(即该页面代表什么)。
mainEntityOfPage
以下带有 mainEntityOfPage
的示例将产生与上面带有 mainEntity
的示例等效的结构化数据:
<article itemscope itemtype="http://schema.org/BlogPosting">
<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
</div>
</article>
如您所见,BlogPosting
项的元素包含 WebPage
项的元素。这当然是相当不寻常的标记。
但是 mainEntityOfPage
属性 不仅期望一个 (CreativeWork
) 项作为值,它还期望一个 URL。因此,您可以提供页面的 URL,而不是显式提供 WebPage
项目:
<article itemscope itemtype="http://schema.org/BlogPosting">
<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>
(根据 Articles Rich Snippet 的文档,这是 Google 所期望的。)
附注:URL 页与 post
许多网站不区分网页的 URL 和博客的 URL post。对于这些网站来说,像
这样的陈述似乎很愚蠢
http://example.com/article-1 (the blog post)
is the 'mainEntityOfPage'
http://example.com/article-1 (the web page)
http://example.com/article-1 (the web page)
has 'mainEntity'
http://example.com/article-1 (the blog post)
但无论如何它还是有用的(例如,用于选择哪个项目是主要项目,因为其他项目不会有此声明;或用于空白节点;等等)。
但是,某些网站确实存在差异(尤其是 Linked Data),因此它们可能会声明类似
http://example.com/article-1#this (the blog post)
is the 'mainEntityOfPage'
http://example.com/article-1 (the web page)
http://example.com/article-1 (the web page)
has 'mainEntity'
http://example.com/article-1#this (the blog post)
这里,http://example.com/article-1#this
表示博客posting,http://example.com/article-1
表示包含此posting信息的页面(或posting的内容=]ing 本身)。一个更清楚的例子是一个人和一个关于这个人的页面;或建筑物和有关该建筑物的页面。示例见我的回答 why you might want to do this。 (但是,如上所述,您不必区分;您可以对两者使用相同的 URL。)
如何才能正确地将 mainEntityOfPage
添加到此站点?
在 Google 文档示例中,我看到类似这样的内容:
<div itemscope itemtype="http://schema.org/NewsArticle">
<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>
但这是一个单一作者的博客。它具有 blogPosts。
<article itemscope itemtype="https://schema.org/BlogPosting" class="singlearticles">
这样改就好了:
<article itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://linktoarticle"/>
不确定我是否理解 mainEntityOfPage
的用法。如果有人可以建议我如何处理这个特定的 case/website,我将不胜感激。不是通用的,因为每个网站都可以有不同的 mainEntityOfPage
,但我需要了解并理解该网站的正确实施方式。
关于 Google 的微数据示例
Google的微数据示例无效。如果 meta
元素具有 itemprop
属性,则需要 content
属性 (details)。
我描述了 link
元素,它创建了 URL 值(而不是另一个微数据项):
<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
mainEntity
使用mainEntityOfPage
if we first look its inverse property, mainEntity
更容易理解。
对于包含 BlogPosting
的 WebPage
,我们可以:
<body itemscope itemtype="http://schema.org/WebPage">
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/BlogPosting">
</article>
</body>
意思是:有一个WebPage
和一个BlogPosting
,BlogPosting
就是这个WebPage
中描述的"primary entity"。如果涉及更多项目,则表示这一点特别有意义,例如 Person
描述作者,另外五个 BlogPosting
相关 post 项目, WebSite
项目给出一些元数据等。感谢 mainEntity
/mainEntityOfPage
,消费者可以了解该页面上的 primary/main 项目是什么(即该页面代表什么)。
mainEntityOfPage
以下带有 mainEntityOfPage
的示例将产生与上面带有 mainEntity
的示例等效的结构化数据:
<article itemscope itemtype="http://schema.org/BlogPosting">
<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
</div>
</article>
如您所见,BlogPosting
项的元素包含 WebPage
项的元素。这当然是相当不寻常的标记。
但是 mainEntityOfPage
属性 不仅期望一个 (CreativeWork
) 项作为值,它还期望一个 URL。因此,您可以提供页面的 URL,而不是显式提供 WebPage
项目:
<article itemscope itemtype="http://schema.org/BlogPosting">
<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>
(根据 Articles Rich Snippet 的文档,这是 Google 所期望的。)
附注:URL 页与 post
许多网站不区分网页的 URL 和博客的 URL post。对于这些网站来说,像
这样的陈述似乎很愚蠢http://example.com/article-1 (the blog post)
is the 'mainEntityOfPage'
http://example.com/article-1 (the web page)
http://example.com/article-1 (the web page)
has 'mainEntity'
http://example.com/article-1 (the blog post)
但无论如何它还是有用的(例如,用于选择哪个项目是主要项目,因为其他项目不会有此声明;或用于空白节点;等等)。
但是,某些网站确实存在差异(尤其是 Linked Data),因此它们可能会声明类似
http://example.com/article-1#this (the blog post)
is the 'mainEntityOfPage'
http://example.com/article-1 (the web page)
http://example.com/article-1 (the web page)
has 'mainEntity'
http://example.com/article-1#this (the blog post)
这里,http://example.com/article-1#this
表示博客posting,http://example.com/article-1
表示包含此posting信息的页面(或posting的内容=]ing 本身)。一个更清楚的例子是一个人和一个关于这个人的页面;或建筑物和有关该建筑物的页面。示例见我的回答 why you might want to do this。 (但是,如上所述,您不必区分;您可以对两者使用相同的 URL。)