What Schema.org Does for Local Pages
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 is being described (Plumber, LocalBusiness, Service), and structured data uses semantic triples to express how each concept relates to others.
What a Semantic Triple Means
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, not just match text.
How Schema Uses Triples to Describe Entities
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
Here’s a complete Schema.org markup for Joe’s Plumbing, using 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 structured data block’s main focus—in this case:
"@type": "Plumber"
This explicitly defines the page’s entity type as a plumbing business, not just any local business or place.

Predicate: The Relationship Being Asserted
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
Objects are either concrete values (e.g., "USD", "$") or linked entities (Place, PostalAddress, WebPage). These fill in the context for the subject and its attributes.
PlumbingService as the Primary Entity
Because the page describes the service—not the company or the team—it’s essential to 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
In Schema.org:
LocalBusinessis a parent typePlumberis a specialized subtype- You should always use the most specific type possible
In this case:
"@type": "Plumber"
This maximizes relevance for entity detection and local SEO.
Why mainEntityOfPage Clarifies Intent
Search engines don’t guess well—they infer based on data.

Without mainEntityOfPage, a page might be seen as:
- A homepage
- A location listing
- A team profile
- A general topic (plumbing)
With it, you remove ambiguity. You declare what the page is about—the Plumber.
How Triples Build a Knowledge Graph
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 connect to form a graph. That graph powers:
- Google’s Knowledge Panels
- Local Pack rankings
- Entity-based SEO results
Why Search Engines Reward This Structure
Structured data done right helps machines:
- Disambiguate similar pages or names
- Understand intent and services
- Display business info in knowledge-rich formats
For Joe’s Plumbing, this means:
- Greater local search visibility
- Inclusion in carousels
- More prominent map placements
Common Schema Mistakes to Avoid
- Using generic types (
Thing,Organization) instead ofPlumber - Forgetting
mainEntityOfPage - Linking to the homepage instead of the service-specific URL
- Omitting required properties like
address,name, ortelephone - Failing to validate with Google’s Rich Results Test
Final Takeaway: Clarity Through Connection
Schema.org defines the vocabulary, and semantic triples define the relationships.
For Joe’s Plumbing:
Plumber= entitymainEntityOfPage= disambiguator- Structured JSON-LD = data delivery format
These tools allow search engines to know what your business does, where it operates, and why it matters, automatically.
