同时使用 containedIn 和 additionalProperty 来描述一个项目
Using both containedIn and additionalProperty to describe an item
我有一个 table 包含城市的一些属性。该城市是更大区域的一部分,因此我想添加 属性 containedIn
。但是,我还想指出该区域的类型,例如 "region"、"province" 或 "state",因此我尝试将 additionalProperty
添加到这些区域。我很困惑如何正确有效地做到这一点。
这是我尝试过的方法,但是 Google 结构化数据测试工具给出了 two/duplicate 项(和两个 name
属性)。我想将 containedIn
和 additionalProperty
添加到 San Juan
和 San Pablo
,但似乎 属性 name
都被 [=11] 识别=] 和 additionalProperty
,所以我不知道如何解决它:
<div itemscope itemtype='http://schema.org/City'>
<h1 itemprop='name'>San Pedro</h1>
<table>
<tr itemprop='additionalProperty' itemscope itemtype='http://schema.org/PropertyValue'>
<td itemprop='name'>Type</td>
<td itemprop='value'>city</td>
</tr>
<tr itemprop='additionalProperty containedIn' itemscope itemtype='http://schema.org/PropertyValue http://schema.org/AdministrativeArea'>
<td itemprop='name'>State</td>
<td itemprop='value'><a itemprop='url' href='#.html'><span itemprop='name'>San Juan</span></a></td>
</tr>
<tr itemprop='additionalProperty containedIn' itemscope itemtype='http://schema.org/PropertyValue http://schema.org/AdministrativeArea'>
<td itemprop='name'>Region</td>
<td itemprop='value'><a itemprop='url' href='#.html'><span itemprop='name'>San Pablo</span></a></td>
</tr>
</table>
</div>
显示在Google的SDTT
Google 的 SDTT 中的显示对于您提供的微数据来说似乎是正确的:
如果您使用多个属性添加一个项目,SDTT 每 属性 显示一次该项目。
这就是他们决定展示它的方式。他们也可以决定展示这样的东西,但他们没有:
additionalProperty, containedIn
@type PropertyValue
@type AdministrativeArea
如果您使用多个属性来添加一个项目,and/or如果这个项目有多种类型,您不添加multiple/different个项目,它是同一个项目.
name
仅适用于多种类型中的一种,或者仅适用于多种属性之一添加的项目,这是没有意义的。只有一个项目,一组属性,多种类型,由多个属性添加。
含义
据我了解您的数据,您有一个城市 (San Pedro),它是两个行政区域(San Juan、San Pablo)的一部分。
我不确定对它建模是否有意义,因此 AdministrativeArea
是 也是 和 PropertyValue
。将 additionalProperty PropertyValue
应用于 AdministrativeArea
.
似乎更有意义
在 table
内不是那么容易,所以为了这个例子,我使用 div
:
<div itemprop='containedIn' itemscope itemtype='http://schema.org/AdministrativeArea'>
<a itemprop='url' href='#.html'><span itemprop='name'>San Juan</span></a>
<div itemprop='additionalProperty' itemscope itemtype='http://schema.org/PropertyValue'>
<meta itemprop='name' content='State'>
<meta itemprop='value' content='San Juan'>
</div>
</div>
备注:"type of area"
使用 additionalType
而不是 additionalProperty
使用additionalProperty PropertyValue
指定区域类型是可能的,但不常见。通常实际类型用于此类目的。
找到代表该概念的类型(例如 "Region"),或创建您自己的类型,并将其添加到您能找到的最具体的 Schema.org 类型之外。
在 Microdata 中,itemtype
属性只能从相同的词汇表中获取类型,所以你必须使用 additionalType
property:
<div itemprop='containedIn' itemscope itemtype='http://schema.org/AdministrativeArea'>
<a itemprop='url' href='#.html'><span itemprop='name'>San Juan</span></a>
<link itemprop="additionalType" href="http://example.com/some-vocabulary/Region">
</div>
对于城市:通过使用 Schema.org 的 City
类型,您已经表明它是一座城市,因此您的 additionalProperty
(type=city)似乎是多余。但是如果你想传达一些其他类型,你也可以使用与additionalType
相同的方法。
我有一个 table 包含城市的一些属性。该城市是更大区域的一部分,因此我想添加 属性 containedIn
。但是,我还想指出该区域的类型,例如 "region"、"province" 或 "state",因此我尝试将 additionalProperty
添加到这些区域。我很困惑如何正确有效地做到这一点。
这是我尝试过的方法,但是 Google 结构化数据测试工具给出了 two/duplicate 项(和两个 name
属性)。我想将 containedIn
和 additionalProperty
添加到 San Juan
和 San Pablo
,但似乎 属性 name
都被 [=11] 识别=] 和 additionalProperty
,所以我不知道如何解决它:
<div itemscope itemtype='http://schema.org/City'>
<h1 itemprop='name'>San Pedro</h1>
<table>
<tr itemprop='additionalProperty' itemscope itemtype='http://schema.org/PropertyValue'>
<td itemprop='name'>Type</td>
<td itemprop='value'>city</td>
</tr>
<tr itemprop='additionalProperty containedIn' itemscope itemtype='http://schema.org/PropertyValue http://schema.org/AdministrativeArea'>
<td itemprop='name'>State</td>
<td itemprop='value'><a itemprop='url' href='#.html'><span itemprop='name'>San Juan</span></a></td>
</tr>
<tr itemprop='additionalProperty containedIn' itemscope itemtype='http://schema.org/PropertyValue http://schema.org/AdministrativeArea'>
<td itemprop='name'>Region</td>
<td itemprop='value'><a itemprop='url' href='#.html'><span itemprop='name'>San Pablo</span></a></td>
</tr>
</table>
</div>
显示在Google的SDTT
Google 的 SDTT 中的显示对于您提供的微数据来说似乎是正确的:
如果您使用多个属性添加一个项目,SDTT 每 属性 显示一次该项目。
这就是他们决定展示它的方式。他们也可以决定展示这样的东西,但他们没有:
additionalProperty, containedIn @type PropertyValue @type AdministrativeArea
如果您使用多个属性来添加一个项目,and/or如果这个项目有多种类型,您不添加multiple/different个项目,它是同一个项目.
name
仅适用于多种类型中的一种,或者仅适用于多种属性之一添加的项目,这是没有意义的。只有一个项目,一组属性,多种类型,由多个属性添加。
含义
据我了解您的数据,您有一个城市 (San Pedro),它是两个行政区域(San Juan、San Pablo)的一部分。
我不确定对它建模是否有意义,因此 AdministrativeArea
是 也是 和 PropertyValue
。将 additionalProperty PropertyValue
应用于 AdministrativeArea
.
在 table
内不是那么容易,所以为了这个例子,我使用 div
:
<div itemprop='containedIn' itemscope itemtype='http://schema.org/AdministrativeArea'>
<a itemprop='url' href='#.html'><span itemprop='name'>San Juan</span></a>
<div itemprop='additionalProperty' itemscope itemtype='http://schema.org/PropertyValue'>
<meta itemprop='name' content='State'>
<meta itemprop='value' content='San Juan'>
</div>
</div>
备注:"type of area"
使用additionalType
而不是 additionalProperty
使用additionalProperty PropertyValue
指定区域类型是可能的,但不常见。通常实际类型用于此类目的。
找到代表该概念的类型(例如 "Region"),或创建您自己的类型,并将其添加到您能找到的最具体的 Schema.org 类型之外。
在 Microdata 中,itemtype
属性只能从相同的词汇表中获取类型,所以你必须使用 additionalType
property:
<div itemprop='containedIn' itemscope itemtype='http://schema.org/AdministrativeArea'>
<a itemprop='url' href='#.html'><span itemprop='name'>San Juan</span></a>
<link itemprop="additionalType" href="http://example.com/some-vocabulary/Region">
</div>
对于城市:通过使用 Schema.org 的 City
类型,您已经表明它是一座城市,因此您的 additionalProperty
(type=city)似乎是多余。但是如果你想传达一些其他类型,你也可以使用与additionalType
相同的方法。