3

I want to collect useful resources regarding other businesses like - to give an example - groupon. Things like the address, founders and a general description of that company. Sometimes this description can be more specific though.

I also want to let the users rate this company and want to show interesting products or offers by that company - all on that same page.

How would you mark up this schema? I was looking at similar websites and they're all using different schemas:

http://www.topcashback.co.uk/ebookers/ (Schema: Product) http://www.vouchercodes.co.uk/ebookers.com (Schema: Organization) https://www.trustpilot.com/review/www.ebookers.com (Schema: LocalBusiness)

Well LocalBusiness and Product seem wrong. Personally I'd go with Organization. But: if the whole page is of type Organization, how can I display Product or Offer inside? Organizations do not have properties for that. There are properties like makesOffer which should be inside an Offer and link to an Organization. But what if it's on the same page, inside the container which marks up an Organization?

1 Answer 1

2

I think Organization should be the main entity for your page. But ideally you would check for each organization if one of the subtypes applies and use it instead:

<body vocab="http://schema.org/" typeof="WebPage">
  <article property="mainEntity" typeof="Organization">
  </article>
</body>

Now you provide appropriate properties that reference other items which you want to say something about:

  • With founder, you reference the Person.
  • With location, you reference the PostalAddress.
  • With aggregateRating, you reference the AggregateRating.
  • etc.
<body vocab="http://schema.org/" typeof="WebPage">
  <article property="mainEntity" typeof="Organization">

    <div property="founder" typeof="Person"></div>
    <div property="location" typeof="PostalAddress"></div>
    <div property="aggregateRating" typeof="AggregateRating"></div>

  </article>
</body>

For representing "interesting products or offers", it depends on what it actually is:

  • If you want to represent an offer the organization makes, makesOffer is appropriate (it doesn’t link to an Organization but to an Offer), which from the Offer can reference the Product.
  • If you want to represent a product the organization manufactured (no matter if the organization still offers it or not), you can use the reverse¹ of the manufacturer property (because Schema.org doesn’t define an inverse property like "manufactured").
<body vocab="http://schema.org/" typeof="WebPage">
  <article property="mainEntity" typeof="Organization">

    <div property="founder" typeof="Person"></div>
    <div property="location" typeof="PostalAddress"></div>
    <div property="aggregateRating" typeof="AggregateRating"></div>

    <section>
      <div property="makesOffer" typeof="Offer"></div>
      <div rev="manufacturer" typeof="Product"></div> <!-- see an alternative below -->
    </section>

  </article>
</body>

An alternative to using the reverse of manufacturer is to use a Product item that references in manufacturer the Organization via its URI:

<body vocab="http://schema.org/" typeof="WebPage">
  <article property="mainEntity" typeof="Organization" resource="http://example.com/organizations/acme#this">

    <div typeof="Product">
      <link property="manufacturer" href="http://example.com/organizations/acme#this" />
    </div>

  </article>
</body>

¹ Microdata doesn’t offer a standard mechanism for this (but there is a proposal for itemprop-reverse). RDFa offers a mechanism (rev), but it’s not part of the subset RDFa Lite. JSON-LD offers a mechanism (@reverse).

3
  • Thanks! So if I got you right this means that a markup like this (in case of offers) is perfectly okay - each Offer will have the property makesOffer if it's inside an Organization, right? Like this: <div property="makesOffer" typeof="Offer"><meta property="price" content="1000.00" /></div> <div property="makesOffer" typeof="Offer"><meta property="price" content="250.00" /></div>
    – sleepless
    Mar 22, 2016 at 17:26
  • 1
    @sleepless: Yes, that’s correct: [Organization makesOffer Offer]. For the other direction you’d use offeredBy: [Offer offeredBy Organization]. And if you have multiple offers, you use the property multiple times.
    – unor
    Mar 22, 2016 at 17:46
  • Thank you! That were really helpful and enlightening insights. I think I got it now.
    – sleepless
    Mar 22, 2016 at 17:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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