How should I markup price columns and setup fee according to schema.org - markup

In the promotional products industry, an item will be offered at a certain price with a minimum quantity. Then, there will be another quantity level after which the price per piece goes down. There might be 5 or 6 of these levels.
In addition to the price per item, there is almost always a setup fee because they are being custom printed.
How do I mark this up using schema.org vocabulary?

Try using schema.org/Offer class and its property eligibleQuantity
Description of eligibleQuantity says
The interval and unit of measurement of ordering quantities for which the offer or price specification is valid. This allows e.g. specifying that a certain freight charge is valid only for a certain quantity.
Seems it's what you need.
Markup may look like this
<div itemscope itemtype="http://schema.org/Offer">
<span itemprop="price">$55.00</span>
<div itemprop="eligibleQuantity" itemscope itemtype="http://schema.org/QuantitativeValue">
<span itemprop="minValue">1</span>
<span itemprop="maxValue">5</span>
</div>
</div>

Related

Location-based price in Schema.org

My client is a retail store with an online boutique on Magento. I'm implementing Schema.org in Microdata.
The problem comes from the fact that his prices are different depending on the closest city from the user. What "offer" elements do I use in order to set things straight with machines?
My fear is that Google could show the wrong price in the SERP. I don't want to deceive users!
A single Product can have multiple Offer items (via the offers property), exactly for such a purpose.
In the Offer item, you use properties that describe in which situation (for whom, when, etc.) the offer is valid. For location-based offers, the eligibleRegion property can be used:
[…] the geo-political region(s) for which the offer […] is valid.
(With the ineligibleRegion property you can list for which location the offer is not valid.)
So in Microdata it could look like this:
<article itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Product 1</h1>
<section itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<h2>Offer 1</h2>
<div itemprop="eligibleRegion" itemscope itemtype="http://schema.org/City">…</div>
</section>
<section itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<h2>Offer 2</h2>
<div itemprop="eligibleRegion" itemscope itemtype="http://schema.org/City">…</div>
</section>
</article>
The documentation for Google’s Product Rich Snippet doesn’t mention a case where a Product has multiple Offer items (except for the different case of AggregateOffer), so it’s unclear if a Rich Snippet can be displayed in such a case.

Microdata markup with properties on multiple pages

I'm creating a web page and currently I'm adding Microdata markup to the code. I’m using schema.org’s MusicGroup.
I have an index.html page from where I'd like to take the name and the image properties for this band:
<div class="container" itemscope itemtype="http://schema.org/MusicGroup">
...
<img itemprop="image" src="img/logo.png" alt="logo" />
<p>We are <span itemprop="name">NAME OF THE BAND</span>.</p>
...
</div>
However on the about_us.html page there is a short description which I'd also like to use:
<div class="container" itemscope itemtype="http://schema.org/MusicGroup">
...
<p itemprop="description">A description of the band.</p>
...
</div>
When I use the code like this, search enginges (understandably) treat them as two different MusicGroups:
MusicGroup 1:
Image: .../img/logo.png
Name: NAME OF THE BAND
MusicGroup 2:
Description: A description of the band.
How can I link these properties into one item?
Microdata’s name-value pairs are per webpage, not per website.
So on a website about a music group, it can be expected that each page contains an "own" MusicGroup item, which is, however, actually always about the same music group. But from the Microdata or schema.org perspective, these different items would not be semantically connected that way (consumers might guess this however, e.g. by comparing property values).
Microdata’s itemid attribute could be used to uniquely identify each item. But it is required that the used vocabulary supports "global identifiers for items" (itemid is used for some types on schema.org (e.g., in the example for MedicalScholarlyArticle), but it’s not clear to me if it’s really supported as required by Microdata for other types, like MusicGroup).
So in your case, you could:
leave it as it is
duplicate the information, so that each item has all relevant content (possibly using meta/link elements)
move all information on one page (possibly using itemref)
(if it should be allowed for general use with schema.org) use itemid to state that several items are actually about the same thing

