Nesting Schema Markup (@id ve @graph)
deep-dive on connecting JSON-LD entities ile @id ve @graph — stable identifiers, two canonical node patterns (web sitesi→Article→Author, Product→Offer→organizasyon), three mistakes şu break graph, ve honest limits of ne Google's docs yapğrula.
Diller
Nesting connects sizin JSON-LD entities yerine dumping them olarak disconnected blocks. @id dır bir stable, unique URI (genellikle bir canonical URL plus bir #fragment) şu names bir entity bu nedenle diğer entities -ebilir reference o — bir Article's author pointing at bir kişben node, bir Product's Offer pointing at bir organizasyon/seller — yerine re-declaring full entity everywhere. @graph dır bir keyword şu bundles şunlar connected entities -e bir script block. Google's docs yapğrula her ikisi nesting ve individual items çalışır, ve şu @id dır nasıl siz söyle Google two items dır linked, ama onlar never yapğrula whether @id resolves genelinde sayfalar — bu nedenle safe default dır consistent @id values plus complete entity graph on her sayfa şu gerektirir o. Two patterns -e öğren: web sitesi → WebPage → Article → Author bençin publishing, Product → Offer → organizasyon bençin ecommerce. Three ways o breaks veya maliyetler siz: inconsistent/non-unique @id values, orphaned references (bir @id cited ama never declared — bir semantic gap, değil invalid JSON-LD), ve duplicating bir full entity's declaration everywhere yerine referencing o (bir maintenance trap; aynı-entity repeats merge yerine literally break, ama bir genuinely conflicting reused @id dır bir gerçek break). o's bir entity-understanding araç, değil bir sıralama veya rich-sonuç lever tarafından itself.
Evidence for this claim JSON-LD supports connected nodes via nesting or @id references, allowing multiple related entities to form one graph. Scope: JSON-LD graph model. Confidence: high · Verified: W3C JSON-LD 1.1 Evidence for this claim Google requires structured data to represent visible page content and follow each feature's specific nesting and property guidelines; extra valid nodes do not create eligibility by themselves. Scope: Current Google structured-data general guidelines. Confidence: high · Verified: Google Search Central: Structured data general guidelinesTL;DR — Nesting dır nasıl siz connect sizin schema markup yerine leaving o olarak bir pile of disconnected blocks.
@iddır bir unique name (genellikle sizin sayfa URL’si plus bir#tag) siz ver bir entity — sizin organizasyon, bir author — bu nedenle diğer entities -ebilir benşaret et at o yerine repeating tümü onun details.@graphlets siz put several connected entities in bir code block. payoff: declare sizin organizasyon once, reference o everywhere, ve yapmayın kopya-paste aynı block üzerine her sayfa.
sorun nesting solves
söyle sizin site sahiptir bir Organization — bir name, bir logo, bağlantılar -e sizin social
profiles. ve her blog post sahiptir bir Article ile bir author ve bir publisher.
olmadan nesting, siz end up yazma out sizin full organizasyon details — name,
logo, her social bağlantı — bençinde her tek post’s markup. Change sizin logo,
ve now siz sahip -e update o in forty places.
Nesting düzeltmeler şu. siz declare organizasyon once, ver o bir stable name, ve everywhere else siz sadece reference şu name. bu assumes siz zaten know ne schema markup ve JSON-LD dır — -erseniz yapmayın, başla ile structured data hub ilk, o hâlde come back burada.
@id — bir name siz ver bir entity
@id dır sadece bir unique identifier bençin bir entity. convention dır -e kullan sizin
gerçek sayfa URL’si plus bir fragment, like bu:
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Co",
"logo": "https://example.com/logo.png"
}şu "@id": "https://example.com/#organization" dır now entity’s name.
Anywhere else -meniz gerekir söyle “the publisher is Example Co,” siz yapmayın rewrite tümü
of şu — siz sadece benşaret et at name:
{
"@type": "Article",
"publisher": { "@id": "https://example.com/#organization" }
}bir küçük ama önemli thing: @id dır bir benç bağlantı mechanism, değil bir sayfa
siz’re publishing. o yapmaz sahip -e olmak bir gerçek, fetchable URL — kullanarak bir fragment
on sizin kendi domain dır standard, ve şu exact fragment yapmaz ihtiyaç duy -e load olarak bir
sayfa. (şu’s farklı -den url property, hangi yapar describe bir gerçek
sayfa.)
@graph — bağlı varlıkları bir araya getirme
@graph lets siz liste several entities in bir code block yerine scattering
them genelinde çok söyleıda. yerine three separate <script> blocks, siz yaz bir:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://example.com/#organization", "name": "Example Co" },
{ "@type": "WebSite", "@id": "https://example.com/#website", "publisher": { "@id": "https://example.com/#organization" } }
]
}siz yaz @context once at top, ve entities bençinde reference her diğer
tarafından @id. o’s tidier ve easier -e maintain once siz sahip bir few connected pieces.
thing -e al yapğru
Two kurallar kapsa en çok of o:
- olmak consistent. kullan aynı
@idstring bençin aynı entity everywhere. eğer sizin organizasyon dır#organizationon bir sayfa ve#orgon başka bir, arama motorlar -ebilir’t söyle onlar’re aynı thing. - yapmayın benşaret et at nothing. eğer bir
Article’s author references{"@id": "#author-jane"}, emin olun#author-janedır aslında declared somewhere ile bir@typeve details. bir reference -e bir entity siz never defined sadece fails silently.
ve koru sizin expectations honest: nesting well yardımcı olur arama motorları understand sizin entities ve avoids duplicated data — o yapmaz, tarafından itself, yap siz rank higher veya unlock bir rich sonuç.
iste full nasıl—e — two standard patterns ile kopya-paste örnekler, three mistakes şu break graph, ve ne Google’s docs aslında yapğrula (ve leave silent)? Switch -e Advanced tab.
denetim bir JSON-LD graph olmadan inventing entities
Audit the JSON-LD below as a graph.
1. Inventory every declared node: @id, @type, and where it is declared.
2. Inventory every @id reference made by another node.
3. Flag exact orphan references, duplicate full declarations, case/fragment drift,
unstable-looking IDs, and relationships that point at the wrong entity type.
4. Distinguish a reference-only object ({"@id":"..."}) from a full declaration.
5. Do not assume an @id resolves across pages and do not invent missing facts.
6. Return (a) a findings table, (b) a minimal corrected graph using the existing
facts only, and (c) questions for facts that cannot be verified from the input.
JSON-LD:
[PASTE SCRIPT CONTENT]bençin bir template comparison, provide two rendered graphs ve ask model -e liste
IDs şu change unexpectedly arasında them. Stable entities such olarak publisher
-meli retain aynı durum-sensitive @id; sayfa-specific entities -meli kal
unique -e onların canonical sayfa.
bul orphaned ve yinelenen IDs in rendered JSON-LD
çalıştır bu in DevTools Console. o parses her JSON-LD block, walks arrays ve
@graph, ve separates full declarations -den reference-yalnızca @id objects.
const documents = [...document.querySelectorAll('script[type="application/ld+json"]')]
.flatMap((script, scriptIndex) => {
try {
return [{ scriptIndex, value: JSON.parse(script.textContent) }];
} catch (error) {
console.warn(`Invalid JSON-LD in script ${scriptIndex + 1}`, error);
return [];
}
});
const declarations = new Map();
const references = [];
function walk(value, path, scriptIndex) {
if (Array.isArray(value)) {
value.forEach((item, i) => walk(item, `${path}[${i}]`, scriptIndex));
return;
}
if (!value || typeof value !== 'object') return;
if (typeof value['@id'] === 'string') {
const keys = Object.keys(value).filter((key) => key !== '@id');
if (keys.length) {
const rows = declarations.get(value['@id']) ?? [];
rows.push({ script: scriptIndex + 1, path, keys: keys.join(', ') });
declarations.set(value['@id'], rows);
} else {
references.push({ id: value['@id'], script: scriptIndex + 1, path });
}
}
Object.entries(value).forEach(([key, child]) =>
walk(child, `${path}.${key}`, scriptIndex));
}
documents.forEach(({ value, scriptIndex }) => walk(value, '$', scriptIndex));
console.table(references.filter(({ id }) => !declarations.has(id)));
console.table([...declarations.entries()]
.filter(([, rows]) => rows.length > 1)
.map(([id, rows]) => ({ id, declarations: rows.length, locations: rows })));bir empty orphan table dır yararlı, ama o yapmaz prove graph dır semantically correct. Review durum-sensitive IDs, entity types, canonical URLs, ve whether complete graph gerekli tarafından bu sayfa dır aslında present.
Evidence for this claim JSON-LD supports connected nodes via nesting or @id references, allowing multiple related entities to form one graph. Scope: JSON-LD graph model. Confidence: high · Verified: W3C JSON-LD 1.1 Evidence for this claim Google requires structured data to represent visible page content and follow each feature's specific nesting and property guidelines; extra valid nodes do not create eligibility by themselves. Scope: Current Google structured-data general guidelines. Confidence: high · Verified: Google Search Central: Structured data general guidelinesTL;DR — Nesting connects JSON-LD entities via
@id(bir stable, unique URI — genellikle bir canonical URL plus bir#fragment) bu nedenle siz reference bir entity yerine re-declaring o, ve@graph(bir keyword bundling connected entities -e bir script block). Google’s docs yapğrula her ikisi nesting ve individual items çalışır, ve şu siz kullan@id-e bağlantı related items — ama onlar never yapğrula whether@idresolves genelinde sayfalar, bu nedenle safe default dır consistent@idvalues plus complete entity graph on her sayfa şu gerektirir o. öğren two patterns:WebSite → WebPage → Article → Author(publishing) veProduct → Offer → Organization/seller(ecommerce). Three başarısızlık modes -e watch bençin: inconsistent/non-unique@idvalues, orphaned references (bir@idcited ama never declared — semantically incomplete, değil invalid JSON-LD), ve yinelenen full declarations of aynı entity (bir maintenance trap; aynı-entity repeats merge altında JSON-LD’s node kurallar, ama reusing bir@idbençin genuinely farklı entities dır bir gerçek conflict). o’s bir entity-understanding araç — disambiguation ve de-duplication — değil bir sıralama veya rich-sonuç lever tarafından itself.
Scope: bu deep-dive, değil intro
bu article assumes siz zaten know ne JSON-LD dır ve neden o’s recommended
format — schema markup
sayfa kapsar şu, ve o introduces @id/@graph at bir glance. bu sayfa dır
deferred deep-dive: gerçek mechanics, standard node patterns, ve
specific mistakes şu quietly break graph. -erseniz iste format basics veya
nerede -e place <script> block, JSON-LD
dır sibling bençin şu.
@id — bir stable identifier, değil bir fetchable URL
@id assigns bir unique URI -e bir JSON-LD entity bu nedenle diğer entities -ebilir benşaret et at o tarafından
reference. convention — consistent genelinde her credible kaynak ben’ve checked —
dır bir absolute canonical URL plus bir descriptive fragment:
"@id": "https://example.com/#organization"
"@id": "https://example.com/#website"
"@id": "https://example.com/team/jane-doe/#person"Two things kişiler al yanlış burada:
- o yapmaz sahip -e resolve. Per JSON-LD spec,
@id’s job dır node identification — bir unique, stable “name” bençin bir entity — değil fetchability. kullanarak bir fragment on sizin kendi domain dır standard practice ve yapmaz require şu fragment URL -e independently load olarak bir sayfa. Sitebulb’s node-identifiers rehber frames o well: bir node identifier dır “bir unique ‘name’ bençin bir entity, bu da publicly accessible ve -ebilir olmak looked up veya linked -e.” @iddeğildirurl. onlar’re farklı properties doing farklı jobs.@ididentifies node in graph;urldescribes bir gerçek, fetchable sayfa hakkında entity. birOrganization-ebilir (ve çoğu zaman -meli) sahip her ikisi — bir@idofhttps://example.com/#organizationve birurlofhttps://example.com/.
ve @id values dır durum-sensitive — #Organization ve #organization dır
two farklı entities. seç bir convention ve never drift -den o.
@graph — bundling connected entities -e bir block
@graph dır bir JSON-LD keyword şu lets siz put birden çok top-level entities -e bir
array bençinde bir tek <script type="application/ld+json"> block, ile entities
cross-referencing her diğer tarafından @id:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://example.com/#organization", "...": "..." },
{ "@type": "WebSite", "@id": "https://example.com/#website", "...": "..." },
{ "@type": "WebPage", "@id": "https://example.com/post/#webpage", "...": "..." }
]
}@graph dır bir container, değil bir requirement. -ebilirsiniz absolutely kullan separate
<script> blocks bençin individual items — Google’s docs yapğrula her ikisi approaches
çalışır. neden -e ulaş bençin @graph dır maintainability: once siz sahip three veya
daha cross-referencing entities, siz yaz @context once at top yerine
repeating o in her block, ve everything şu references everything else lives in
bir place. bu pattern Yoast kullanır in production — onun
schema architecture docs
explain şu bir shared graph lets them “kaçın having -e yinelenen veya repeat shared
properties, ve -e reduce amount of code/processing/overhead required.”
neden nest at tümü — ve ne Google aslında söyler
One Organization identified as hash organization is referenced as publisher by the WebSite and Article. The WebPage belongs to the WebSite and is connected to the Article. Each entity is declared once, and the same stable at-id string is reused for every reference.
Google belgeler two structural options ve confirms o understands her ikisi. -den General Structured Data Guidelines: “Google arama understands birden çok items on bir sayfa, whether siz nest items veya specify her item individually.” It defines them plainly — nesting is “ne zaman orada dır bir main item, ve additional items dır grouped altında main item”, ve individual items dır “when each item is a separate block on the same page.”
bir paragraph şu’s closest thing -e bir resmî rationale bençin @id dır
bu: “eğer vardır items şu dır daha yararlı ne zaman onlar dır linked together (bençin
örnek, bir recipe ve bir video), kullan @id in her ikisi recipe ve video items -e
specify şu video dır hakkında recipe on sayfa. -erseniz didn’t bağlantı items
together, Google arama -ebilir değil know şu o -ebilir göster video olarak bir Recipe rich
sonuç.” şu’s mechanism in Google’ın kendi words — @id dır nasıl siz söyle Google
two items belong together.
Worth bir honest note: Google’s docs state bu principle in prose ama yapmayın ship bir
worked @graph+@id code sample demonstrating o — onların code örnekler göster bir
nested Recipe ve two individual top-level items, neither of hangi aslında
cross-references tarafından @id. örnekler below fill şu gap.
bu connects yapğrudan -e schema’s two jobs ( framing -den
schema markup sayfa):
nesting well dır squarely bir entity-understanding move — disambiguation ve
avoiding contradictory/duplicated data — değil bir rich-sonuç trigger kendi başına.
Linking sizin Article cleanly -e onun Author yapmaz unlock bir yeni SERP feature; o
sadece yapar relationships unambiguous.
Pattern 1 — web sitesi → WebPage → Article → Author
canonical publishing pattern. bir Organization ( publisher), bir WebSite,
o hâlde per-sayfa bir WebPage ve Article on o, ile author ve publisher
resolved tarafından @id yerine re-declared:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Media",
"url": "https://example.com/",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/example-media/",
"https://en.wikipedia.org/wiki/Example_Media"
]
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com/",
"name": "Example Media",
"publisher": { "@id": "https://example.com/#organization" }
},
{
"@type": "WebPage",
"@id": "https://example.com/nesting-schema/#webpage",
"url": "https://example.com/nesting-schema/",
"name": "Nesting Schema Markup",
"isPartOf": { "@id": "https://example.com/#website" }
},
{
"@type": "Person",
"@id": "https://example.com/team/jane-doe/#person",
"name": "Jane Doe",
"url": "https://example.com/team/jane-doe/",
"sameAs": ["https://www.linkedin.com/in/jane-doe/"]
},
{
"@type": "Article",
"@id": "https://example.com/nesting-schema/#article",
"mainEntityOfPage": { "@id": "https://example.com/nesting-schema/#webpage" },
"headline": "Nesting Schema Markup",
"author": { "@id": "https://example.com/team/jane-doe/#person" },
"publisher": { "@id": "https://example.com/#organization" }
}
]
}Note ne’s happening: author ve publisher dır bir-line references.
Person ve Organization dır declared once her. Article hangs off
WebPage (mainEntityOfPage), bu da isPartOf WebSite, bu da
publisher-ed tarafından Organization. şu’s bir connected graph, değil five islands.
Pattern 2 — Product → Offer → organizasyon (seller)
ecommerce eşdeğeri, ve nerede nesting earns onun koru ölçekte: yerine
re-declaring sizin merchant Organization on her bir of thousands of product
sayfalar, declare o once ve reference o olarak seller:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://shop.example.com/#organization",
"name": "Example Shop",
"url": "https://shop.example.com/",
"logo": "https://shop.example.com/logo.png"
},
{
"@type": "Product",
"@id": "https://shop.example.com/widget/#product",
"name": "Deluxe Widget",
"sku": "WIDGET-001",
"brand": { "@type": "Brand", "name": "Example" },
"offers": {
"@type": "Offer",
"price": "29.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"seller": { "@id": "https://shop.example.com/#organization" }
}
}
]
}Offer’s seller benşaret eder at shared Organization node. aynı seller
entity, bir declaration, referenced -den her product. (bençin çok büyük
varyant sets, aynı shared-@id idea extends -e bir ProductGroup ile varyant
Products — şu’s bir specialization of bu pattern, değil bir farklı mechanism.)
three mistakes şu break graph
bu practical heart of bir denetim. ne zaman nesting “doesn’t work,” o’s almost her zaman bir of bunlar three.
1. Inconsistent veya non-unique @id values
aynı entity given farklı @id strings genelinde sayfalar (veya genelinde bir
replatform/migration), bu nedenle arama motorları ve validators see them olarak unrelated
entities yerine bir. veya opposite — reusing bir @id bençin two genuinely
farklı entities. düzelt dır bir strict, documented convention (e.g.
{base-url}/#organization, {page-url}/#webpage, {profile-url}/#person) applied
mechanically. durum counts; #author ≠ #Author.
2. Sahipsiz referanslar
bir @id dır referenced ama never declared. siz yaz
"author": {"@id": "https://example.com/#person-jane"}, ama no node anywhere in
tested belge aslında declares şu @id ile bir @type ve properties. Worth
olma precise burada: bir bare {"@id": "..."} object — ne
JSON-LD spec çbirğrılar bir node reference (“bir node
object kullanılan -e reference bir node having yalnızca @id key”) — dır valid JSON-LD syntax
kendi başına; o değildir bir parse error. sorun dır semantic ve consumer-specific:
intended connection — “this Article’s author is that Person” — never resolves -e
anything yararlı, bu nedenle herhangi bir feature veya reader şu gerekli author’s gerçek name, URL,
veya sameAs data comes up empty. bu sneaky bir: validators çoğu zaman hâlâ parse
her declared item olmadan erroring, bu nedenle nothing screams at siz. siz ship bir
incomplete graph ve never notice. Momentic’s
@id rehber
catalogs bu olarak bir of en çok yaygın gerçek-world nesting failures.
3. yinelenen full declarations of aynı entity
opposite of orphaning: re-declaring complete Organization/Person object
inline on her sayfa yerine referencing o once. Two farklı things -ebilir gerçekleş
burada, ve o’s worth telling them apart:
- Repeated declarations of genuinely aynı entity. Per
JSON-LD spec, ” properties of bir
node in bir graph -ebilir olmak spread among farklı node objects bençinde bir belge. ne zaman
şu olur, keys of farklı node objects ihtiyaç duy -e olmak merged -e oluştur
properties of resulting node.” bu nedenle repeating aynı
@idile aynı (veya compatible) data değildir bir parse başarısızlık — processors merge o. şu yapmaz yap o bir good idea: o’s hâlâ ne nesting vardır -e prevent, ve o bloats markup ve creates bir maintenance trap — update sizin adres veya logo in bir template, forget diğer forty, ve entity now contradicts itself genelinde site. her ikisi Ahrefs’ schema coverage ve Schema App independently yap aynı “change bir ve forget others” benşaret et. - ** aynı
@idreused bençin two aslında farklı entities.** bu gerçek break: two node objects share bir identifier ama describe conflicting things (bir farklı name, bir farklı logo, bir farklı@type). şu’s bir semantic conflict, değil bir harmless merge — seç bir distinct@idher biri bençin genuinely separate entity.
Declare once, reference everywhere — maintenance durum bençin doing bu nedenle holds either
way, hatta gerçben bir aynı-entity repeat won’t technically break graph way bir
orphaned reference veya bir genuinely conflicting @id -ecek.
unresolved soru: yapar @id resolve genelinde sayfalar?
burada’s honest limit şu separates bir gerçek yanıt -den confident-ama-yanlış
sürüm. Google’s dokümantasyon never explicitly states whether @id references
resolve genelinde sayfalar — e.g., bir product sayfa’s Offer.seller pointing at bir
Organization node şu’s declared yalnızca on homepage. No Google arama Central
belge kullanır “cross-page” veya “across pages” in relation -e @id.
bir nearby sinyal benşaret eder toward self-contained sayfalar: Google recommends, bençin
yinelenen bençerik, “placing aynı structured data on tümü sayfa duplicates, değil
sadece on canonical sayfa” — hangi implies structured data dır evaluated per sayfa,
değil fetched -den elsewhere. ve orada’s no on—record statement -den bir named
Google veya Bing rep (Mueller, Illyes, Splitt) specifically resolving cross-sayfa
@id soru şu ben -ebilirdi verify. Bing, bençin onun part, sahiptir
JSON-LD validation in Webmaster araçlar
ama no published @id/@graph-specific rehberlik at tümü — bir genuine dokümantasyon
gap, değil bir position ben’m going -e invent bençin them.
bu nedenle, olarak of July 2026, ele al “Google follows @id links across pages” olarak bir
industry inference, değil bir yapğrulanmış behavior. safe default — hangi Yoast, Momentic, ve Schema App tümü
converge on independently — dır: koru @id values consistent bençin aynı entity
everywhere, ama hâlâ output complete entity graph on her sayfa şu gerektirir o.
yapmayın assume Google -ecek fetch bir referenced entity -den bir farklı URL. Yoast’s
production choice dır tam olarak bu: o emits full graph on her sayfa yerine
relying on cross-sayfa resolution.
nasıl -e validate nested schema
Two araçlar:
- Rich sonuçlar test et — in
practitioner testing olarak of July 2026, o parses
@grapharrays ve resolves@idreferences bençinde tested belge: ne zaman entity bir references B tarafından@idve B dır declared in aynı graph, onlar göster olarak connected; ne zaman referenced@iddır never declared in tested markup, araç hâlâ parses declared items individually olmadan erroring, ama -ebilir’t göster connection. Google yapmaz belge bu UI behavior explicitly anywhere ben -ebilirdi bul, bu nedenle ele al o olarak observed, reproducible araç behavior yerine bir resmî specification — ve re-kontrol et o eğer araç’s UI changes. şu behavior dır tam olarak neden orphaned references slip aracılığıyla — no error, sadece bir missing bağlantı. - Schema Markup Validator — schema.org’s kendi vocabulary validator, daha az opinionated hakkında Google’s supported rich-sonuç types.
Test the rendered page, not just your template source — if JSON-LD is injected via JavaScript, confirm it’s actually present. Google documents reading JSON-LD that’s dynamically injected by JavaScript, but that’s specific to Google — JavaScript-execution behavior varies by crawler and product, and there’s no blanket rule that every AI crawler renders JS the same way (or at all). Shipping JSON-LD in the initial HTML rather than assuming it’ll be executed is the conservative choice — that’s a schema-markup-for-AI concern.
Çürütülmesi gereken mitler
- “
@idneeds to be a real, live, fetchable URL.” No — tarafından convention o’s bir canonical URL plus bir fragment, ama onun function dır identification, değil fetchability. fragment yapmaz ihtiyaç duy -e resolve -e onun kendi sayfa. - “aynı
@idon farklı sayfalar auto-merges şunlar entities in Google’s dizin, like bir canonical etiketi consolidates sayfalar.” değil yapğrulanmış tarafından herhangi bir Google doc. Consistent@iddır good hygiene, değil bir proven cross-sayfa birleştirme mechanism. - “You must use
@graph; separate script blocks are wrong.” False. Google understands her ikisi.@graphdır bir maintainability choice. - “More nesting always improves entity understanding.” yalnızca eğer entities dır
genuinely related. Nesting unrelated items (Schema App’s örnek: bir unrelated
Eventaltında birRecipe) yapmaz yardım et ve -ebilir muddy sinyaller. - “
@id/@graphstructure is a ranking or rich-result factor.” No. onun değer dır disambiguation ve reduced duplication — consistent ile schema değil olma bir sıralama factor at tümü. - “An undeclared
@idis harmless; engines just ignore it.” şu’s orphaned-reference başarısızlık — intended connection silently yapmaz form, ve araçlar çoğu zaman yapmayın error, bu nedenle siz ship o unnoticed.
nerede bu sits
bu nasıl—e layer altında
structured data hub, bir deeper sibling of
schema markup (hangi
introduces @id/@graph) ve JSON-LD
( format). o leans on aynı entity-understanding thinking olarak
entities ve
schema markup bençin AI — bir well-oluşturulmuş
graph dır entity infrastructure, whether consumer dır Google’s Knowledge Graph veya
bir LLM. whole sub-küme lives bençinde on-sayfa SEO.
AI özet
bir condensed take on Advanced sürüm:
- ne o dır. Nesting connects JSON-LD entities yerine leaving disconnected
blocks.
@id= bir stable, unique URI (genellikle canonical URL +#fragment) şu names bir entity bu nedenle others reference o tarafından@idyerine re-declaring o.@graph= bir keyword bundling connected entities -e bir<script>block, cross-referencing via@id. @id≠url, ve@idneedn’t resolve. Per JSON-LD spec,@iddır node identification, değil fetchability;urldescribes bir gerçek sayfa.@iddır durum-sensitive.- Google’s yapğrulanmış position: o understands her ikisi nesting ve individual
items, ve siz kullan
@id-e söyle Google two items dır linked. o yapar değil belge cross-sayfa@idresolution — ele al “Google follows@idacross pages” olarak bir industry inference, değil yapğrulanmış. Nearest sinyal (“yinelenen aynı schema on tümü yinelenen sayfalar”) benşaret eder toward per-sayfa/self-contained evaluation. - Two patterns:
WebSite → WebPage → Article → Author(publishing, ileauthor/publishertarafından@id) veProduct → Offer → Organization/seller(ecommerce, bir seller node referenced -den her product). - Three başarısızlık modes: (1) inconsistent/non-unique
@idvalues; (2) orphaned references — bir@idcited ama never declared (semantically incomplete, değil invalid JSON-LD; silent başarısızlık since validators çoğu zaman yapmayın error); (3) yinelenen full declarations of aynı entity (maintenance trap — aynı-entity repeats merge altında JSON-LD’s node kurallar, ama reusing bir@idbençin genuinely farklı entities dır bir gerçek conflict). - Safe default: consistent
@ideverywhere plus complete entity graph on her sayfa şu gerektirir o — yapmayın rely on cross-sayfa fetching. (Yoast, Momentic, Schema App tümü converge burada.) - Validate ile Rich sonuçlar test et (resolves
@idbençinde tested doc) ve schema.org validator; test et rendered sayfa. - değil bir sıralama veya rich-sonuç lever tarafından itself — o’s entity understanding (disambiguation + de-duplication).
resmî dokümantasyon
birincil-kaynak dokümantasyon ve specs.
- General Structured Data Guidelines — bir sayfa nerede Google belgeler nesting vs. individual items ve
@id-linking principle (son updated July 10, 2026, yapğrulanmış live). ayrıca “duplicate the same structured data on all page duplicates” rehberlik. - Intro -e nasıl Structured Data Markup çalışır — format context ve completeness/accuracy kurallar.
- Rich sonuçlar test et — parses
@graphve resolves@idreferences bençinde tested belge.
schema.org / W3C
- W3C JSON-LD 1,1 Recommendation — spec şu defines
@id,@graph, node objects, ve graph objects. - Schema Markup Validator — schema.org’s vocabulary validator (daha az tied -e Google’s rich-sonuç support liste).
Bing / Microsoft
- Introducing JSON-LD Support in Bing Webmaster araçlar — Bing’s Markup Validator supports JSON-LD; note orada dır no published Bing rehberlik specific -e
@id/@graphnesting mechanics.
Quotes -den kaynak
On—record statements -den Google. her bağlantı dır bir deep bağlantı şu jumps -e quoted passage.
Google — iç içe yerleştirme ve tek tek öğeler
- “Google Search understands multiple items on a page, whether you nest the items or specify each item individually.” — Google arama Central, General Structured Data Guidelines. Jump -e quote
Google — neden @id vardır ( linking principle)
- “…use
@idin both the recipe and the video items to specify that the video is about the recipe on the page. If you didn’t link the items together, Google Search may not know that it can show the video as a Recipe rich result.” — aynı sayfa. Jump -e quote
Google — ele al her sayfa olarak self-contained ( nearest cross-sayfa sinyal)
- “If you have duplicate pages for the same content, we recommend placing the same structured data on all page duplicates, not just on the canonical page.” — aynı sayfa. Jump -e quote
On ne’s değil on record
Google’s docs never explicitly yapğrula whether @id references resolve genelinde
sayfalar, ve ben couldn’t verify herhangi bir on—record statement -den bir named Google veya Bing
rep resolving şu soru. nerede bu article söyler ” safe default dır consistent
@id plus full graph per sayfa,” şu’s practitioner consensus (Yoast, Momentic,
Schema App converging independently), değil bir Google quote — ben’ve labeled o olarak such
in Advanced tab yerine dressing o up olarak resmî.
@id/@graph değildir bir sıralama faktörü follows -den Google’s
broader, repeatedly-stated position şu structured data değildir bir direct sıralama
sinyal — o değildir bir verbatim @id-specific quote. İç içe şema — kısa başvuru
@id, url ve @graph karşılaştırması
| Thing | ne o dır | -meli o resolve -e bir sayfa? |
|---|---|---|
@id | Unique identifier bençin bir entity (node in graph) | No — identification, değil fetchability |
url | entity’s gerçek, fetchable sayfa | Yes — o’s bir gerçek URL |
@graph | Array bundling connected entities in bir <script> block | N/bir — o’s bir container keyword |
@id kuralları
- Absolute URL + descriptive fragment:
https://example.com/#organization. - durum-sensitive —
#Author≠#author. seç bir, never drift. - aynı entity → aynı
@ideverywhere. farklı entities → farklı@id. - Never bir bare arbitrary string (
"id1").
** two patterns**
| Pattern | Chain | Reference tarafından @id |
|---|---|---|
| Publishing | WebSite → WebPage → Article | author → Person, publisher → Organization |
| Ecommerce | Product → Offer | seller → Organization |
Three things -e watch bençin
| Mistake | ne olur |
|---|---|
Inconsistent / non-unique @id | aynı entity seen olarak two (veya two entities collapsed -e bir) |
| Orphaned reference | @id cited ama never declared → connection silently fails (valid JSON-LD, ama semantically incomplete; çoğu zaman no validator error) |
| yinelenen full declarations | Bloat + maintenance trap (aynı-entity repeats merge altında JSON-LD’s kurallar; reusing bir @id bençin farklı entities dır gerçek conflict) |
Kısa bilgiler
- Google confirms her ikisi nesting ve individual items çalışır;
@graphdır optional. - Google yapar değil belge cross-sayfa
@idresolution — assume per-sayfa. - Safe default: consistent
@id+ complete graph on her sayfa şu gerektirir o. - değil bir sıralama veya rich-sonuç lever — o’s entity understanding.
- Validate ile Rich sonuçlar test et (resolves
@idin-belge) ve schema.org validator; test et rendered sayfa.
İç içe yerleştirme anti-patternleri
specific ways nested schema goes yanlış — ve düzelt her biri bençin.
Drifting @id conventions genelinde templates
sizin blog template emits #organization, sizin product template emits #org, ve bir
migrated section emits #company. Three strings, bir gerçek entity — now seen olarak
three. düzelt: bir documented convention, applied mechanically (ideally generated
-den bir tek config, way plugins yap o).
Referencing bir entity siz never declared (orphan)
"author": {"@id": "#person-jane"} ile no #person-jane node anywhere in
belge. bağlantı resolves -e nothing ve connection fails — ve Rich
sonuçlar test et genellikle won’t error, o sadece won’t göster connection. düzelt: her
@id siz reference -meli olmak declared once, in tested markup, ile bir @type.
Re-declaring full entity on her sayfa
kopya-pasting complete Organization (name, logo, her sameAs) inline -e
her article ve product. çalışır, ama o’s bir maintenance trap: change logo once,
forget forty sayfalar, ve sizin entity now contradicts itself. düzelt: declare once,
reference tarafından @id everywhere else.
Nesting unrelated entities -e “add more schema”
Bundling bir Recipe, bir unrelated Event, ve bir JobPosting altında bir graph
çünkü “more markup is better.” Relatedness sahiptir -e olmak gerçek — co-location değildir bir
relationship. düzelt: yalnızca connect entities şu genuinely relate.
Assuming cross-sayfa @id resolution
Declaring Organization yalnızca on homepage ve referencing o tarafından @id -den
product sayfalar, expecting Google -e fetch o. Google’s docs yapmayın yapğrula bu çalışır.
düzelt: koru @id consistent, ama bençer complete entity on her sayfa şu
references o.
@id şu’s gerçekten meant -e olmak url (veya vice versa)
kullanarak @id nerede siz ihtiyaç duy bir fetchable sayfa reference, veya expecting url -e bağlantı
graph nodes. onlar’re farklı jobs. düzelt: @id bençin graph identity, url bençin
gerçek sayfa; bir entity -ebilir sahip her ikisi.
durum ve trailing-slash inconsistency
https://example.com/#Org on bir sayfa, https://example.com/#org on başka bir, veya
.../post/#article vs .../post#article. tümü ele alınır olarak distinct. düzelt: normalize
tam olarak — durum, slashes, protokol, ana makine.
Worked örnekler
kopya-paste başlangıç benşaret eder bençin two patterns ve bir correct reference.
Publishing: web sitesi → WebPage → Article → Author
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Media",
"url": "https://example.com/",
"logo": "https://example.com/logo.png",
"sameAs": ["https://www.linkedin.com/company/example-media/"]
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com/",
"name": "Example Media",
"publisher": { "@id": "https://example.com/#organization" }
},
{
"@type": "WebPage",
"@id": "https://example.com/post/#webpage",
"url": "https://example.com/post/",
"isPartOf": { "@id": "https://example.com/#website" }
},
{
"@type": "Person",
"@id": "https://example.com/team/jane-doe/#person",
"name": "Jane Doe",
"url": "https://example.com/team/jane-doe/"
},
{
"@type": "Article",
"@id": "https://example.com/post/#article",
"mainEntityOfPage": { "@id": "https://example.com/post/#webpage" },
"headline": "Example headline",
"author": { "@id": "https://example.com/team/jane-doe/#person" },
"publisher": { "@id": "https://example.com/#organization" }
}
]
}Ecommerce: Product → Offer → organizasyon (seller)
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://shop.example.com/#organization",
"name": "Example Shop",
"url": "https://shop.example.com/"
},
{
"@type": "Product",
"@id": "https://shop.example.com/widget/#product",
"name": "Deluxe Widget",
"offers": {
"@type": "Offer",
"price": "29.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"seller": { "@id": "https://shop.example.com/#organization" }
}
}
]
}Doğru referans ve sahipsiz referans karşılaştırması
Correct — referenced node dır declared in aynı graph:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Person", "@id": "https://example.com/#jane", "name": "Jane Doe" },
{ "@type": "Article", "author": { "@id": "https://example.com/#jane" } }
]
}Broken (orphan) — #jane dır referenced ama never declared, bu nedenle author resolves -e
nothing:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Article", "author": { "@id": "https://example.com/#jane" } }
]
} Nested schema denetim — checklist
bir geç -e yapğrula sizin graph dır connected, consistent, ve self-contained:
- bir
@idconvention, documented ve applied everywhere (e.g.{base}/#organization,{page}/#webpage,{profile}/#person). - aynı entity → aynı
@idgenelinde her sayfa ve template (no#orgvs.#organizationdrift; durum ve trailing slashes normalized). - No orphaned references — her
@idsiz reference dır aslında declared, in tested belge, ile bir@typeve properties. - No yinelenen full declarations — shared entities (
Organization,Person) dır declared once ve referenced tarafından@id, değil re-pasted inline. -
@idvs.urlkullanılan yapğru biçimde —@ididentifies node;urlbenşaret eder at gerçek sayfa; bir entity -ebilir sahip her ikisi. - yalnızca genuinely related entities dır connected — no unrelated items bundled sadece -e ekle markup.
- Complete graph on her sayfa şu gerektirir o — yapmayın rely on cross-sayfa
@idresolution; bençer referenced entities per sayfa. - Validated in Rich sonuçlar test et (connections göster olarak linked) ve schema.org validator.
- Tested on rendered sayfa, değil sadece template kaynak (yapğrula JS-injected JSON-LD dır aslında present; server-render bençin AI crawlers).
- Consistent markup genelinde canonical + yinelenen sayfalar — aynı structured data on tümü sürümler.
test et yourself: Nesting Schema Markup
Five quick questions on @id, @graph, ve mistakes şu break bir nested graph.
seç bir yanıt her biri bençin, o hâlde kontrol et.
kaynaklar worth sizin time
benim related yazma
- Structured Data: ne o dır ve nasıl -e kullan o — benim Ahrefs rehber -e schema types, implementation methods, validation araçlar, ve
sameAsentity-disambiguation risk ( entity-understanding job@id/@graphserves). - Beginner’s rehber -e teknik SEO — nerede structured data sits in bigger teknik picture.
benim speaking
- nasıl arama çalışır (SlideShare) — benim walkthrough of tarama, rendering, dizine ekleme, ve sıralama, bençin context structured data feeds -e. (benim standing disclaimer uygulanır: “This is my understanding of systems… not going to be 100% complete or accurate.”)
resmî
- Google’s General Structured Data Guidelines — nesting vs. individual items ve
@id-linking principle. - W3C JSON-LD 1,1 Recommendation — spec defining
@id,@graph, ve node/graph objects. - Rich sonuçlar test et ve schema.org validator — two araçlar bençin checking bir nested graph.
-den yaklaşık industry
- biz Tracked 1 885 sayfalar Adding Schema. AI Citations Barely Moved. (Louise Linehan & Xibeijia Guan, Ahrefs) — bir Ahrefs study on schema ve AI citations, yararlı bençin calibrating expectations şu temiz markup, dahil nesting, dır entity infrastructure yerine bir citation cheat code.
- Node Identifiers: -den Structured Data -e Linked Data (Patrick Hathaway, Sitebulb) — clearest “what a node identifier actually is” explainer, ile bir worked distinct-
@idörnek ve durum-sensitivity warning. - ne dır bir @id in Structured Data? (Mark van Berkel, Schema App) — cites JSON-LD spec definition ve yararlı “entity home” framing ( sayfa nerede bir entity’s full definition lives).
- ne dır Nesting in Schema Markup? (Jasmine Drudge-Willson, Schema App) — nesting-bençin-hierarchy vs. -convenience, ve neden nesting unrelated entities dır bir mistake.
- Schema: Technology ve approach (Yoast developer docs) — bir gerçek production
@grapharchitecture, onun@idtemplate, ve candid “we output the full graph on every page rather than rely on cross-page resolution” choice. - kullanarak @id in Schema.org Markup bençin SEO, LLMs & Knowledge Graphs (Tyler Einberger, Momentic) — bir temiz catalog of yaygın
@idmistakes (orphaned references, unstable IDs, inconsistent values).
Değişiklik günlüğü
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
21 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
18 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.