Event Rich Snippet: location/address for Google Testing Tool - schema.org

I'm trying to be friendly to Google Structured Data Testing tool. I try to give him an Event snippet: https://schema.org/Event
Problem is for PostalAddress: I put itemprop="location" for my PostalAddress, but then it considers that address is missing for PostalAddress.
I don't know what can I set in an adress item, as it is not even described in schema.org.
<div itemscope itemtype="http://schema.org/Event">
<h1 itemprop="name">PIÈCE DE THÉÂTRE : " L'AUBERGE DU CARAMEL " DE JEAN-LUC PECQUEUR</h1>
<ul>
<li class="avenir"><span itemprop="startDate" content="2015-04-10T20:30:00+02:00">10/04/15</span> 20h30</li>
<li class="avenir"><span itemprop="startDate" content="2015-04-11T20:30:00+02:00">11/04/15</span> 20h30</li>
<li class="avenir"><span itemprop="startDate" content="2015-04-12T15:00:00+02:00">12/04/15</span> 15h</li>
</ul>
<address>
<div itemprop="location" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="name" class="raisoc">PIÈCE DE THÉÂTRE : " L'AUBERGE DU CARAMEL " DE JEAN-LUC PECQUEUR</span>
<br />
<span itemprop="streetAddress">route de Paris<br /></span>
<span itemprop="postalCode">03630</span> <span itemprop="addressLocality">DESERTINES</span>
<br />
</div>
</address>
</div>

Its not clear in the definitions above, but examples are explicit about the usage. Try doing it the below way. snippet tool comes out green.
<div itemscope itemtype="http://schema.org/Event">
<h1 itemprop="name">PIÈCE DE THÉÂTRE : " L'AUBERGE DU CARAMEL " DE JEAN-LUC PECQUEUR</h1>
<ul>
<li class="avenir"><span itemprop="startDate" content="2015-04-10T20:30:00+02:00">10/04/15</span> 20h30</li>
<li class="avenir"><span itemprop="startDate" content="2015-04-11T20:30:00+02:00">11/04/15</span> 20h30</li>
<li class="avenir"><span itemprop="startDate" content="2015-04-12T15:00:00+02:00">12/04/15</span> 15h</li>
</ul>
<address>
<div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="name" class="raisoc">PIÈCE DE THÉÂTRE : " L'AUBERGE DU CARAMEL " DE JEAN-LUC PECQUEUR</span>
<br />
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">route de Paris<br /></span>
<span itemprop="postalCode">03630</span>
<span itemprop="addressLocality">DESERTINES</span>
</div>
<br />
</div>
</address>
</div>

This error does not make sense.
You are using the location property with a PostalAddress item as value, which is fine. It’s appropriate use of the Schema.org vocabulary, and it’s also recommended by Google’s Event Rich Snippet documentation.
Now, Google’s Testing Tool reports that Google requires the address property for this PostalAddress for showing their Event Rich Snippet. But neither is Schema.org’s address property defined for PostalAddress (there can’t be an address of an address), nor does Google list that the address property would be required.
It would make sense to use address if Place is used instead of PostalAddress, but it’s plain wrong for PostalAddress. Probably Google’s Testing Tool is bugged / confusing this.

Related

ItemList with QuantitativeValue for table lists

