如何从多个其他项目中引用另一个项目声明,以满足schema.org?

How to refer to another item declaration from multiple other items, to satisfy schema.org?

经过大量搜索如何正确引用一个项目后,我发现 this minimal example 展示了如何将 Organization 项目引用为 branchOf Hotel 项。它在 Organization 上定义了属性 itemprop="branchOf",它在引用它后成为 Hotel 项目的 属性。

<div itemprop="branchOf" itemscope itemtype="http://schema.org/Organization" id="schema-organization">
 <h1 itemprop="name">The Hotel Chain</h1>
</div>

<div itemscope itemtype="http://schema.org/Hotel" itemref="schema-organization">
 <h2 itemprop="name">Hotel Location 1</h2>
</div>

该示例有效。

但现在我需要添加一个适用于 OrganizationPerson。我可以通过在 Organization 上定义 itemprop="worksFor",然后从我的 Person 中引用它来使用相同的概念,如下所示:

<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" id="schema-organization">
 <h1 itemprop="name">The Hotel Chain</h1>
</div>
<div itemscope itemtype="http://schema.org/Hotel" itemref="schema-organization">
 <h2 itemprop="name">Hotel Location 1</h2>
</div>
<div itemscope itemtype="http://schema.org/Person" itemref="schema-organization">
    <div itemprop="name">John Doe</div>
</div>

并且 Person 正确获取其 worksFor 属性以在此处显示 Organization

但现在我必须从 Hotel 中删除 itemref,否则它会抱怨它无法识别 worksFor 属性。如果我这样做,Hotel 不再以任何方式引用 Organization,因此它不是它的一个分支。

所以看起来这是一个非此即彼的情况。

我怎样才能同时申报这两者? Person 需要为 Organization 工作,Hotel 需要成为 Organization 的分支。

您可以使用 itemid 并从每个实体引用相同的 itemid。例如

<div itemscope itemtype="http://schema.org/Organization" itemid="#organization">
 <h1 itemprop="name">The Hotel Chain</h1>
</div>
<div itemscope itemtype="http://schema.org/Hotel" >
 <h2 itemprop="name">Hotel Location 1</h2>
 <meta itemprop="branchOf" itemscope itemid="#organization"/>
</div>
<div itemscope itemtype="http://schema.org/Person">
    <div itemprop="name">John Doe</div>
    <meta itemprop="worksFor" itemscope itemid="#organization"/>
</div>