Rich Snippet on homepage

We have embedded rich snippets for a rental objects rating website. Here an example:
http://www.google.de/webmasters/tools/richsnippets?q=http%3A%2F%2Fwww.sonnenquartiere.de%2Fferienwohnungen%2F4-wohnung-8-boardinghaus-norderney-2-zimmer-apartment.html
Works fine when listed in Google search results.
Now we want to aggregate all ratings and post them on the homepage so the homepage itself gets a rating in the Google search results. We did it some time ago:
http://www.google.de/webmasters/tools/richsnippets?q=www.sonnenquartiere.de
We did that some time ago, but the result in the Google Search is still not being displayed with the aggregated rating. Here an Example:
https://www.google.de/search?q=Boardinghaus+Norderney (2nd place here)
Is there something we can do to get this working?
One thing that I did notice about your markup is that you are using the schema.org/WebPage markup for your aggregate review rating. So search engines are seeing that schema as a rating for your home page. You should be using the aggregate rating schema with a schema that better describes your type of business, perhaps something in the schema.org/LodgingBusiness category.
I hope this is not too late and that I will be able to help.
Following the standard procedure is the best practice in such thing. Make sure you use the correct markup. So for review use the reviews-schema as the example below:
Use this tool to generate the code and then modify your website according to this working sample
http://www.microdatagenerator.com/reviews-schema/
For example:
<div itemscope itemtype="http://schema.org/Review">
<div itemprop="itemReviewed" itemscope temtype="http://schema.org/Thing"><span itemprop="name">home mortgage</span> </div>
<div itemprop="author" itemscope itemtype="http://schema.org/Person">
<span itemprop="name"> Nick M.</span>
</div><meta itemprop="datePublished" content = "01/01/2016">
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"
<meta itemprop="worstRating" content = "1"/><span itemprop="ratingValue">5</span>/<span itemprop="bestRating">5</span> stars </div>
<span itemprop="description">My experience with ABC Company was very good and I recommend it to everyone. </span>
</div>
you take that code and take the parts you need to your webpage.
This video was great:
https://www.youtube.com/watch?v=N2PjWtybDOs

microdata not displaying in google search results

