WebSchemas/MultipleTypesSDO

From W3C Wiki

Multi-Type Entities (MTEs) and their properties via schema.org

Case

Types & properties as defined in this document

  • schema.org/Product and schema.org/Service have been combined to form one entity so to provide access to the properties of both types.
  • External enumerations, global & fragment identifiers and an extra ontology (productontology.org) have been added to provide more specific data about certain entities.

Issues

  • Markup validators by schema.org's sponsors Yandex & Google do not seem to support Multi Type Entities as their reports show markup errors.
  • Support for Global Identifiers is inconsistent.
  • Google's Webmaster Tools seems to pick up MTEs but reports about each type used separately, meaning an MTE consisting out of 2 types will generate 2 'data type' entries, which should be in fact a single 'MTE'.


Examples

A business making an offer for Repair Services in an area, as a business function

<div itemscope itemtype="http://schema.org/LocalBusiness">
    <h1>
        <a itemprop="url" href="http://example.com/johns-quick-repair">
            <span itemprop="name">John's Quik Repair</span>
        </a>
    </h1>
    <img itemprop="logo" src="http://example.com/johns-quik-repair-logo.jpg" alt="John's Quik Repair logo" title width="60" height="60" />
    <div itemprop="makesOffer" itemscope itemtype="http://schema.org/Offer">
        <div itemprop="businessFunction" itemscope itemtype="http://schema.org/BusinessFunction">
            <link itemprop="url" href="http://purl.org/goodrelations/v1#Repair" />
        </div>
        <div itemprop="itemOffered" itemscope itemtype="http://schema.org/Product http://schema.org/Service">
            <p>
                <img itemprop="image" src="http://example.com/drywall-repair.jpg" alt="Drywall Repair" title width="120" height="120" />
                <span itemprop="serviceArea" itemscope itemtype="http://schema.org/AdministrativeArea">
                    <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
                        <span itemprop="addressLocality">Dallas</span> - <span itemprop="addressLocality">Fort Worth</span>, 
                        <span itemprop="addressRegion">Texas</span>, <span itemprop="addressCountry">USA</span>
                    </span>
                </span><br />
                Service Type: <span itemprop="name serviceType">Drywall Repair</span>
            </p>
            <p itemprop="description">
                Placerat magnis vut tempor? Nisi auctor sit massa, etiam nunc sed augue aenean in, 
                eu diam, elit est, dis placerat, arcu augue nascetur, facilisis, sit in.
            </p>
        </div> 
    </div>
</div>


An offer for Repair Services in an area, as a business function, including a seller

<div itemscope itemtype="http://schema.org/Offer">
    <div itemprop="seller" itemscope itemtype="http://schema.org/LocalBusiness">
        <h1>
            <a itemprop="url" href="http://example.com/johns-quick-repair">
                <span itemprop="name">John's Quik Repair</span>
            </a>
        </h1>
        <img itemprop="logo" src="http://example.com/johns-quik-repair-logo.jpg" alt="John's Quik Repair logo" title width="60" height="60" />
    </div>
    <div itemprop="businessFunction" itemscope itemtype="http://schema.org/BusinessFunction">
        <link itemprop="url" href="http://purl.org/goodrelations/v1#Repair" />
    </div>
    <div itemprop="itemOffered" itemscope itemtype="http://schema.org/Product http://schema.org/Service">
        <p>
            <img itemprop="image" src="http://example.com/drywall-repair.jpg" alt="Drywall Repair" title width="120" height="120" />
            <span itemprop="serviceArea" itemscope itemtype="http://schema.org/AdministrativeArea">
            <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
                <span itemprop="addressLocality">Dallas</span> - <span itemprop="addressLocality">Fort Worth</span>, 
                <span itemprop="addressRegion">Texas</span>, <span itemprop="addressCountry">USA</span>
            </span>
            </span><br />
            Service Type: <span itemprop="name serviceType">Drywall Repair</span>
        </p>
        <p itemprop="description">
            Placerat magnis vut tempor? Nisi auctor sit massa, etiam nunc sed augue aenean in, 
            eu diam, elit est, dis placerat, arcu augue nascetur, facilisis, sit in.
        </p>
    </div>
</div>


Repair Services as a business function in an area, including a provider, being offered

