如何正确地将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
用法。如果有人可以建议我如何处理这个特定的案例/网站,我将不胜感激。不一般,因为每个站点可以有不同的mainEntityOfPage
,但我需要知道并理解该站点的正确实现。
答案 0 :(得分:45)
Google的Microdata示例无效。如果meta
元素具有itemprop
属性,则content
属性是必需的(details)。
我描述了different ways how to specify mainEntityOfPage
in Microdata,最简单的一个是link
元素,它创建了一个URL值(而不是另一个微数据项):
<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
mainEntity
如果我们首先查看其反向属性mainEntityOfPage
,则更容易理解mainEntity
的使用。
对于包含WebPage
的{{1}},我们可以:
BlogPosting
这意味着:有一个<body itemscope itemtype="http://schema.org/WebPage">
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/BlogPosting">
</article>
</body>
和一个WebPage
,BlogPosting
是&#34;主要实体&#34;在BlogPosting
中描述。如果涉及更多项目,例如描述作者的WebPage
,相关帖子的另外五个Person
项目,提供一些元数据的BlogPosting
项目等,则表示这尤其有意义。感谢WebSite
/ mainEntity
,消费者可以了解该页面上的主要/主要项目(即页面代表的内容)。
mainEntityOfPage
以下带有mainEntityOfPage
的示例会产生等效的结构化数据,例如上面带有mainEntityOfPage
的示例:
mainEntity
如您所见,<article itemscope itemtype="http://schema.org/BlogPosting">
<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
</div>
</article>
项的元素包含BlogPosting
项的元素。这当然是相当不寻常的标记。
但是mainEntityOfPage
属性不仅期望一个(WebPage
)项作为值,它还需要一个URL。因此,不是明确提供CreativeWork
项,而是可以提供页面的URL:
WebPage
(这是Google期望的,根据Articles Rich Snippet的文档。)
许多网站不区分网页的网址和博客帖子的网址。对于这些网站,陈述类似
的内容似乎很愚蠢<article itemscope itemtype="http://schema.org/BlogPosting">
<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>
http://example.com/article-1 (the blog post)
is the 'mainEntityOfPage'
http://example.com/article-1 (the web page)
但无论如何它都是有用的(例如,选择哪个项目是主要项目,因为其他项目不具有此语句;或者对于空白节点;等等。)
然而,有些网站确实存在差异(特别是对于Linked Data),所以他们可能会说出像
这样的内容http://example.com/article-1 (the web page)
has 'mainEntity'
http://example.com/article-1 (the blog post)
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
表示包含此发布信息的页面(或发布内容本身)。一个更清晰的例子是一个人和一个关于这个人的页面;或建筑物和关于这栋建筑的页面。请参阅我的答案以获取示例why you might want to do this。 (但是,如上所述,您不必区分;您可以为两者使用相同的URL。)