I have a "Review-aggregate" microdata snippet in my site, and google has cached it, but it is not appearing in the google search results with the rating stars.
The URL that has the microdata in is:
http://www.rnsalert.com/
And here is the snippet:
<div class="ui-corner-bottom" id="micro-data-reviews" itemscope="" itemtype="http://data-vocabulary.org/Review-aggregate">
<span itemprop="itemreviewed">RNSalert</span> is rated
<span itemprop="rating" itemscope="" itemtype="http://data-vocabulary.org/Rating">
<span itemprop="average">9.0</span>
out of <span itemprop="best">10</span>
</span>
based on <span itemprop="votes">16</span> independent ratings.
</div>
Using Google's structured data test tool, it shows that the microdata is being parsed correctly...
http://www.google.com/webmasters/tools/richsnippets?url=http%3A%2F%2Fwww.rnsalert.com%2F&html=
Yet the google search results aren't showing it. The page has been cached.
Search google for "RNS alert" and you will get the page listed as the first organic result.
Any thoughts?
Many thanks,
Dan
Google should recognise all types defined in schema.org, but it supports rich snippets in the search results for these content types only:
Reviews
People
Products
Businesses and organizations
Recipes
Events
Music
Source:
http://support.google.com/webmasters/bin/answer.py?hl=en&answer=99170&topic=1088472&ctx=topic
Also, it may take a while before you're able to see them in the search results - maybe even days.
I'm 95% sure that for your rating/review stars to appear in Google's web results you must also setup Google authorship with the site/page.
6+ months ago this step wasn't required.
Your page contains microdata for a review aggregate, but it is not related to a product or item.
Check the examples here https://schema.org/AggregateRating
The aggregate needs to be within the scope of another item:
<div itemscope itemtype="http://schema.org/Restaurant">
<span itemprop="name">GreatFood</span>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<span itemprop="ratingValue">4</span> stars -
based on <span itemprop="reviewCount">250</span> reviews
</div>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">1901 Lemur Ave</span>
<span itemprop="addressLocality">Sunnyvale</span>,
<span itemprop="addressRegion">CA</span> <span itemprop="postalCode">94086</span>
</div>
<span itemprop="telephone">(408) 714-1489</span>
<a itemprop="url" href="http://www.dishdash.com">www.greatfood.com</a>
Hours:
<meta itemprop="openingHours" content="Mo-Sa 11:00-14:30">Mon-Sat 11am - 2:30pm
<meta itemprop="openingHours" content="Mo-Th 17:00-21:30">Mon-Thu 5pm - 9:30pm
<meta itemprop="openingHours" content="Fr-Sa 17:00-22:00">Fri-Sat 5pm - 10:00pm
Categories:
<span itemprop="servesCuisine">
Middle Eastern
</span>,
<span itemprop="servesCuisine">
Mediterranean
</span>
Price Range: <span itemprop="priceRange">$$</span>
Takes Reservations: Yes
</div>
Unfortunately, just because you put something on your site doesn't mean that Google has to show it in their search results.
I would assume that they need to have a certain amount of trust in your site before anything will show. If not then everyone would just mark their own products/posts with 5 stars so it looks good in a search listing page.
In my experience, it is a lot easier to get rating stars in listings when your site contains votes for other people's products rater than your own.
Google help:
The search preview is approximate.
Real Google Search results for your data might look different.
The search preview is illustrative.
We do not guarantee that the content you preview will be displayed in Search results. Your content will likely appear in Search results for relevant queries, but that content must first pass through our systems to be appropriately indexed and ranked before it appears in actual Search results. We reserve the right to filter out any results at our discretion if it violates our quality guidelines. Finally, any preview tool URL for your content is only valid for a limited duration (e.g. weeks).

How do I exclude last node

I have following html tag structure.
<?xml version="1.0" encoding="UTF-8"?><div class="MainContentTextContainer">
<br/> To break the stalemate of heavy competition and low growth in the traditional orthopedic implant markets, the major orthopedic companies are turning to biologics. This white paper provides some information on this trend. Information from this White Paper was obtained from Kalorama's full market study on this market 'The World Market for Orthopedic Biomaterials SKU KLI6329663," as well as news media sources. <br/>
<br/>
<p> "We also feature department and global pricing for reports that we be utilized by more than one user at your company."
</p>
<p>
<b>Related Reports:</b>
</p>
<!-- [PID:6921310] -->
The Global Market for Medical Devices, 3rd. Edition
<br/>May 2, 2012 - KLI3873247 - $1,995.00<br/>
<br/>
</div>
Above is my html node structure.I want to return MainContentTextContainer node which does not contain nodes after last <p> tag which contains 'Related Reports:'.
means i want expected output as:
<div class="MainContentTextContainer">
<br/> To break the stalemate of heavy competition and low growth in the traditional orthopedic implant markets, the major orthopedic companies are turning to biologics. This white paper provides some information on this trend. Information from this White Paper was obtained from Kalorama's full market study on this market 'The World Market for Orthopedic Biomaterials SKU KLI6329663," as well as news media sources. <br/>
<br/>
<p> "We also feature department and global pricing for reports that we be utilized by more than one user at your company."
</p>
</div>
I have used following xpath:
//div[#class='MainContentTextContainer']/*[not(self::p[last()])]
but it is not working.
Please guide me with proper xpath.
Thanks.
This XPath expressions returns all the text and element nodes inside the div that are followed by a p, which means the last p and the nodes following it are not included:
(//div[#class='MainContentTextContainer']/* | //div[#class='MainContentTextContainer']/text())[following-sibling::p]

Resources