<div itemscope itemtype="http://schema.org/Product http://schema.org/Service">
    <div itemprop="provider" itemscope itemtype="http://schema.org/LocalBusiness">		
        <h1>
            <a itemprop="url" href="http://example.org/johns-quick-repair">
                <span itemprop="name">John's Quik Repair</span>
            </a>
        </h1>
        <img itemprop="logo" src="http://example.org/johns-quik-repair-logo.jpg" alt="John's Quik Repair logo" title width="60" height="60" />
    </div>
    <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <span itemprop="businessFunction" itemscope itemtype="http://schema.org/BusinessFunction">
            <link itemprop="url" href="http://purl.org/goodrelations/v1#Repair" />
        </span>
    </div>
    <p>
        <img itemprop="image" src="http://example.org/drywall-repair.jpg" alt="Drywall Repair" title width="120" height="120" />
        <span itemprop="serviceArea" itemscope itemtype="http://schema.org/AdministrativeArea">
            <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
                <span itemprop="addressLocality">Dallas</span> - <span itemprop="addressLocality">Fort Worth</span>, 
                <span itemprop="addressRegion">Texas</span>, <span itemprop="addressCountry">USA</span>
            </span>
        </span><br />
        Service Type: <span itemprop="name serviceType">Drywall Repair</span>
    </p>
    <p itemprop="description">
        Placerat magnis vut tempor? Nisi auctor sit massa, etiam nunc sed augue aenean in, 
        eu diam, elit est, dis placerat, arcu augue nascetur, facilisis, sit in.
    </p>
</div>


All in one Linked Data solution

In microdata (by using @itemid)

<div itemid="#LocalBusiness" itemscope itemtype="http://schema.org/LocalBusiness">
    <h1>
        <a itemprop="url" href="http://example.org/johns-quick-repair">
            <span itemprop="name">John's Quik Repair</span>
        </a>
    </h1>
    <img itemprop="logo" src="http://example.com/johns-quik-repair-logo.jpg" alt="John's Quik Repair logo" title width="60" height="60" />
    <div itemid="#Offer" itemprop="makesOffer" itemscope itemtype="http://schema.org/Offer">
        <link itemprop="seller" href="#LocalBusiness" />
        <div itemprop="businessFunction" itemscope itemtype="http://schema.org/BusinessFunction">
            <link itemprop="url" href="http://purl.org/goodrelations/v1#Repair" />
        </div>
        <div itemid="#ProductService" itemprop="itemOffered" itemscope itemtype="http://schema.org/Product http://schema.org/Service">
            <link itemprop="provider" href="#LocalBusiness" />
            <p>
                <img itemprop="image" src="http://example.com/drywall-repair.jpg" alt="Drywall Repair" title width="120" height="120" />
                <span itemprop="serviceArea" itemscope itemtype="http://schema.org/AdministrativeArea">
                    <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
                        <span itemprop="addressLocality">Dallas</span> - <span itemprop="addressLocality">Fort Worth</span>, 
                        <span itemprop="addressRegion">Texas</span>, <span itemprop="addressCountry">USA</span>
                    </span>
                </span><br />
                Service Type: <span itemprop="name serviceType">Drywall Repair</span>
            </p>
            <p itemprop="description">
                Placerat magnis vut tempor? Nisi auctor sit massa, etiam nunc sed augue aenean in, 
                eu diam, elit est, dis placerat, arcu augue nascetur, facilisis, sit in.
            </p>
        </div> 
    </div>
</div>


In RDFa (by using @resource)

<div vocab="http://schema.org/" resource="#LocalBusiness" typeof="LocalBusiness">
    <h1>
        <a property="url" href="http://example.com/johns-quick-repair">
            <span property="name">John's Quik Repair</span>
        </a>
    </h1>
    <img property="logo" src="http://example.com/johns-quik-repair-logo.jpg" alt="John's Quik Repair logo" title width="60" height="60" />
    <div resource="#Offer" property="makesOffer" typeof="Offer">
        <link property="seller" href="#LocalBusiness" />
        <div property="businessFunction" typeof="BusinessFunction">
            <link property="url" href="http://purl.org/goodrelations/v1#Repair" />
        </div>
        <div resource="#ProductService" property="itemOffered" typeof="Product Service">
            <link property="provider" href="#LocalBusiness" />
            <p>
                <img property="image" src="http://example.com/drywall-repair.jpg" alt="Drywall Repair" title width="120" height="120" />
                <span property="serviceArea" typeof="AdministrativeArea">
                    <span property="address" typeof="PostalAddress">
                        <span property="addressLocality">Dallas</span> - <span property="addressLocality">Fort Worth</span>, 
                        <span property="addressRegion">Texas</span>, <span property="addressCountry">USA</span>
                    </span>
                </span><br />
                Service Type: <span property="name serviceType">Drywall Repair</span>
            </p>
            <p property="description">
                Placerat magnis vut tempor? Nisi auctor sit massa, etiam nunc sed augue aenean in, 
                eu diam, elit est, dis placerat, arcu augue nascetur, facilisis, sit in.
            </p>
        </div> 
    </div>
</div>


Structured Data Testing Tools Offered as Free Global Services

Google's Structured Data Testing Tool (in microdata)

