3

I am trying to work out whether Event structured data is valid if the location field is just text, but I have found conflicting answers.

Example:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "Event",
    "startDate": "2013-09-14T21:30",
    "name": "Name of the event",
    "location" : "Some place"
}
</script>

Google's rich snippet guide explicitly says that this is permissible (though not recommended):

A text string is permitted, but we recommend that you represent the location by using a nested Place or Organization to separately specify a venue name and its address.

But if I paste the data above into Google's own structured data testing tool, it interprets "location" as an object and rejects it because it has no address:

location [Thing]:
    name: Some place
    address: missing and required

schema.org also suggests that the only valid types are PostalAddress or Place, and not plain text.

The linter at http://linter.structured-data.org/, however, accepts the data without any errors.

1

There is no clear rule that says you may not use a string instead a nested place. But as Google wants you to deliver the most reliable data they post an error on their testing tool.

In my experience Google wants you to use a proper location. Therefore a real life address delivered like in the Google guide is requested:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "Event",
    "startDate": "2013-09-14T21:30",
    "name": "Name of the event",
    "location" : {
       "@type" : "Place",
       "sameAs" : "http://www.hi-dive.com",
       "name" : "The Hi-Dive",
       "address" : "7 S. Broadway, Denver, CO 80209"}
}
</script>

Despite the schema.org specification Google decided to take this additional requirement in order to receive high quality data. As their guide 1 says:

we recommend that you represent the location by using a nested Place or Organization to separately specify a venue name and its address.

If you deliver a simple string like "some place" Google may not accept your data. Further they may serve you a manual action on spammy Rich Snippets if they do not recognize real life locations in your code.

When optimizing and testing your data for Google, stick to their testing tools. Though the liner on structured-data.org works fine it does not respect Googles requirements.

To sum it up:

Your example code matches the schema.org specification and therefore is valid. But Google wants to encourage you to deliver more detailed data and requests a nested place or organization instead a simple string for location.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.