Whiteseo

Schema Markup and Entity Linking: @id, sameAs, @graph

Schema Markup and Entity Linking: @id, sameAs, @graph

Structured data — schema markup — means repeating in machine-readable form what your page already says in prose. From a semantic SEO point of view its main value is not the star rating in the search results: markup lets you name your entities, declare their types and connect them to one another.

Google's structured data guidelines accept three formats — JSON-LD (recommended), Microdata and RDFa. This article uses JSON-LD only, because it is written separately from the HTML and is by far the easiest to maintain.

Short answerConnecting entities takes three keys: @type declares what something is; @id gives that entity a unique address so other blocks can reference it; sameAs equates the entity with its official external profiles. Without those three, schema is just a set of code fragments unaware of each other.

What structured data does and does not do

What it does: it classifies the information on a page unambiguously. The word "Baku" in running text could be a city, a restaurant name or a surname; the moment you write "@type": "Place" that ambiguity disappears. This is the machine-side half of the "disambiguation" job described in the entity SEO article.

What it does not do: it does not guarantee rankings and it does not make weak content strong. Google's own documentation is explicit that even correct markup does not guarantee a rich result — the algorithm prioritises user experience and may choose to show a plain text result instead.

@id and @graph: connecting entities

On most sites schema is written like this: an Organization on the home page, a separate Article on a blog post, each unaware of the other. As far as Google is concerned those are unconnected objects.

The correct approach is to use @id: give every entity a unique, stable, URL-shaped identifier and then reference it.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",
      "name": "Example Agency",
      "url": "https://example.com/",
      "logo": {
        "@type": "ImageObject",
        "@id": "https://example.com/#logo",
        "url": "https://example.com/storage/logo.png"
      },
      "sameAs": [
        "https://www.linkedin.com/company/example",
        "https://www.facebook.com/example"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com/",
      "name": "Example Agency",
      "publisher": { "@id": "https://example.com/#organization" }
    },
    {
      "@type": "Article",
      "@id": "https://example.com/blog/semantic-seo#article",
      "headline": "What is semantic SEO",
      "isPartOf": { "@id": "https://example.com/#website" },
      "publisher": { "@id": "https://example.com/#organization" },
      "author": { "@id": "https://example.com/about#person" }
    }
  ]
}

Note that the publisher field does not repeat the company details; it references them by @id. That brings three benefits — shorter code, a single source of truth, and, most importantly, every page tying back to the same entity as far as Google is concerned.

#organizationOrganizationpublisherpublisherauthor →#websiteWebSite#articleArticle#personPerson (author)isPartOf → #website · author → #person
Figure 1 — With `@id`, each entity is described once and referenced everywhere else. The result is a graph with no duplication and real connections.

sameAs: external corroboration

sameAs is a simple but powerful field. It says: "this entity is also over there". Google's Organization documentation recommends it for links to your profiles on social media and review sites.

"sameAs": [
  "https://www.linkedin.com/company/example-agency",
  "https://www.facebook.com/exampleagency",
  "https://www.instagram.com/exampleagency",
  "https://www.youtube.com/@exampleagency"
]

Two practical rules:

  • List only official, active profiles. An empty or abandoned profile adds no corroborating weight.
  • Link back to your site from those profiles. Corroboration is more credible when it runs both ways.

The same logic applies to authors: an author's Person entity can carry a sameAs array pointing at their professional profiles.

The Organization schema: which fields

Per Google's Organization documentation no properties are required — you add the ones relevant to your organisation. The markup belongs on the home page or on a dedicated page such as About us.

Field Why it matters
name The official name of the organisation — the base of the brand entity
url The official website; helps Google identify you uniquely
logo A representative logo (minimum 112×112 pixels, must be crawlable)
sameAs Profiles on social media and review sites
address streetAddress, addressLocality, addressRegion, postalCode, addressCountry
contactPoint Contact methods: telephone with country code, email
alternateName Alternate spellings of the brand
description A short description of the organisation
foundingDate Founding date in ISO 8601 format

