seoschema.orgjson-ldgooglebot

Linking up Schema markup in different pages


So, how good is Google and other search engines in linking schema markup in different pages of the same website?

I am marking the home page with an Organization type.

{
  "@context":"https://schema.org",
  "@type":"Organization"
  "@id":"https://example.com\/#organization",
  "legalName":"My company",
  "email":"contact@example.com"
}

And the page of every individual course offered is being marked with a Course type.

{
  "@context":"https://schema.org",
  "@type":"Course"
  "@id":"https://example.com/course/1#course1",
  "description": "Webmaster"
}

Can I count on google and other search engines to understand that Course "Webmaster" is being provided by the Organization "My company" describe in the home page?

I mean, they are both defined in the same website, it should be obvious.

Now, I could define the Organization type in the Course's author property.

{
  "@context":"https://schema.org",
  "@type":"Course"
  "@id":"https://example.com/course/1#course1",
  "description": "Webmaster",
  "author": {
    "@context":"https://schema.org",
    "@type":"Organization"
    "@id":"https://example.com\/#organization",
    "legalName":"My company",
    "email":"contact@example.com"
  }
}

I also could define both types one alongside the other with the graph property.

{
  "@context":"https://schema.org",
  "@graph": [
    "@type":"Course"
    "@id":"https://example.com/course/1#course1",
    "description": "Webmaster",
  }, 
  {
    "@context":"https://schema.org",
    "@type":"Organization"
    "@id":"https://example.com\/#organization",
    "legalName":"My company",
    "email":"contact@example.com"
  }
}

But do I need to? Can't google infer the relationship between this types simple based on the fact that they are defined in the same website?


Solution

  • how good is Google and other search engines in linking schema markup in different pages of the same website?

    As good as you tell them.

    Can I count on google and other search engines to understand that Course "Webmaster" is being provided by the Organization "My company" describe in the home page?

    To create related data, it can be important to start with the hierarchical structure of the content of the web page that represents the course. If the subject of the content is a course, it may make sense to explicitly specify the name and description of the course in the content. Since every course has a provider, it also makes sense to specify the name of the course provider as a sub-subject of the entire course.

    From the main content with the hierarchical structure of the course - the provider to easily navigate to associated data. Google's General structured data guidelines tell us:

    Relevance Your structured data should be a true representation of the page content.

    The type Course can be specified as a top-level structured data type and this type will represent the subject of the webpage main content. This type has a provider property in which you can nest markup for the type Organization.

    At this step, you must again return to the main content. If the course presented in the content has one specific provider, it may make sense to include complete information about the provider's organization in the content of the web page. The same applies to many of the courses presented on separate webpages that have separate providers. However, if many courses have only one provider, then it makes sense to represent the provider organization in the content of a separate web page and for all references to the provider name for the individual courses, simply link to the web page representing the provider organization. This will canonicalize the provider organization and eliminate duplicate content. In the content representing the organization of a provider, you can specify all courses offered by that provider that is available at the level of the entire website. And create backlinks to the separate web pages that represent these courses. This will create a link between the provider and the courses they teach.

    At this point, we can go back to structured data and use the main content: If there is only one provider of the course and full information is indicated in the content of the web page, then in the structured data, it is necessary to indicate complete information about the provider's organization, e.g.:

    {
      "@context":"https://schema.org",
      "@type":"Course",
      "@id":"https://example.com/course/1#course1",
      "name": "Webmaster", 
      "description","zzzzz",
      "provider":{
      "@type":"Organization",
      .... (full info) 
      }  
    }

    If the content has a link to a separate web page representing the provider's organization, then in the structured data you can only specify the provider's name and the link to the web page, e.g.:

    {
      "@context":"https://schema.org",
      "@type":"Course",
      "@id":"https://example.com/course/1#course1",
      "name": "Webmaster", 
      "description","zzzzz",
      "provider":{
      "@type":"Organization",
      "name": "Webmaster", 
      "url":"https://example.com/provider"
      }  
    }

    For structured data representing the provider's organization on a separate web page, it may make sense to specify courses offered using properties hasOfferCatalog or makesOffer, and embed the required types with backlinks to web pages with separate courses.

    All of the above can provide related data that represent the course or courses offered by a particular provider organization.

    The Google recommendation can help to create relevant structured data:

    Completeness

    Specify all required properties for your rich result type. Items that are missing required properties are not eligible for rich results. The more recommended properties that you provide, the higher quality the result is to users. ...Rich result ranking takes extra information into consideration.