What Schema.org does for local pages

Infographic showing how Schema.org markup for Joe's Plumbing feeds rich results, knowledge panels, and Google Maps.

Schema.org is a structured data vocabulary used to mark up web content for machine readability. For local services like Joe’s Plumbing, Schema.org makes business details discoverable, searchable, and displayable through rich results, knowledge panels, and Google Maps.

Schema defines what a page describes (Plumber, LocalBusiness, Service), and structured data uses semantic triples to express how each concept relates to others.

What a semantic triple means

Infographic splitting one fact into subject, predicate, and object, using Joe's Plumbing serves Springfield, IL as the example.

A semantic triple is the core data unit of the Semantic Web and Knowledge Graphs. It represents a single fact:

  • Subject: the entity being described
  • Predicate: the property or relationship
  • Object: the value or related entity

Example:

(“Joe’s Plumbing”, “serves”, “Springfield, IL”)

Triples interlink entities. These connections form knowledge graphs that help search engines reason about meaning beyond text matching.

How schema uses triples to describe entities

Diagram splitting one JSON-LD name line into subject, predicate, and object, then joining the triples into a semantic map.

Each key-value pair in a Schema.org JSON-LD block is a semantic triple.

This line:

"name": "Joe’s Plumbing – 24/7 Emergency Repairs"

Represents:

Subject: Joe’s Plumbing
Predicate: has name
Object: “Joe’s Plumbing – 24/7 Emergency Repairs”

When connected, these triples form a semantic map, a machine-readable understanding of the business.

Joe’s Plumbing repair page as a schema example

A web developer works at a laptop adding structured data markup to a local service page in a quiet home office.

The following Schema.org markup for Joe’s Plumbing uses the Plumber type, which inherits from LocalBusiness, Organization, and Place.

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Joe’s Plumbing – Emergency Repairs & Installations",
  "description": "Local Springfield-based plumbing contractor offering 24/7 emergency services, pipe repair, drain cleaning, and fixture installation.",
  "image": "https://joesplumbing.example.com/images/logo.jpg",
  "url": "https://joesplumbing.example.com",
  "telephone": "+1-555-123-4567",
  "email": "support@joesplumbing.example.com",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 39.781721,
    "longitude": -89.650148
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "09:00",
      "closes": "15:00"
    }
  ],
  "priceRange": "$$",
  "paymentAccepted": "Cash, Credit Card, Cryptocurrency",
  "currenciesAccepted": "USD",
  "areaServed": {
    "@type": "Place",
    "name": "Springfield, IL"
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://joesplumbing.example.com/repairs"
  }
}

Subject: the entity being described

The subject is the main focus of the structured data block, in this case:

"@type": "Plumber"

This defines the page’s entity type as a plumbing business, a more specific type than a generic local business or place.

Diagram pairing a semantic triple (subject Joe's Plumbing, predicate offers, object Repair Service) with a matching Schema.org LocalBusiness JSON-LD snippet

Predicate: the relationship being asserted

Infographic matching four schema predicates, priceRange, areaServed, geo, and mainEntityOfPage, to the fact each one asserts.

Predicates describe how the subject relates to other data:

  • "priceRange" describes affordability
  • "areaServed" defines the local service zone
  • "geo" sets the physical coordinates
  • "mainEntityOfPage" binds the service to the URL

These statements make the schema meaningful.

Object: the value or related concept

Comparison diagram of schema objects as plain values like USD versus linked entities such as Place, PostalAddress, and WebPage.

Objects are concrete values (for example, "USD", "$") or linked entities (Place, PostalAddress, WebPage). Objects supply context for the subject and its attributes.

PlumbingService as the primary entity

Diagram linking a service page to the Plumber entity through mainEntityOfPage, so Google knows what the page is about.

Because the page describes the service and not the company or the team, you must assign:

"mainEntityOfPage": {
  "@type": "WebPage",
  "@id": "https://joesplumbing.example.com/repairs"
}

This signals to Google:

“This page is about this Plumber entity.”

It increases the chance of appearing in rich cards, answer boxes, and local results.

LocalBusiness vs. Plumber

A plumber tightens a pipe fitting under a kitchen sink, showing the specific trade that the most specific schema type should name.

In Schema.org:

  • LocalBusiness is a parent type
  • Plumber is a specialized subtype
  • Use the most specific type possible

In this case:

"@type": "Plumber"

This improves relevance for entity detection and local SEO.

Why mainEntityOfPage clarifies intent

Search engines infer meaning from the data you provide.

Infographic explaining the function of mainEntityOfPage in structured data for Joe’s Plumbing Repair Service, with a JSON-LD snippet and bullet points on entity focus and search engine clarity

Without mainEntityOfPage, a search engine might treat the page as:

  • A homepage
  • A location listing
  • A team profile
  • A general topic (plumbing)

With it, you remove ambiguity and declare what the page is about: the Plumber.

How triples build a knowledge graph

Hub-and-spoke knowledge graph linking Joe's Plumbing to Springfield, coordinates, its Plumber type, and its service page through four triples.

Each triple links entities. For Joe’s Plumbing:

  • (“Joe’s Plumbing”, “serves”, “Springfield”)
  • (“Joe’s Plumbing”, “has geo”, “GeoCoordinates”)
  • (“Joe’s Plumbing”, “has type”, “Plumber”)
  • (“Joe’s Plumbing”, “described on”, “https://joesplumbing.example.com/repairs”)

These triples connect to form a graph that powers:

  • Google’s Knowledge Panels
  • Local Pack rankings
  • Entity-based SEO results

Why search engines reward this structure

A homeowner with a leak searches on a phone for a local plumber, the moment when clear structured data helps one business be found.

Correct structured data helps machines:

  • Disambiguate similar pages or names
  • Understand intent and services
  • Display business info in knowledge-rich formats

For Joe’s Plumbing, this can mean:

  • Greater local search visibility
  • Inclusion in carousels
  • More prominent map placements

Common schema mistakes to avoid

Infographic listing five local schema mistakes: generic types, no mainEntityOfPage, homepage links, missing properties, and skipping validation.
  • Using generic types (Thing, Organization) instead of Plumber
  • Forgetting mainEntityOfPage
  • Linking to the homepage instead of the service-specific URL
  • Omitting required properties like address, name, or telephone
  • Failing to validate with Google’s Rich Results Test

Final takeaway: clarity through connection

Infographic summarizing that Schema.org supplies the vocabulary and semantic triples supply the relationships for a Plumber entity.

Schema.org defines the vocabulary, and semantic triples define the relationships.

For Joe’s Plumbing:

  • Plumber = entity
  • mainEntityOfPage = disambiguator
  • Structured JSON-LD = data delivery format

These tools let search engines know what your business does, where it operates, and why it matters automatically.