Can I rely on google test for microdata on Organization and PostalAddress? - schema.org

I try to get a simple business address which I structured after the https://schema.org/PostalAddress Example 2:
<div class="place" itemscope itemtype="https://schema.org/Organization">
<p>
<span itemprop="name">Organisation</span>
</p>
<p itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
<span itemprop="streetAddress">Stationstreet 1</span>
<span itemprop="postalCode">8596</span> <span itemprop="addressLocality">Arbon</span>
</p>
</div>
If I let google test rich results test this it claims that no data was detected. If I test on (https://validator.schema.org) it proofs to contain a proper address.
Is this a mistake on my end or shouldn't I trust Google's test here?

The purpose of Google’s Rich Results Test tool is showing/validating structured data that conforms to their own Rich Results. Rich Results are features in Google Search (typically for displaying a search result in a different way), which make use of certain Schema.org schemas. This means the tool only considers a very small subset of what is possible to describe with Schema.org.
You can see this in action if you replace your Organization type with the subtype LocalBusiness (just for testing; if your organization is not a local business, don’t publish it like that). The tool will detect an item then, because Google has a rich result for local businesses.

Related

Need Schema Microdata example of how to list 'required documention' of a organization or business?

Hello and thank you for the opportunity to post a question. I have searched the Internet, Schema.org and Stackoverflow for an answer to my question. Maybe I am not asking my question correctly... I have a directory website that lists various organizations and businesses. Almost all the Organizations are Government funded and require documentation from a client in order to receive services.
For example: 'Name of Food Bank, Address, Telephone, Description, Documentation required: Photo ID, Birth Certificate, Utility Bill, EBT card.' The same would be for a Hospital, Substance Use Program, Medical, Dental, etc.
I cannot find any schema for how to list the documentation that the organization requires from a client in order to be eligible for services. I'm sure it's got to be somewhere!
Most likely, there is a way, but for just one specific entity type. I need a way to use for any entity type.
My question is how would I use Microdata to list the (any) organizations/business 'Required Documentation' of a client?
I don't think there's such an option. You might start from what's it about.
From what you're saying, some companies offer some services. So we could use Service and LocalBusiness entities.
Customers need to provide documentation, which means it's an application, so we can use ApplyAction as the top/main entity, because that seems to be the point.
As for "required documentation", can't think of anything other than just list it in the description, as is.
Here's how it might look (ApplyAction that has a Service as an object, offered by one of the companies, with requirements listed in the description):
<div>
<div itemtype="http://schema.org/ApplyAction" itemscope>
<div itemprop="object" itemtype="http://schema.org/Service" itemscope>
<meta itemprop="serviceType" content="Hospital, Substance Use Program, Medical, Dental, etc." />
<meta itemprop="description" content="Documentation required: Photo ID, Birth Certificate, Utility Bill, EBT card" />
<div itemprop="provider" itemtype="http://schema.org/LocalBusiness" itemscope>
<meta itemprop="name" content="One of various organizations and businesses" />
</div>
</div>
</div>
</div>

Schema dot org and alternate languages

I have schema dot org markup on my website. But I also have an alternate language; each of my pages has a French version in a different page with proper hreflang tags.
Google's instructions don't really mention different languages, neither does schema dot org. For example, I have an "Organization" schema set up on the homepage. Do I need to translate it on the French homepage or leave it in English, and if so, do I change the URL to point to the French homepage as well? Wouldn't this cause Google to think there are two different organizations? Same question would apply to schemas like "Product".
hreflang not directly related to schema.org (That's why you didn't find any references on google/schema.org).
Schema.org is a set of extensible schemas that enables webmasters to
embed structured data on their web pages for use by search engines and
other applications. https://schema.org/
VS
Hreflang specifies the language and optional geographic restrictions
for a document. Hreflang - Google Support. The hreflang attribute on each page should include a reference to itself as well as to all the pages that serve as alternates for it https://moz.com/learn/seo/hreflang-tag.
Two pages example
**microdata (Same idea for JSON-LD). And the same idea to any schema.
Your English version
/en/about
<div itemscope itemtype="http://schema.org/LocalBusiness">
<h1><span itemprop="name">Hello World</span></h1>
<p itemprop="description">A superb collection of fine gifts and clothing
</div>
hreflang:
<link rel="alternate" href="http://example.com/en/about" hreflang="en" />
<link rel="alternate" href="http://example.com/fr/about" hreflang="fr-fr" />
Your French version
/fr/about
<div itemscope itemtype="http://schema.org/LocalBusiness">
<h1><span itemprop="name">Bonjour le monde</span></h1>
<p itemprop="description">Une superbe collection de beaux cadeaux et vêtements
</div>
hreflang:
<link rel="alternate" href="http://example.com/en/about" hreflang="en" />
<link rel="alternate" href="http://example.com/fr/about" hreflang="fr-fr" />
itemprop="name" above give extra semantic data about your LocalBusiness - each page use another language (Specify by Hreflang).
One of google guideline is:
Don't mark up content that is not visible to readers of the page. For
example, if the JSON-LD markup describes a performer, the HTML body
should describe that same performer. https://developers.google.com/search/docs/guides/sd-policies
Not official google answer about this topic - but its better to translate the JSON-LD data as well. By Wordpress or other CMS, it should be easy to pull the data.
Anyway, JSON-LD not related to site indexing (like hreflang -or- canonical). There is no need to change a URL because of a schema. You find reports (status/errors/rich results) about your schema under google search console - docs her.
Live example (From nike site):
English schema (rich card preview):
Data Testing tool
French schema (rich card preview):
Data testing tool
Follow the structured data guidelines of Google requires:
Relevance
Your structured data should be a true representation of the
page content.
as well as further
Location
Put the structured data on the page that it describes, unless
specified otherwise by the documentation. If you have duplicate pages
for the same content, we recommend placing the same structured data on
all page duplicates, not just on the canonical page.
Thus, if the information on your home page has a separate web page with duplicate content in French, then using structured data, you MUST set the content for data in French.
This is completely justified in terms of semantics. Google uses structured data to search for entities with API Google Knowledge Graph, for rich search results, for voice search, for machine learning. It is obvious that users using French in a web search is willing and will receive search results in French.

RDFa OfferCatalog Syntax

I have been trying to find the best way to link two items together using RDFa, specifically linking a Person to multiple SoftwareApplication entries.
The way I currently do this on the author page is:
<div class="container text-center" vocab="http://schema.org/" typeof="Person">
...
<span property="hasOfferCatalog" typeof="OfferCatalog">
<meta property="numberOfItems" content="10" />
<span property="itemListElement" typeof="CreativeWork">
<meta property="name" content="Project Name" />
<meta property="url" content="https://www.my-domain.tld/ProjectName/" />
</span>
...
As above the project is actually a SoftwareApplication, and the URL has a complete RDFa/Schema.org definition of it, but if i put:
typeof="SoftwareApplication"
on the author's page then, kind of expectedly, Google's Structured Markup validator throws errors about required values not being present for it, CreativeWork throws no errors but is less specific. I don't really want to repeat the entire SoftwareApplication metadata everywhere the project is referenced, I'd rather just say "go look at this URL".
What is the correct/best way to cross reference the SoftwareApplication pages from the author page? in the project the reverse reference is easy as there is an Author attribute, which can be of type Person, which is acceptable with just name and URL.
Once I know the correct RDFa way of referencing I'll apply the tags to content in the page rather than using meta tags.
To link items together, you need a suitable property. Like author (to state which Person is the creator of the SoftwareApplication), or like hasOfferCatalog (to state which SoftwareApplication is offered by the Person).
Inverse properties
In most cases, Schema.org defines its properties only for one direction. So there is only author, and no authorOf. If you need the property for the other direction, you can use RDFa’s rev attribute.
Linking instead of repeating
If you don’t want to repeat your data (i.e., only define it once and link/refer to this definition instead), you can provide a URL value. Schema.org allows this for all properties, even if URL is not listed as expected type. If you want to follow Semantic Web best practices, give your entities URLs (as identifiers) with RDFa’s resource attribute, and use these URLs as property values to refer to the entities.
For this, simply use one of the linking elements (e.g., elements with href or src attribute).
Example
Using the author case as example:
<!-- on the page about the software: /software/5 -->
<div typeof="schema:SoftwareApplication" resource="/software/5#this">
Author:
<a property="schema:author" typeof="schema:Person" href="/persons/alice#i">Alice</a>
</div>
<!-- on the page about the person: /persons/alice -->
<div typeof="schema:Person" resource="/persons/alice#i">
Authored by:
<a rev="schema:author" typeof="schema:SoftwareApplication" href="/software/5#this">Software 5</a>
</div>
Errors in Google’s SDTT
If the Structured Data Testing Tool gives errors about missing properties, note that it doesn’t mean that something is wrong with your markup. Schema.org never requires a property.
It just means that these properties are required for getting a certain Google search feature. So ignore these errors if you don’t want to get the feature (or if you can’t provide all required properties).
Thank you for the other response, I'll have a read over the linked resources, I have also found a solution to the specific case in my question.
Google Search Console has a page on Carousels which shows that you can use ListItem, which only "needs" URL, to populate the hasOfferCatalog property. E.g.
<span property="itemListElement" typeof="ListItem">
<meta property="position" content="1" />
<meta property="url" content="https://www.my-domain.tld/ProjectName/" />
</span>

What Schema.org type to use for personal skills?

I don't know which Schema.org type to use for a specialized team in my work.
I have something like that:
team name
team photo
team member 1 name
team member 1 photo
team member 1 qualification/skills
team member 2 name
team member 2 photo
team member 2 qualification/skills
etc...
I could use the type Organization, but I don't know what to use to specify the qualification/skills of the person.
Any idea?
I have had success with using Person schema: itemprop="jobTitle" and itemprop="knows".
Then you may add a link directly to your resume which highlights your skills or About page:
<span class="resume" itemprop="knows">
<a href="https://www.hillwebcreations.com/about-jeannie-hill/" title="About Jeanne" target="_blank" itemprop="url">
<img src="https://www.hillwebcreations.com/wp-content/uploads/2014/05/hill-web-creations-Jeannie-Hill.jpg" alt="example of how to add skills via schema" itemprop="url">
</a>
</span>
Recently each page with Person schema came up with a new error stating that it was missing homeLocation. Word from our Google Partners support says these errors in the Search Console will correect themselves and drop off soon. However, for the meantime, I was able to eliminate the error notices by adding the following code:
<div itemprop="homeLocation" itemscope itemtype="http://schema.org/PostalAddress">
<strong>Residence:</strong>
<span itemprop="addressLocality">Minneapolis</span>,
<span itemprop="addressCountry" itemscope itemtype="http://schema.org/Country">
<span itemprop="name">USA</span>
</span>
You can find more details as to how on GitHub. Or borrow ideas from my own site: Hill Web Marketing
Each person would be represented by Person.
You can use all properties that are defined in the first table on that page, i.e., properties from Person and Thing.
As you’ll see, there is no property for skills/qualifications.
Depending on your actual case, you might have use for the jobTitle property. And for a short paragraph of text (which may include information about skills/qualifications) about this person, you could use the description property.

Multiple opening hour definitions in schema.org

I have to implement schema.org for a large local car dealer with
repair shop, gas station, showroom and car wash. All on one website.
Is it possible to define for each area own opening hours in schema.org? And maybe google show them all?
Like
<meta itemprop="openingHours" item-name="Gas Station" content="Mo-Sa 11:00-14:30">
or are any child-entities reserved for this use case?
Thanks for hints.
Each area needs its own item (in Microdata introduced with the itemscope attribute). And the opening hours for an area have to be nested under its item.
So the whole business could be an AutomotiveBusiness. The repair shop are could be an AutoRepair, the wash area could be an AutoWash, and so on. And to relate the areas with the business, you could use the department property.
<div itemscope itemtype="http://schema.org/AutomotiveBusiness">
<!-- properties about the whole business go here -->
<div itemprop="department" itemscope itemtype="http://schema.org/AutoRepair">
<!-- properties about the repair area go here -->
</div>
<div itemprop="department" itemscope itemtype="http://schema.org/AutoWash">
<!-- properties about the wash area go here -->
</div>
</div>
You can try to use schema hours to distinguish each separate entity's opening hours, but the best way to get each entity listed in Google is to have a Google My Business page for each one.
I have clients who offer multiple services at the same location in the same manner you do. The trick is to add a "sub address" to the location by adding either a suite number or letter. i.e. 1234 Mary Way #100, or 1234 Mary Way #A.
Google Map Maker allows users to add unique addresses such as this to divide inner locations on buildings or establishments.
Hope this helps