For a local business, choose the more specific LocalBusiness type over Organization — Google's general guidelines recommend using the most specific schema.org type available. That is standard practice in local SEO work.

Article and BreadcrumbList for a cluster

When building a content cluster it makes sense to add two schemas to every article: Article (the content itself) and BreadcrumbList (its position on the site).

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home",
      "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Blog",
      "item": "https://example.com/blog" },
    { "@type": "ListItem", "position": 3, "name": "What is semantic SEO" }
  ]
}

The final element carries no item — the reader is already on that page.

If the article has a genuine question and answer section, a FAQPage schema can be added too. The condition is that the questions and answers must be visible text on the page — a direct requirement of the guidelines below.

Rules and prohibitions

Google's structured data guidelines come in three blocks: technical, quality and content. The most important prohibitions:

  • Do not mark up hidden information. Content a user cannot see on the page must not appear in the markup.
  • Do not mark up irrelevant content. The documentation's own example is blunt: woodworking instructions must not be labelled as a recipe.
  • Do not provide false or misleading information. Fake reviews, impersonating others and misrepresenting affiliations are prohibited.
  • Do not block the page carrying the markup. If a page is blocked by robots.txt or noindex, the markup is not processed.
  • Pick the most specific type and fill the fields. Without the required properties there is no eligibility for the feature; recommended properties improve the result.

Testing and fixing errors

Tool What it is for
Rich Results Test Eligibility for Google features, errors and warnings
Schema Markup Validator General schema.org syntax (for types outside Google features)
Search Console → URL Inspection The HTML Google sees — does the markup survive rendering
Search Console → enhancement reports Aggregated errors across the whole site

The most common technical problem is this: the markup is injected by JavaScript and disappears during rendering. If you can see the JSON-LD block in the "rendered HTML" section of URL Inspection, you are fine.

Order of operationsAlways do schema markup last: the page has to be indexed first, the content has to be good second, and only then does markup add value. Perfect JSON-LD on a page that is not indexed achieves nothing — that ordering is the core principle of [technical SEO](/en/services/texniki-seo) work.

Common mistakes

1. Repeating the whole Organization block on every page. Referencing it by @id is the better pattern.

2. Using a random string as @id. It must be stable and URL-shaped so that other blocks can reference it.

3. Marking up an FAQ that is not on the page. This is the single most frequently violated rule.

4. Supplying a logo that is too small or blocked. There is a minimum size requirement and the file must be crawlable.

5. Forgetting to update the markup. When an address or phone number changes and the schema stays behind, your entity signals start contradicting each other.

Frequently asked questions

Does schema markup improve rankings?

Google does not confirm it as a direct ranking factor. The benefit is indirect: entities become unambiguous, pages become eligible for features, and the result listing gets richer. Even so, correct markup never guarantees a rich result.

Which format should I choose: JSON-LD, Microdata or RDFa?

All three are accepted, but JSON-LD is recommended. Because it is independent of the HTML structure it is by far the easiest to change and maintain.

How many schemas can one page carry?

There is no limit; the requirement is that all of them match the page's content. Using @graph is the cleanest way to keep several schemas in a single block.

Is plugin-generated schema enough?

It is enough to start with, but plugins usually fail to build proper @id references and complete sameAs arrays. Verify the output with the Rich Results Test.

What should I do about an error?

Look at the type first: an "error" blocks eligibility for the feature entirely, while a "warning" flags a missing recommended field. Fix errors first, warnings second.

Continue the clusterReviewing the markup already on your site is part of our SEO audit service.
Official sources used
  1. Structured data general guidelines — formats, quality and content rules
  2. Organization structured data — name, url, logo, sameAs, address, contactPoint
  3. Google Knowledge Graph Search API — the role of schema.org types in the entity model
  4. Google Search Essentials — baseline structured data guidance
  5. Creating helpful, reliable, people-first content — content quality comes first
Whiteseo SEO Team
SEO specialists · 8+ years of experience · Reviewed and edited

The Whiteseo team has been doing search optimization for local and international brands since 2016. Our articles are based on real project experience.

WhatsApp Blog