<div itemid="https://developers.google.com/structured-data/testing-tool/" itemscope itemtype="http://schema.org/Product http://schema.org/Service">
    <link itemprop="additionalType" href="http://www.productontology.org/id/Validator">
    <link itemprop="additionalType" href="http://www.productontology.org/id/Semantic_publishing">
    <a itemprop="url" href="https://developers.google.com/structured-data/testing-tool/">
        <span itemid="http://www.google.com" itemprop="brand manufacturer provider" itemscope itemtype="http://schema.org/Corporation">
            <span itemprop="name">Google</span>
            <link itemprop="makesOffer" href="#Offer">
        </span> 
        <span itemprop="name">Structured Data Testing Tool</span>
    </a>
    <span itemprop="serviceArea" itemscope itemtype="http://schema.org/AdministrativeArea">
        <span itemid="http://en.wikipedia.org/wiki/Earth" itemprop="geo" itemscope itemtype="http://schema.org/GeoShape">
            <meta itemprop="name" content="Earth">
            <link itemprop="sameAs" href="http://dbpedia.org/page/Earth">
            <link itemprop="sameAs" href="http://www.freebase.com/m/02j71">
            <link itemprop="sameAs" href="http://www.wikidata.org/wiki/Q2">
        </span>
    </span>
    <span itemid="#Offer" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <link itemprop="itemOffered" href="https://developers.google.com/structured-data/testing-tool/">
        <link itemprop="seller" href="http://www.google.com">
        <span itemprop="businessFunction" itemscope itemtype="http://schema.org/BusinessFunction">
            <link itemprop="url" href="http://purl.org/goodrelations/v1#ProvideService">
        </span>
        <link itemprop="eligibleRegion" href="http://en.wikipedia.org/wiki/Earth">
        <meta itemprop="priceCurrency" content="USD">
        <meta itemprop="price" content="0">
    </span>
</div>


Yandex's Structured Data Validator (in RDFa)

<div vocab="http://schema.org/" prefix="pto: http://www.productontology.org/id/" resource="https://webmaster.yandex.com/microtest.xml" 
typeof="Product Service pto:Validator pto:Semantic_publishing">
     <a property="url" href="https://webmaster.yandex.com/microtest.xml">
        <span resource="https://www.yandex.com/" property="brand manufacturer provider" typeof="Corporation">
            <span property="name">Yandex</span>
            <link property="makesOffer" href="#Offer">
        </span>
        <span property="name">Structured Data Validator</span>
    </a>
    <span property="serviceArea" typeof="AdministrativeArea">
        <span resource="http://en.wikipedia.org/wiki/Earth" property="geo" typeof="GeoShape">
            <meta property="name" content="Earth">
            <link property="sameAs" href="http://dbpedia.org/page/Earth">
            <link property="sameAs" href="http://www.freebase.com/m/02j71">
            <link property="sameAs" href="http://www.wikidata.org/wiki/Q2">
        </span>
    </span>
    <span resource="#Offer" property="offers" typeof="Offer">
        <link property="itemOffered" href="https://webmaster.yandex.com/microtest.xml">
        <link property="seller" href="https://www.yandex.com/">
        <span property="businessFunction" typeof="BusinessFunction">
            <link property="url" href="http://purl.org/goodrelations/v1#ProvideService">
        </span>
        <link property="eligibleRegion" href="http://en.wikipedia.org/wiki/Earth">
        <meta property="priceCurrency" content="USD">
        <meta property="price" content="0">
    </span>
</div>


Structured Data Initiative's Structured Data Linter (in JSON-LD)

<script type="application/ld+json">
{
    "@context":"http://schema.org",
    "@id":"http://linter.structured-data.org/",
    "@type":["Product","Service","http://www.productontology.org/id/Validator","http://www.productontology.org/id/Semantic_publishing"],
    "url":"http://linter.structured-data.org/",
    "brand":{
        "@id":"http://structured-data.org/",
        "@type":"Organization",
        "name":"Structured Data Initiative",
        "makesOffer":"http://example.com/#Offer"
    },
    "manufacturer":"http://structured-data.org/",
    "provider":"http://structured-data.org/",
    "name":"Structured Data Linter",
    "serviceArea":{
        "@type":"AdministrativeArea",
        "geo":{
            "@id":"http://en.wikipedia.org/wiki/Earth",
            "@type":"GeoShape",
            "name":"Earth",
            "sameAs":["http://dbpedia.org/page/Earth","http://www.freebase.com/m/02j71","http://www.wikidata.org/wiki/Q2"]
        }
    },
    "offers":{
        "@id":"http://example.com/#Offer",
        "@type":"Offer",
        "itemOffered":"http://linter.structured-data.org/",
        "seller":"http://structured-data.org/",
        "businessFunction":{
            "@type":"BusinessFunction",
            "url":"http://purl.org/goodrelations/v1#ProvideService"
        },
        "eligibleRegion":"http://en.wikipedia.org/wiki/Earth",
        "priceCurrency":"USD",
        "price":"0"
    }
}
</script>