使用containsIn和additionalProperty来描述项目

时间:2018-03-31 22:48:18

标签: schema.org microdata

我有一个包含城市某些属性的表格。这个城市是更大区域的一部分,所以我想添加属性containedIn。但是,我还想指出该区域的类型,如“region”,“province”或“state”,因此我尝试将additionalProperty添加到这些区域。我对如何正确有效地做到这一点非常困惑。

这是我尝试过的,但Google结构化数据测试工具提供了两个/重复项(以及两个name属性)。我想将containedInadditionalProperty添加到San JuanSan 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>

1 个答案:

答案 0 :(得分:2)

在Google的SDTT中显示

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处使用相同的方法。