schema.org markup and nesting for Review of "ApartmentComplex" - schema.org

I have some structured data implemented in my website using microdata so that Google and other search engines could parse it and show appropriate rich snippets. I have added the appropriate markup for all the microdata tags that I have used but I am unable to view the rich snippets for my website while testing it using the Rich Snippets Testing Tool. I have gone through the usage guidelines and frequent issues section at the Google Webmaster but to no avail.
Upon debugging the html I found that the following snippet was successfully showing rich snippets when fed to the Rich Snippets Testing Tool.
<div class="row">
<div class="col-sm-12">
<div class="page-header">
<h1><span itemprop="name">T Park </span></h1>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" class="address">
<span itemprop="streetAddress">1 Scenic Park</span>
<span itemprop="postalCode" class="hidden">123456</span>
<span itemprop="addressRegion" class="hidden">Central </span>
<span itemprop="addressCountry" class="hidden">Singapore</span>
</div>
</div>
</div>
</div>
<div class="col-sm-6 box-map">
<h2>Location</h2>
</div>
<div style="margin-bottom:0px;" itemprop="review" itemscope itemtype="http://schema.org/Review" class="jumbotron row">
<h2>T Park Reviews</h2>
<br>
<meta itemprop="itemReviewed" content="T Park">
<div id="reviews" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content="1">
<meta itemprop="ratingValue" content="9">
<meta itemprop="bestRating" content="10"><span>Rating: 9/10</span>
</div>
<br><span itemprop="reviewBody">Lorem Ipsum....</span>
<br><strong itemprop="author" class="row pull-right">John May</strong>
</div>
However as soon as an enclosing markup of ApartmentComplex is added as shown in the snippet below, the rich snippet is not visible.
<div itemscope itemtype="http://schema.org/ApartmentComplex" class="container">
<div class="row">
<div class="col-sm-12">
<div class="page-header">
<h1><span itemprop="name">T Park </span></h1>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" class="address">
<span itemprop="streetAddress">1 Scenic Park</span>
<span itemprop="postalCode" class="hidden">123456</span>
<span itemprop="addressRegion" class="hidden">Central</span>
<span itemprop="addressCountry" class="hidden">Singapore</span>
</div>
</div>
</div>
</div>
<div style="margin-bottom:0px;" itemprop="review" itemscope itemtype="http://schema.org/Review" class="jumbotron row">
<h2>T Park Reviews</h2>
<br>
<meta itemprop="itemReviewed" content="T Park">
<div id="reviews" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content="1">
<meta itemprop="ratingValue" content="9">
<meta itemprop="bestRating" content="10"><span>Rating: 9/10</span>
</div>
<br><span itemprop="reviewBody">Lorem Ipsum....</span>
<br><strong itemprop="author" class="row pull-right">John May</strong>
</div>
</div>
So assuming my page is about ApartmentComplex, and I want to include a Review of it, how should I structure/nest this markup?