I am trying to create a schema to use with several tables that use a list of products (e.g. bottles) arranged based on either height, volume, width, etc.
I tried this Microdata:
<div itemscope itemtype="http://schema.org/ItemList" id="id1">
<ul>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<meta itemprop="position" content="1" />
<span itemprop="item" itemscope itemtype="http://schema.org/Thing">
<span itemprop="name" class="name">Coke Bottle</span>
<span class="measure">
<span itemscope itemtype="http://schema.org/QuantitativeValue">
<span itemprop="value">2359</span>
<span itemprop="unitText">mm</span>
<meta itemprop="unitCode" content="MMT" />
</span> /
<span itemscope itemtype="http://schema.org/QuantitativeValue">
<span itemprop="value">92.52</span>
<span itemprop="unitText">in</span>
<meta itemprop="unitCode" content="INH" />
</span>
</span>
</span>
</li>
</ul>
</div>
The problem is that the measure is not associated directly with the product.
How can I structure this data using Microdata to maintain the measurement values using QuantitativeValue and make the ItemList work for my need?
These are just tables showing a list of product names ordered by these values either ascending or descending, they are not used for navigation, just presenting information based on aggregated data.
In your post I see the following contradictions:
The problem is that the measure is not associated directly with the product.
and
These are just tables showing a list of product names
However, if this is a product, you can use the following the valid markup for your list:
<div itemscope itemtype="https://schema.org/ItemList" id="id1">
<ul>
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<meta itemprop="position" content="1" />
<span itemprop="item" itemscope itemtype="https://schema.org/Product">
<a itemprop="url" href=example.com/list.html#cokebottle><span itemprop="name" class="name">Coke Bottle</span></a>
<span class="measure" itemprop="additionalProperty" itemscope itemtype="https://schema.org/PropertyValue">
<span itemprop="value">2359</span>
<span itemprop="unitText">mm</span>
<meta itemprop="unitCode" content="MMT" />
<meta itemprop="propertyID" content="http://www.unece.org/fileadmin/DAM/cefact/recommendations/bkup_htm/add3lm.htm" /> /
<span itemprop="value">92.52</span>
<span itemprop="unitText">in</span>
<meta itemprop="unitCode" content="INH" />
<meta itemprop="propertyID" content="http://www.unece.org/fileadmin/DAM/cefact/recommendations/bkup_htm/add3hk.htm" />
</span>
</span>
</li>
</ul>
</div>
Here we used the guide of Google for Single, all-in-one-page list:
A single, all-in-one-page list hosts all list information, including full text of each item: for example, a gallery of recipes for various kinds of muffins, all contained on one page.
Note that the reference (s) for this markup must have the same URL, but different anchors such as #cokebottle in the above example. So it should be a list of all of which parts (and links to these parts) are installed on one web page.
Here we also use the type PropertyValue as embedded in the property additionalProperty. This property is part of the type Product so all markup is semantic relation and description for the specific product.
Also note that here we used the property propertyID with URL as the identifier of the value of this property.
You can’t associate a QuantitativeValue with a Thing.
The best practice is to use the most specific type available. In your case, this would be Product, or one of its sub-types, if it applies (IndividualProduct, ProductModel or SomeProducts).
This allows you to use the properties depth, height, weight, and width, all of which which can take a QuantitativeValue value.

How to code markup for Product in ItemList?

I have adapted a code taken from example 2 on http://schema.org/ItemList
How do I use it together with Product? On frontpage and some other pages I have a list of products for which I would like to have a better markup.
The following code gives the error
A value for the position field is required.
but Product doesn't have a position, so if there is a value for position it gives different error.
<ul itemscope itemtype="http://schema.org/ItemList">
<meta itemprop="numberOfItems" content="10" />
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/Product">
<!-- <meta itemprop="position" content="1" /> -->
<a href="#" itemprop="url">
<img src="asdf.jpg" itemprop="image">
<div class="product-list__title" itemprop="name">
Product name
</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<div itemprop="price">
$12
</div>
<link itemprop="availability" href="http://schema.org/InStock" />
</div>
</a>
</li>
</ul>
The itemListElement property has three expected values:
ListItem
Text
Thing
ListItem is also a Thing, but it’s listed explicitly because it has a special role here: ListItem provides the position property. If you need to convey the position of the list items, you have to provide ListItem values.
Note that not every ItemList needs this. Your example with using Product values is fine (apart from the meta element which can’t be a child of ul), and unless you try to qualify for Google’s rich result (this is what the error message is about), you could keep it like that.
If you do want to provide the positions, an itemListElement could look like this:
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<meta itemprop="position" content="1" />
<div itemprop="item" itemscope itemtype="http://schema.org/Product">
<!-- your Product -->
</div>
</li>

Can't validate Event rich snippet with PostalAddress and no Place

