我有一个包含城市某些属性的表格。这个城市是更大区域的一部分,所以我想添加属性containedIn
。但是,我还想指出该区域的类型,如“region”,“province”或“state”,因此我尝试将additionalProperty
添加到这些区域。我对如何正确有效地做到这一点非常困惑。
这是我尝试过的,但Google结构化数据测试工具提供了两个/重复项(以及两个name
属性)。我想将containedIn
和additionalProperty
添加到San Juan
和San Pablo
,但似乎name
和{containedIn
同时识别属性additionalProperty
{1}},所以我不知道如何修复它:
<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>
答案 0 :(得分:2)
Google SDTT中的显示对于您提供的微数据似乎是正确的:
如果使用多个属性添加项目,SDTT会为每个属性显示此项目一次。
这就是他们决定展示它的方式。他们也可以决定展示这样的东西,但他们没有:
additionalProperty, containedIn
@type PropertyValue
@type AdministrativeArea
如果您使用多个属性添加项目,和/或此项目有多种类型,则不会添加多个/不同的项目,而是同一个项目。
name
仅适用于多种类型中的一种,或仅适用于由多个属性之一添加的项目,这是没有意义的。只有一个项目,具有一组属性,具有多个类型,由多个属性添加。
据我了解您的数据,您有一个城市(圣佩德罗),它是两个行政区域(圣胡安,圣巴勃罗)的一部分。
我不确定对其进行建模是有意义的,以便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>
additionalType
代替additionalProperty
作为“区域类型”使用additionalProperty PropertyValue
指定区域的类型是可能的,但不常见。通常,实际类型用于此目的。
找到代表概念的类型(例如“Region”),或创建自己的类型,并添加它以及您可以找到的最具体的Schema.org类型。
在微数据中,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
(类型=城市)似乎是多余的。但是如果你想传达其他类型,你也可以在additionalType
处使用相同的方法。