I don't think there's anything wrong with your mark-up or Microdata. I just don't think that the Google Structured Data tool shows any rich snippets for http://schema.org/ApartmentComplex types - rich snippets are only available for certain schema.org types.
To prove this, change the wrapping ApartmentComplex type to a Product type, and remove the address (which isn't part of "Product") and you'll see that a rich snippet is produced in the Google Structured Data Testing Tool (because Google do show rich snippets for Products).
Edit to add: this is a possible workaround - Google will show rich snippets for schema.org types where the surrounding type is a Review, so you could use Review as the top-level type, then have the ApartmentComplex type as the "itemReviewed" property - this works in the Google Structured Data Testing Tool:
<div itemscope itemtype="http://schema.org/Review" class="container">
<div class="row" itemprop="itemReviewed" itemscope itemtype="http://schema.org/ApartmentComplex">
<div class="col-sm-12">
<div class="page-header">
<h1><span itemprop="name">T Park </span></h1>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" class="address">
<span itemprop="streetAddress">1 Scenic Park</span>
<span itemprop="postalCode" class="hidden">123456</span>
<span itemprop="addressRegion" class="hidden">Central</span>
<span itemprop="addressCountry" class="hidden">Singapore</span>
</div>
</div>
</div>
</div>
<div style="margin-bottom:0px;" class="jumbotron row">
<h2>T Park Reviews</h2>
<br>
<div id="reviews" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content="1">
<meta itemprop="ratingValue" content="9">
<meta itemprop="bestRating" content="10"><span>Rating: 9/10</span>
</div>
<br><span itemprop="reviewBody">Lorem Ipsum....</span>
<br><strong itemprop="author" class="row pull-right">John May</strong>
</div>
</div>

Related

Multiple Bootstrap 3 accordions on same page close all when opening one

I have multiple Bootstrap 3 accordions on the same page, and everything is working fine, have unique ID's, etc. but am not able to figure out how to close all of them when opening one without writing tons of jQuery. Is that my only option?
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<section id="home-introductions">
<div class="container">
<div class="row-fluid">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="heading-3">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-3" aria-expanded="false" aria-controls="collapse-3">
Introductions to AT&T BusinessDirect®
</a>
</h4>
</div>
<div id="collapse-3" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-3">
<div class="panel-body">
<h4>AT&T VPN (AVPN) Services Overview</h4>
<p>Learn how to access, navigate, and understand the standard applications available on AT&T BusinessDirect for AT&T VPN (AVPN) service. The high level overview covers standard applications including Report & Track Troubles, AT&T
BusinessDirect Map, AVPN Performance Reporting, Business Connections collaboration tool and the billing and Service Level Agreement (SLA) tools. This provides the basis for exploring the AT&T BusinessDirect applications in more detail
and allows you to understand how AT&T BusinessDirect can best help your business.</p>
<hr>
<h4>AT&T BusinessDirect Overview</h4>
<p>Learn how to navigate on AT&T Business Direct to perform online tasks such as ordering, account management, billing, payment, trouble reporting, and network management.</p>
<hr>
</div>
</div>
</div>
</div>
<!--/panel-group-->
</div>
</div>
</section>
<section id="home-ebill">
<div class="container">
<div class="row-fluid">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="heading-1">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-1" aria-expanded="false" aria-controls="collapse-1">
AT&T BusinessDirect® eBill
</a>
</h4>
</div>
<div id="collapse-1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-1">
<div class="panel-body">
<h4>AT&T Order Status Manager (OSM) Overview</h4>
<p>The OSM tool allows you to monitor near real-time order status with a click of the mouse. Easily submit changes and updates to your order. You can update the site address or contact information, and request new circuit installation, turn
up, or expedited dates. Technical details about your order can also be accessed.</p>
<hr>
</div>
</div>
</div>
</div>
<!--/panel-group-->
</div>
</div>
</section>
<section id="home-emaintenance">
<div class="container">
<div class="row-fluid">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="heading-4">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-4" aria-expanded="false" aria-controls="collapse-4">
eMaintenance
</a>
</h4>
</div>
<div id="collapse-4" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-4">
<div class="panel-body">
<h4>Report and Track Troubles</h4>
<p>This innovative tool enables you to perform trouble reporting tasks online and thereby speed trouble isolation and resolution for your AT&T Services.</p>
<hr>
</div>
</div>
</div>
</div>
<!--/panel-group-->
</div>
</div>
</section>
<section id="home-toll-free-routing">
<div class="container">
<div class="row-fluid">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="heading-5">
<h5 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-5" aria-expanded="false" aria-controls="collapse-5">
Toll-Free Routing Tools
</a>
</h5>
</div>
<div id="collapse-5" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-5">
<div class="panel-body">
<h5>Voice Management Tools – AT&T Route It!® (Web-Based) on AT&T BusinessDirect®</h5>
<p>Learn the differences between AT&T Route It! (PC-Based) and AT&T Route It! (Web-Based) on AT&T BusinessDirect. Learn how to provision IP toll-free (IPTF) terminations and manage IPTF features. It is assumed that attendees have
knowledge of AT&T Route It! (PC-Based). There will be time for questions at the end of each session.</p>
<hr>
</div>
</div>
</div>
</div>
<!--/panel-group-->
</div>
</div>
</section>
<section id="home-performance-reporting">
<div class="container">
<div class="row-fluid">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="heading-6">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-6" aria-expanded="false" aria-controls="collapse-6">
Performance Reporting
</a>
</h4>
</div>
<div id="collapse-6" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-6">
<div class="panel-body">
<h4>View Business Reports and Information – Transport AT&T Virtual Private Network (AVPN)</h4>
<p>Learn how to access and view the View Business Reports & Information tool for Transport and/or Managed AVPN Service. This application provides performance reporting that allows you to analyze your AVPN Services quickly and easily. You
will become familiar with how to view current or historical performance to help you make informed decisions about your network. You’ll also learn how to run monthly, weekly, daily, hourly, and 10-minute reports for analysis. The reports
include the following information on your Transport AVPN: MPLS Port List, Port Utilization, COS Utilization, and COS Policing. These reports can be downloaded in a variety of formats.</p>
<p>View course dates and times</p>
<hr>
<h4>View and Analyze Inventory</h4>
<p>Learn how the View and Analyze Inventory tool enables you to view current or pending inventory – and download it into your own database. You’ll learn how to display over 40 items, such as access circuit ID, master customer number (MCN),
group revenue code (GRC), address information, and circuit speed.</p>
<p>View course dates and times</p>
<hr>
</div>
</div>
</div>
</div>
<!--/panel-group-->
</div>
</div>
</section>
<section id="home-performance-reporting">
<div class="container">
<div class="row-fluid">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="heading-7">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-7" aria-expanded="false" aria-controls="collapse-7">
FirstNet
</a>
</h4>
</div>
<div id="collapse-7" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-7">
<div class="panel-body">
<h4>First Net Test One</h4>
<p>Explore the history of the classic Lorem Ipsum passage and generate your own text using any number of characters, words, sentences or paragraphs. Commonly used as placeholder text in the graphic and print industries, Lorem Ipsum’s origins
extend far back to a scrambled Latin passage from Cicero in the middle ages.</p>
<hr>
</div>
</div>
</div>
</div>
<!--/panel-group-->
</div>
</div>
</section>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

Breadcrumb Microdata markup valid both for Google and Bing

I want to create a breadcrumb navigation with the Microdata format.
So I'm using following BreadcrumbList markup and Google Structured Data Testing Tool recognized it:
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="https://example.com/home">
<span itemprop="name">Home</span>
</a>
<meta itemprop="position" content="1" />
</li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="https://example.com/home/fashionn">
<span itemprop="name">Fashion</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<span itemprop="name">Coats</span>
<meta itemprop="position" content="3">
</li>
</ol>
But from Bing Markup Validator I receved following message:
We are not seeing any markup on this page. Please ensure the markup has been implemented correctly.
Regarding Bing documentation the following markup is correct for breadcrumb:
<ol>
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a itemprop="url" href="https://example.com/home">
<span itemprop="title">Home</span>
</a>
</li>
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a itemprop="url" href="https://example.com/home/fashion">
<span itemprop="title">Fashion</span>
</a>
</li>
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<span itemprop="title">Coats</span>
</li>
</ol>
So is there a way to create a breadcrumb navigation with Microdata format which would be valid both for Google and Bing?
To rephrase your goal, as far as I understand it: You want to markup your breadcrumbs
with Microdata
using two vocabularies (Schema.org and Data-Vocabulary.org)
without duplicating your content
so that Bing’s and Google’s testing tool still validate it.
Microdata makes it hard to mix vocabularies:
In itemtype, you can only use types from the same vocabulary.
In itemprop, you can mix properties from different vocabularies, but only the properties from one vocabulary can be specified in the shorter string form, while the properties from all other vocabularies have to be specified as absolute URIs.
(This isn’t a problem if consumers support the absolute URI form for the properties they recognize.)
(By the way, RDFa supports mixing vocabularies way better, so you might want to consider using RDFa instead of Microdata.)
A way to avoid the problem, maybe.
Use Data-Vocabulary.org for Bing and Google.
While the vocabulary Data-Vocabulary.org is deprecated and deleted (I wonder why Bing is still recommending it), Google still seems to support it, too (probably because it’s still used on many websites from back then, when Google recommended it, too).
I don’t know if it really works, but at least Google’s SDTT doesn’t give any warnings/errors for your Data-Vocabulary.org snippet.
Solutions, maybe.
Unfortunately, I can’t test it in Bing’s tool (because an account is required), so the following snippets don’t necessarily work.
itemref + absolute URIs for Data-Vocabulary.org’s title
This snippet uses Schema.org as primary vocabulary. An empty div outside of Schema.org’s BreadcrumbList is used to create the item for Data-Vocabulary.org’s Breadcrumb. This item references the a elements via itemref. It reuses the url property (because it’s named the same in both vocabularies) and provides Data-Vocabulary.org’s title property as absolute URI.
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" itemref="b1 b2">
</div>
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<span itemprop="item" itemscope itemtype="http://schema.org/WebPage">
<span itemprop="name">
<a itemprop="url" href="https://example.com/" id="b1">
<span itemprop="http://data-vocabulary.org/Breadcrumb/title">Home</span>
</a>
</span>
</span>
<meta itemprop="position" content="1" />
</li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<span itemprop="item" itemscope itemtype="http://schema.org/WebPage">
<span itemprop="name">
<a itemprop="url" href="https://example.com/fashion" id="b2">
<span itemprop="http://data-vocabulary.org/Breadcrumb/title">Fashion</span>
</a>
</span>
</span>
<meta itemprop="position" content="2" />
</li>
</ol>
It works in Google’s SDTT (it should be fine to ignore the warning that Breadcrumb/title is not recognized; it’s specified as absolute URI, so it can be used everywhere).
Whether it works in Bing’s testing tool depends on if Bing recognizes http://data-vocabulary.org/Breadcrumb/title as title property.
As the vocabulary is deleted, I’m not sure if it really was http://data-vocabulary.org/Breadcrumb/title instead of http://data-vocabulary.org/title, but if I remember it correctly, it should have been the first one.
itemref + absolute URIs for Schema.org’s name
Same idea like in the snippet above, but this time Data-Vocabulary.org would be the primary vocabulary, while Schema.org’s BreadcrumbList gets created in an empty div.
This is harder, because Schema.org’s structure requires more properties, so you have to create more empty elements.
<div itemscope itemtype="http://schema.org/BreadcrumbList">
<div itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<span itemprop="item" itemscope itemtype="http://schema.org/WebPage" itemref="b1">
</span>
<meta itemprop="position" content="1" />
</div>
<div itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<span itemprop="item" itemscope itemtype="http://schema.org/WebPage" itemref="b2">
</span>
<meta itemprop="position" content="2" />
</div>
</div>
<ol itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<li itemprop="title">
<a itemprop="url" href="https://example.com/" id="b1">
<span itemprop="http://schema.org/name">Home</span>
</a>
</li>
<li itemprop="title">
<a itemprop="url" href="https://example.com/fashion" id="b2">
<span itemprop="http://schema.org/name">Fashion</span>
</a>
</li>
</ol>
It works in Google’s SDTT (it should be fine to ignore the warning that name is not recognized; it’s specified as absolute URI, so it can be used everywhere).

Structured markup adding models to product data

I have a question regarding the correct way of using structured markup (Microdata / Schema.org) for the situation where I have a main overview product and then, within that, a list of models with separate prices and a custom attribute.
Simplified example:
<div class="mainproduct" itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Product Name</h1>
<p itemprop="description">Lorem ipsum my description oh yay all hear this.</p>
<div class="modelslist" >
<div class="model" itemscope itemtype="http://schema.org/ProductModel">
<h2 itemprop="name">Model A</h2>
<span itemscope itemtype="http://schema.org/Offer">
<meta itemprop="price" content="£123" />
<span itemscope itemtype="http://schema.org/PriceSpecification">
<span itemprop="price">£123</span>
<meta itemprop="priceCurrency" content="GBP" />
<meta itemprop="valueAddedTaxIncluded" content="false" />
</span>
</span>
<span itemscope itemtype="http://schema.org/PropertyValue">
<meta itemprop="name" content="readability" />
<span itemprop="value">325</span>
</span>
</div>
<div class="model" itemscope itemtype="http://schema.org/ProductModel">
<h2 itemprop="name">Model B</h2>
<span itemscope itemtype="http://schema.org/Offer">
<meta itemprop="price" content="£456" />
<span itemscope itemtype="http://schema.org/PriceSpecification">
<span itemprop="price">£456</span>
<meta itemprop="priceCurrency" content="GBP" />
<meta itemprop="valueAddedTaxIncluded" content="false" />
</span>
</span>
<span itemscope itemtype="http://schema.org/PropertyValue">
<meta itemprop="name" content="readability" />
<span itemprop="value">325</span>
</span>
</div>
</div>
</div>
Q1. Is it correct to specify a price and then a price specification? Without the meta price, the Google Structured Data Testing Tool warns that "offer" is empty.
Q2. How do I specify custom data shown by "thingymabob". I am assuming it is something to do with "additionalProperty" but the testing tool complains that "additionalProperty" is not recognised by Google for an object of type ProductModel. (Although it seems it would be from http://schema.org/ProductModel)
UPDATE
Ok so here is the update, the pricing is now all tickity-boo and the addition of the itemprop="model", itemprop="offers" and itemprop="priceSpecification" all complete the correct nesting.
<div class="mainproduct" itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Product Name</h1>
<p itemprop="description">Lorem ipsum my description oh yay all hear this.</p>
<div class="modelslist" >
<div class="model" itemprop="model" itemscope itemtype="http://schema.org/ProductModel">
<h2 itemprop="name">Model A</h2>
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta itemprop="price" content="123" />
<meta itemprop="priceCurrency" content="GBP" />
<span itemprop="priceSpecification" itemscope itemtype="http://schema.org/UnitPriceSpecification">
£<span itemprop="price">123</span>
<meta itemprop="priceCurrency" content="GBP" />
<meta itemprop="valueAddedTaxIncluded" content="false" />
</span>
</span>
<span itemprop="additionalProperty" itemscope itemtype="http://schema.org/PropertyValue">
<meta itemprop="name" content="readability" />
<span itemprop="value">325</span>
</span>
</div>
<div class="model" itemprop="model" itemscope itemtype="http://schema.org/ProductModel">
<h2 itemprop="name">Model B</h2>
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta itemprop="price" content="456" />
<meta itemprop="priceCurrency" content="GBP" />
<span itemprop="priceSpecification" itemscope itemtype="http://schema.org/UnitPriceSpecification">
£<span itemprop="price">456</span>
<meta itemprop="priceCurrency" content="GBP" />
<meta itemprop="valueAddedTaxIncluded" content="false" />
</span>
</span>
<span itemprop="additionalProperty" itemscope itemtype="http://schema.org/PropertyValue">
<meta itemprop="name" content="readability" />
<span itemprop="value">325</span>
</span>
</div>
</div>
</div>
That just leaves the issue of adding additional properties to models. It would appear from http://schema.org/ProductModel that additionalProperty should be ok - is it just Google that currently does not allow it? It does return this message in the testing tool: "The property additionalProperty is not recognised by Google for an object of type ProductModel." Is there another way to achieve this?
It’s a pity that Google Search (according to their documentation) only supports price, not priceSpecification. I’m sure that that they’ll support it in the future (if it’s not already the case, albeit undocumented).
Providing both properties seems to be a suitable solution, especially in such simple cases where you don’t have, e.g., a monthly fee.
About your markup regarding the price:
the priceSpecification property (to reference the PriceSpecification) is missing
instead of PriceSpecification you might want to use UnitPriceSpecification, as it says for PriceSpecification:
Typically, only the subclasses of this type are used for markup.
the price value should not contain the currency; use priceCurrency instead
So your markup could look like:
<span itemscope itemtype="http://schema.org/Offer">
<meta itemprop="price" content="123" />
<meta itemprop="priceCurrency" content="GBP" />
<span itemprop="priceSpecification" itemscope itemtype="http://schema.org/UnitPriceSpecification">
£<span itemprop="price">123</span>
<meta itemprop="priceCurrency" content="GBP" />
<meta itemprop="valueAddedTaxIncluded" content="false" />
</span>
</span>
(Note that you should also use a property to reference this Offer from the product it belongs to.)

Schema.org Rich Snippets offers [Offer] loading ID?

I've had structured markup set up on a website now for around a week and Google has indexed about 20% of it however it's still not displaying. After checking the markup was correct in the validating tool I noticed this:
Everything looks fine other than the
offers [Offer]: http://www.website.co.uk/price-excluding-tax-990
Now take a look at the source code:
<div class="product-view" itemscope itemtype="http://schema.org/Product">
<span itemprop="sku">PM90-0100</span>
<div class="product-name">
<h1 itemprop="name">Basket PM90-0100</h1>
</div>
<p class="availability in-stock">Availability: <span>In stock</span></p>
<div class="price-box">
<span class="price-excluding-tax">
<span class="label">Excl VAT: </span>
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="price" id="price-excluding-tax-990">
<link itemprop="availability" href="http://schema.org/InStock"/>
<meta itemprop="priceCurrency" content="GBP" />
<span itemprop="price">£30.00</span>
</span>
<div itemprop="description" class="std">This is a brand new basket to fit various Freerider mobility scooters.</div>
[code continues...]
Does this all look symantically correct? Somehow in Webmaster Tools it is grabbing the price-excluding-tax-990 ID and using it in the offers [Offer]: - which seems odd.

google serp aggregate reviews

I have a website that has pages with reviews for beauty centers, but I can't quite understand how aggregate reviews work.
So I first put in:
<div itemscope itemtype="http://data-vocabulary.org/Review-aggregate">
<span itemprop="itemreviewed">Beauty Center Name</span>
<img itemprop="photo" src="beauty-center.jpg" />
<span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">
<span itemprop="average">4</span> out of <span itemprop="best">5</span>
<span itemprop="count">3</span> user reviews.
</div>
That worked fine when I tested it in the Structured Data Testing Tool. But I know I have to put mark-up on each review now.. so I start marking them up like so:
<div itemprop="reviews" itemscope itemtype="http://data-vocabulary.org/Review">
<b itemprop="author">Juliana</b>
<span itemprop="datePublished" datetime="2013-01-12">12 January 2013</span>
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<span itemprop="ratingValue">4</span> / <span itemprop="bestRating">5</span> stars
</div>
<span itemprop="reviewBody">I loved it!</span>
</div>
Again, no errors on these reviews in the Structured Data Testing Tool. But now, the Tool says that I have to specify a "http://schema.org/product" with contents about the product. There is no product, it's a beauty center.
Can anyone help me understand what I did wrong?