Course → Module 3: Structured Data for Recognition
Session 7 of 8

You have spent the last six sessions building individual pieces of structured data: Person schema, Organization schema, Article schema, Course schema. Now comes the critical question: do these pieces connect into a coherent whole, or are they isolated fragments scattered across your site?

Most sites have disconnected schema. The homepage declares an Organization. The About page declares a Person. Blog posts declare Articles. But none of them reference each other. From a search engine's perspective, these might be completely unrelated entities. The architecture of your JSON-LD determines whether your structured data tells a unified story or a collection of disconnected facts.

The Problem with Fragmented Schema

Fragmented schema is like having employees who never mention which company they work for. Each piece of information might be accurate, but the system cannot assemble a complete picture. The Organization on your homepage and the author on your blog post might be treated as separate, unrelated entities.

graph TD subgraph Fragmented ["Fragmented Schema (common)"] A["Homepage: Organization"] -.->|no connection| B["About: Person"] B -.->|no connection| C["Blog: Article"] C -.->|no connection| D["Course: Course"] end subgraph Connected ["Connected Schema (goal)"] E["Homepage: Organization @id:org"] -->|founder| F["About: Person @id:person"] F -->|worksFor| E G["Blog: Article"] -->|author @id:person| F G -->|publisher @id:org| E H["Course: Course"] -->|provider @id:org| E H -->|instructor @id:person| F end

The fragmented version has four pieces of schema that are invisible to each other. The connected version has four pieces of schema that form a knowledge graph. Same content. Dramatically different entity signal.

The @id System: Your Schema's Backbone

The @id property is the mechanism that connects schema across pages. It works like a database primary key. You define an entity once with a canonical @id, then reference that @id from any other schema block on any page of your site.

Entity Canonical @id Defined On Referenced From
Organization https://yoursite.com/#org Homepage Every page (publisher), About (employer), Courses (provider)
Person https://yoursite.com/#person About page Blog posts (author), Courses (instructor), Homepage (founder)
WebSite https://yoursite.com/#website Homepage All pages (isPartOf for WebPage)
Content Hub https://yoursite.com/entity-seo/#hub Hub page Cluster articles (isPartOf)

The @id is the single most important architectural decision in your JSON-LD implementation. Get it right, and every piece of schema on your site reinforces every other piece. Get it wrong, and you have expensive, well-validated disconnected fragments.

Designing Your Schema Architecture

Before writing any code, design your schema architecture on paper. Map which entity types appear on which pages, how they reference each other, and what relationship properties connect them.

A typical site schema architecture follows this hierarchy:

  1. Homepage: Organization (or Person for personal brands) + WebSite. This is the root of your schema graph.
  2. About page: Person with full details, referencing Organization via worksFor/founder.
  3. Blog/content pages: Article with author (Person @id), publisher (Organization @id), about (topic), isPartOf (hub).
  4. Hub/pillar pages: WebPage or CollectionPage with hasPart referencing cluster articles.
  5. Course/event pages: Course or Event with provider/organizer (Organization @id), instructor/performer (Person @id).
  6. Service pages: Service with provider (Organization @id), serviceType, areaServed.

The @graph Property

When a single page needs to declare multiple entity types, use the @graph property to contain them in one JSON-LD block. This keeps your schema organized and makes cross-references within the same page explicit.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://yoursite.com/#org",
      "name": "Smith SEO",
      "founder": { "@id": "https://yoursite.com/#person" }
    },
    {
      "@type": "WebSite",
      "@id": "https://yoursite.com/#website",
      "name": "Smith SEO",
      "publisher": { "@id": "https://yoursite.com/#org" }
    }
  ]
}

Google supports both the @graph approach and separate <script> tags for multiple entities on the same page. The @graph approach is cleaner and makes the relationships more explicit.

Finding and Fixing Disconnections

After mapping your architecture, crawl your site and audit every page's structured data. Look for these common disconnections:

Further Reading

Assignment

  1. Create a schema architecture diagram for your site. Map which entity types appear on which pages and how they reference each other via @id.
  2. Define canonical @id values for your Person, Organization, and WebSite entities.
  3. Audit every page on your site for schema disconnections: missing @id references, orphaned entities, mismatched identifiers.
  4. Fix at least 5 disconnections so that your site's schema forms a coherent, traversable entity graph.
  5. Validate the connected schema on 3 different page types to confirm @id references resolve correctly.