I'm defining a http://schema.org/Event for an "open house" tour of a residential home. The event's name is "Open House," but the location doesn't have a "name" (other than its address).
According to https://developers.google.com/structured-data/rich-snippets/events I ought to be able to use a PostalAddress for the location field of the snippet, perhaps like this:
<div itemscope itemtype="http://schema.org/Event">
<div itemprop="name">Open House</div>
<div itemprop="startDate" content="2015-07-04T13:00-0700">Sat, July 4th at 1pm</div>
<div itemprop="location" itemscope itemtype="http://schema.org/PostalAddress">
<div>
<span itemprop="streetAddress">123 Main St</span>,
<span itemprop="addressLocality">San Francisco</span>,
<span itemprop="addressRegion">CA</span>,
<span itemprop="postalCode">94111</span>
</div>
</div>
</div>
But this fails in the Rich Snippet test tool. https://developers.google.com/structured-data/testing-tool/ It says that my location requires "name" and "address" properties.
That makes perfect sense if the location is a named Place, e.g. a restaurant or business venue. For example, this validates in the test tool:
<div itemscope itemtype="http://schema.org/Event">
<div itemprop="name">Open House</div>
<div itemprop="startDate" content="2015-07-04T13:00-0700">Sat, July 4th at 1pm</div>
<div itemprop="location" itemscope itemtype="http://schema.org/Place">
<div itemprop="name">WHAT DO I PUT HERE?!</div>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<div>
<span itemprop="streetAddress">123 Main St</span>,
<span itemprop="addressLocality">San Francisco</span>,
<span itemprop="addressRegion">CA</span>,
<span itemprop="postalCode">94111</span></div>
</div>
</div>
</div>
The problem is, I have no idea what name to use for a residential home. It doesn't have a name, other than its address.
What's the right way to construct this snippet? Is Google's documentation incorrect? If the test tool is correct, do I have to name a nameless Place?
Right after posting my question, I realized that I could nest the address inside the name, making the name be equal to the address. The test tool accepts this. (But this feels wrong.)
<div itemscope itemtype="http://schema.org/Event">
<div itemprop="name">Open House</div>
<div itemprop="startDate" content="2015-07-04T13:00-0700">Sat, July 4th at 1pm</div>
<div itemprop="location" itemscope itemtype="http://schema.org/Place">
<div itemprop="name">
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<div>
<span itemprop="streetAddress">123 Main St</span>,
<span itemprop="addressLocality">San Francisco</span>,
<span itemprop="addressRegion">CA</span>,
<span itemprop="postalCode">94111</span></div>
</div>
</div>
</div>
</div>

schema.org event syntax for all day events and subEvents

Tried to Google out but came empty handed. I'm looking for a snippet containing example markup.
How should I mark all-day events?
How should I mark concerts having multiple performances with varying locations (for same data multiple start and end dates) aka. subEvents? This is what I tried:
<section itemscope itemtype="http://data-vocabulary.org/Event"><!-- section per event -->
<a href="/test#event_17" id="event_17" itemprop="url">
<h3><!-- visual title when and where -->
<div itemprop="summary"><!-- summary what the event is for -->
Summary text
</div>
</h3>
</a>
<span itemprop="location" class="location">
Location name
</span>
<span itemprop="subEvent" itemscope itemtype="http://data-vocabulary.org/Event">
<a href="/test#event_17_1" id="event_17_1" itemprop="url">
<time itemprop="startDate" datetime="2014-09-15T15:00:00+03:00">00:00</time>
—
<time itemprop="endDate" datetime="2014-09-15T17:00:00+03:00">00:00</time>
</a>
</span>
<span itemprop="subEvent" itemscope itemtype="http://data-vocabulary.org/Event">
<a href="/test#event_17_2" id="event_17_2" itemprop="url">
<time itemprop="startDate" datetime="2014-10-10T20:00:00+03:00">00:00</time>
—
<time itemprop="endDate" datetime="2014-10-10T22:00:00+03:00">00:00</time>
</a>
</span>
<div itemprop="description"><!-- details of the event -->
Description
</div>
</section>
Based solely on http://www.google.com/webmasters/tools/richsnippets
How should I mark all-day events?
For all day events it seems that the appropriate way is to give only datetime value. End date is not required.
2015/02/17
How should I mark concerts having multiple performances with varying locations (for same data multiple start and end dates) aka. subEvents?
Notice itemref to concert name.
<h1 itemscope=""><span id="concertName" itemprop="name">Foo</h1>
<p>
<span itemscope="" itemtype="http://schema.org/MusicEvent" itemref="concertName">
<strong>Wed 3.12.2014</strong> 10:05
<span itemprop="location" itemscope="" itemtype="http://schema.org/Place">
<span itemprop="name">Concert Hall</span>
</span>
<meta itemprop="startDate" content="2014-12-03T10:05:00+02:00" />
<meta itemprop="url" content="http://www.example.com/concert/8" />
</span>
<span itemscope="" itemtype="http://schema.org/MusicEvent" itemref="concertName">
<strong>Fri 26.12.2014</strong> 10:05
<span itemprop="location" itemscope="" itemtype="http://schema.org/Place">
<span itemprop="name">Concert Hall</span>
</span>
<meta itemprop="startDate" content="2014-12-26T10:05:00+02:00" />
<meta itemprop="url" content="http://www.example.com/concert/8" />
</span>
</p>

