事件中的 Schema.org 位置 属性 无效

Invalid Schema.org location property in Event

我正在尝试为我的 HTML 页面设置架构。验证器 (https://developers.google.com/structured-data/testing-tool) 在此页面失败:

<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <div itemscope itemtype="http://schema.org/SportsEvent">
        <h1 itemprop="name">Event name</h1>
    <p itemprop="description">Some text description ...</p>
    <time itemprop="startDate" datetime="2016-03-16T16:00:00+01:00">16.3.</time> - <time itemprop="endDate" datetime="2016-03-20T16:00:00+01:00">20.3.2016</time>
    <span itemprop="location">29-31 Craven Rd,London W2 3BX</span>
   </div>
</body>
</html>

如您所见,位置地址不能为空。

我也试过使用工具:http://schema-creator.org/event.php 但即使我填写了所有输入,结果也是一样的:"Error invalid location."

<div itemscope itemtype="http://schema.org/SportsEvent">
    <a itemprop="url" href="https://www.myevent.com">
        <div itemprop="name"><strong>Me super event</strong>
        </div>
    </a>
    <div itemprop="description">super event
    </div>
    <div>
        <meta itemprop="startDate" content="2016-03-06T12:00">Starts: 03/06/2016 12:00PM
    </div>
    <meta itemprop="endDate" content="2016-03-12:00.000">Ends: 2016-03-12:00.000
</div>
<div itemprop="location" itemscope itemtype="http://schema.org/PostalAddress">
    <div itemprop="streetAddress">29-31 Craven Rd,London W2 3BX
    </div>
    <div>
        <span itemprop="addressLocality">London
        </span>, 
        <span itemprop="addressRegion">United kingdom
        </span>
    </div>
</div>

谁能告诉我如何指定位置?

编辑: 正如@unor 告诉我的,location 必须是 PostalAddress 的实例,所以我修改了它:

<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <div itemscope itemtype="http://schema.org/SportsEvent">
    <h1 itemprop="name">Event name</h1>
    <p itemprop="description">Some text description ...</p>
    <time itemprop="startDate" datetime="2016-03-16T16:00:00+01:00">16.3.</time> - <time itemprop="endDate" datetime="2016-03-20T16:00:00+01:00">20.3.2016</time>
    <span itemprop="location" itemscope itemtype="http://schema.org/PostalAddress">
        <span itemprop="streetAddress">29-31 Craven Rd</span>
        <span itemprop="address">29-31 Craven Rd,London W2 3BX</span>
        <span itemprop="name">Test</span>
    </span>
   </div>
</body>
</html>

但仍然无效,看来PostalAddress中的地址必须是Place,但是Place中必须有PostalAddress :-(

根据 Schema.org,您的标记是正确的:location property 可能包含 Text.

当Google的SDTT报告错误时,并不一定意味着您的标记有误。通常它 用于您的页面。

在您的情况下,错误与 Google 的 Event Rich Snippet. For showing this snippet, Google requires 有关,即 location 属性 有一个 PlacePostalAddress item 作为值,而不是 Text(虽然 Google 也说 "A text string is permitted […]",但他们的测试工具似乎不喜欢它)。

你的第二个代码片段这样做了,但它没有将 divlocation 属性 嵌套在 SportsEventdiv 中,因此该位置与事件无关。

关于你的第三个片段:这似乎是测试工具中的一个错误,它需要 address 属性 for PostalAddress(Schema.org 没有定义一)。如果您关心 "errors" 测试工具报告,如果您使用 Place 作为 location 的值,并且 address 具有 PostalAddress,它应该可以工作项目作为价值。如果您提供 Place 并在 address 属性:

中使用文本,它也有效
<div itemprop="location" itemscope itemtype="http://schema.org/Place">
  <span itemprop="name">Test</span>
  <span itemprop="address">29-31 Craven Rd, London W2 3BX</span>
</div>