how to display the part of the html using emacs-w3m

I found a w3m plugin in w3m-extension.el for English-Chinese dict like this:
(defun w3m-search-dict-cn ()
"Translate input word and search from dict.cn."
(interactive)
(w3m-search-advance "http://dict.cn/search/?q=" "English Dict.cn" 'gbk))
I configue the w3m plugin to search the dict online using the youdao dict website.
(defun w3m-search-dict-cn ()
"Translate input word and search from youdao.cn."
(interactive)
(w3m-search-advance "http://dict.youdao.com/search?q=" "English youdao.cn" 'UTF-8))
But I found that the result info is too large to read .
What i want is just
<div id="collinsResult" class="tab-content">
<div class="trans-container">
<div class="trans-content">
<div class="collinsToggle trans-container">
<div class="wt-container">
<h4>
<span class="title">exception</span>
<em class="additional spell phonetic">/ɪkˈsɛpʃən/</em>
<span class="star star3" title="使用频率"></span>
<span class="via rank">CET4 TEM4</span>
<span class="additional pattern">(
exceptions
)</span>
</h4>
<ul class="ol">
<li>
<div class="collinsMajorTrans">
<span class="collinsOrder">1. </span>
<p>
<span class="additional" title="可数名词">N-COUNT</span>
An <b>exception</b> is a particular thing, person, or situation that is not included in a general statement, judgment, or rule. 例外
</p></div>
<div class="exampleLists">
<span class="collinsOrder">例:</span>
<div class="examples">
<p> Few guitarists can sing as well as they can play; Eddie, however, is an exception. </p>
<p>很少有吉他手唱歌能唱得跟弹得一样好,而艾迪是个例外。</p>
</div>
</div>
<div class="exampleLists">
<span class="collinsOrder">例:</span>
<div class="examples">
<p> The law makes no exceptions. </p>
<p>法律不搞例外。</p>
</div>
</div>
</li>
<li>
<div class="collinsMajorTrans">
<span class="collinsOrder">2. </span>
<p>
<span class="additional" title="习语">PHRASE</span>
If you make a general statement, and then say that something or someone is <b>no exception</b>, you are emphasizing that they are included in that statement. 不例外; 无例外
<span class="additional">[强调]</span>
</p></div>
<div class="exampleLists">
<span class="collinsOrder">例:</span>
<div class="examples">
<p> Marketing is applied to everything these days, and books are no exception. </p>
<p>现在市场营销用于任何事物,图书也不例外。</p>
</div>
</div>
</li>
<li>
<div class="collinsMajorTrans">
<span class="collinsOrder">3. </span>
<p>
<span class="additional" title="习语">PHRASE</span>
If you <b>take exception to</b> something, you feel offended or annoyed by it, usually with the result that you complain about it. 厌恶; 反感
</p></div>
<div class="exampleLists">
<span class="collinsOrder">例:</span>
<div class="examples">
<p> He also took exception to having been spied on. </p>
<p>他也厌恶被暗中监视。</p>
</div>
</div>
</li>
<li>
<div class="collinsMajorTrans">
<span class="collinsOrder">4. </span>
<p>
<span class="additional" title="习语">PHRASE</span>
You use <b>with the exception of</b> to introduce a thing or person that is not included in a general statement that you are making. 除外
</p></div>
<div class="exampleLists">
<span class="collinsOrder">例:</span>
<div class="examples">
<p> Yesterday was a day off for everybody, with the exception of Lorenzo. </p>
<p>昨天每个人休一天假,洛伦佐除外。</p>
</div>
</div>
</li>
</div>
</div>
</div>
</div>
</div>
when i search the word "exception" not the whole page.
How can I use the w3m to download the page and get what i want part of the html and then display in the emacs buffer?
M-x w3m-view-source, display source code
M-x html-mode, or any other mode providing the convenient key-binding
Mark the part of interest
M-x copy-to-buffer MY_NEW_BUFFER
Add <html>``</html> tags if missing in section
M-x w3m-buffer, display selected content