تداخل ترميز Schema (@id و@graph)
دليل متعمق لربط كيانات JSON-LD بواسطة @id و@graph: المعرّفات الثابتة، ونمطا العقد القياسيان WebSite→Article→Author وProduct→Offer→Organization، والأخطاء الثلاثة التي تكسر الرسم البياني، والحدود الصريحة لما تؤكده وثائق Google.
اللغات
يربط التداخل كيانات JSON-LD بدلاً من تركها كتلًا منفصلة. @id معرّف URI ثابت وفريد — عادةً عنوان URL أساسي مع #fragment — يسمّي الكيان كي تشير إليه كيانات أخرى، مثل إشارة مؤلف Article إلى عقدة Person أو إشارة Offer في Product إلى Organization البائعة، بدلاً من إعادة تعريف الكيان كاملاً في كل موضع. وتجمع @graph تلك الكيانات في كتلة script واحدة. تؤكد وثائق Google عمل التداخل والعناصر المنفردة وأن @id يربط العناصر، لكنها لا تؤكد حل @id عبر الصفحات؛ لذا فالخيار الآمن هو قيم @id متسقة مع الرسم الكامل في كل صفحة تحتاج إليه. النمطان الرئيسيان هما WebSite → WebPage → Article → Author للنشر، وProduct → Offer → Organization للتجارة الإلكترونية. أما الإخفاقات فهي قيم @id غير المتسقة أو غير الفريدة، والمراجع اليتيمة، والتعريفات الكاملة المكررة. إنها أداة لفهم الكيانات، لا رافعة ترتيب أو نتائج غنية بذاتها.
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 guidelinesالخلاصة — التداخل هو طريقة ربط ترميز schema بدلاً من تركه ككومة من الكتل المنفصلة.
@idاسم فريد (عادةً عنوان URL للصفحة مع#tag) تمنحه لكيان — مؤسستك أو مؤلف — كي تشير إليه الكيانات الأخرى بدلاً من تكرار كل تفاصيله. ويتيح@graphوضع عدة كيانات مترابطة في كتلة شيفرة واحدة. والنتيجة: عرّف مؤسستك مرة واحدة، وأشر إليها في كل موضع، ولا تنسخ الكتلة نفسها إلى كل صفحة.
المشكلة التي يحلها التداخل
لنفترض أن موقعك يضم Organization لها اسم وشعار وروابط إلى حساباتها
الاجتماعية، وأن كل تدوينة تحتوي على Article لها مؤلف وناشر. من دون
التداخل ستكتب تفاصيل المؤسسة كاملة — الاسم والشعار وكل رابط اجتماعي — داخل
ترميز كل تدوينة على حدة. غيّر الشعار، وستضطر إلى تحديثه في أربعين موضعاً.
يعالج التداخل ذلك. تعرّف المؤسسة مرة واحدة، وتمنحها اسماً ثابتاً، ثم تشير إلى ذلك الاسم في كل موضع آخر. يفترض هذا أنك تعرف أساسيات ترميز schema وJSON-LD؛ وإن لم تكن تعرفها، فابدأ أولاً من محور البيانات المنظمة ثم عد إلى هنا.
@id — اسم تمنحه للكيان
@id مجرد معرّف فريد لكيان واحد. والعرف هو استخدام عنوان URL الحقيقي
للصفحة مع جزء fragment، كما يلي:
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Co",
"logo": "https://example.com/logo.png"
}أصبحت "@id": "https://example.com/#organization" الآن اسم الكيان.
وفي أي موضع تريد فيه القول إن «الناشر هو Example Co»، لا تعيد كتابة كل
التفاصيل؛ بل تشير إلى الاسم فقط:
{
"@type": "Article",
"publisher": { "@id": "https://example.com/#organization" }
}نقطة صغيرة لكنها مهمة: @id آلية ربط داخلية، وليست صفحة تنشرها.
ولا يلزم أن تكون عنوان URL حقيقياً قابلاً للجلب؛ فاستخدام fragment على نطاقك
ممارسة معتادة، ولا يلزم أن يُحمّل ذلك الجزء نفسه كصفحة. (وهذا يختلف عن خاصية
url التي تصف بالفعل صفحة حقيقية.)
@graph — جمع الكيانات المترابطة
يتيح @graph سرد عدة كيانات في كتلة شيفرة واحدة بدلاً من توزيعها
على كتل كثيرة. فبدلاً من ثلاث كتل <script> منفصلة، تكتب كتلة واحدة:
{
"@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" } }
]
}تكتب @context مرة واحدة في الأعلى، وتشير الكيانات داخلها بعضها إلى بعض
بواسطة @id. ويصبح ذلك أنظف وأسهل صيانةً عندما تتعدد الأجزاء المترابطة.
ما يجب ضبطه
قاعدتان تغطيان معظم الحالات:
- التزم بالاتساق. استخدم سلسلة
@idنفسها للكيان نفسه في كل موضع. إذا كانت مؤسستك#organizationفي صفحة و#orgفي أخرى، فلن تستطيع محركات البحث معرفة أنهما الكيان نفسه. - لا تشر إلى لا شيء. إذا كان مؤلف
Articleيشير إلى{"@id": "#author-jane"}، فتأكد من أن#author-janeمعرّف فعلاً في موضع ما مع@typeوتفاصيله. الإشارة إلى كيان لم تعرّفه تفشل بصمت.
وحافظ على توقعات واقعية: يساعد التداخل الصحيح محركات البحث على فهم كياناتك ويمنع تكرار البيانات، لكنه لا يرفع ترتيبك أو يفتح نتيجة غنية بمفرده.
هل تريد الدليل الكامل — النمطين القياسيين مع أمثلة قابلة للنسخ، والأخطاء الثلاثة التي تكسر الرسم البياني، وما تؤكده وثائق Google فعلاً وما تسكت عنه؟ انتقل إلى تبويب متقدم.
تدقيق رسم JSON-LD بياني من دون اختراع كيانات
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]لمقارنة قالبين، قدّم رسمين بيانيين معروضين واطلب من النموذج سرد المعرّفات
التي تتغير بينهما على نحو غير متوقع. ينبغي للكيانات الثابتة مثل الناشر الاحتفاظ
بقيمة @id نفسها، مع مراعاة حالة الأحرف؛ أما كيانات الصفحة فيجب أن تبقى
فريدة لصفحتها الأساسية.
العثور على المعرّفات اليتيمة والمكررة في JSON-LD المعروضة
شغّل هذا في DevTools Console. فهو يحلل كل كتلة JSON-LD، ويمر عبر
المصفوفات و@graph، ويفصل التعريفات الكاملة عن كائنات @id المرجعية فقط.
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 })));يفيد خلو جدول المراجع اليتيمة، لكنه لا يثبت صحة الرسم البياني دلالياً. راجع المعرّفات الحساسة لحالة الأحرف، وأنواع الكيانات، وعناوين URL الأساسية، وتحقق من وجود الرسم الكامل الذي تحتاجه الصفحة.
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 guidelinesالخلاصة — يربط التداخل كيانات JSON-LD عبر
@id(معرّف URI ثابت وفريد، يكون عادةً عنوان URL أساسياً مع#fragment)، فتشير إلى الكيان بدلاً من إعادة تعريفه، ويجمع@graphالكيانات المترابطة في كتلة script واحدة. تؤكد وثائق Google عمل التداخل والعناصر المنفردة، وأن@idيربط العناصر ذات الصلة، لكنها لا تؤكد حل@idعبر الصفحات. لذلك فالخيار الآمن هو قيم@idمتسقة مع الرسم البياني الكامل في كل صفحة تحتاج إليه. تعلّم نمطين:WebSite → WebPage → Article → Authorللنشر، وProduct → Offer → Organization/sellerللتجارة الإلكترونية. وراقب ثلاثة إخفاقات: قيم@idغير المتسقة أو غير الفريدة، والمراجع اليتيمة (الإشارة إلى@idغير معرّف — نقص دلالي لا صياغة JSON-LD غير صالحة)، والتعريفات الكاملة المكررة للكيان نفسه (فخ صيانة؛ تدمج قواعد العقد في JSON-LD تكرارات الكيان نفسه، لكن إعادة استخدام@idواحد لكيانات مختلفة فعلاً تعارض حقيقي). إنها أداة لفهم الكيانات وإزالة الالتباس والتكرار، لا رافعة ترتيب أو نتائج غنية بذاتها.
النطاق: هذا تعمق لا مقدمة
تفترض هذه المقالة أنك تعرف JSON-LD ولماذا هي التنسيق الموصى به؛ وتغطي صفحة
ترميز schema ذلك وتقدم
@id و@graph سريعاً. أما هنا فالتعمق المؤجل: الآليات الفعلية وأنماط العقد
القياسية والأخطاء المحددة التي تكسر الرسم بصمت. وإذا أردت أساسيات التنسيق أو
موضع كتلة <script>، فراجع JSON-LD.
@id — معرّف ثابت، لا عنوان URL قابل للجلب
يسند @id معرّف URI فريداً إلى كيان JSON-LD كي تشير إليه كيانات أخرى.
والعرف المتسق بين المصادر الموثوقة التي راجعتها هو عنوان URL أساسي مطلق مع
fragment وصفي:
"@id": "https://example.com/#organization"
"@id": "https://example.com/#website"
"@id": "https://example.com/team/jane-doe/#person"هناك أمران يخطئ الناس فيهما:
- لا يلزم أن يُحل. وفق مواصفة JSON-LD،
تتمثل وظيفة
@idفي تعريف العقدة — اسم فريد وثابت للكيان — لا في قابلية الجلب. واستخدام fragment على نطاقك ممارسة معتادة لا تتطلب تحميل عنوانه مستقلاً كصفحة. ويلخص دليل معرّفات العقد لدى Sitebulb الأمر جيداً: “a unique ‘name’ for an entity, which is publicly accessible and can be looked up or linked to.” (ترجمة) «اسم فريد لكيان، متاح علناً ويمكن البحث عنه أو الربط إليه». @idليستurl. فهما خاصيتان بوظيفتين مختلفتين. تعرّف@idالعقدة داخل الرسم البياني، بينما تصفurlصفحة حقيقية قابلة للجلب عن الكيان. ويمكن لـOrganization، وغالباً ينبغي لها، امتلاكهما معاً:@idبقيمةhttps://example.com/#organizationوurlبقيمةhttps://example.com/.
وقيم @id حساسة لحالة الأحرف؛ فـ#Organization و#organization
كيانان مختلفان. اختر عرفاً ولا تنحرف عنه.
@graph — جمع الكيانات المترابطة في كتلة واحدة
@graph كلمة مفتاحية في JSON-LD تتيح وضع عدة كيانات عليا في مصفوفة
واحدة داخل كتلة <script type="application/ld+json"> واحدة، مع إحالات متبادلة
بين الكيانات بواسطة @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 حاوية وليست متطلباً. يمكنك استخدام كتل <script> منفصلة
للعناصر المنفردة؛ وتؤكد وثائق Google عمل النهجين. سبب استخدام @graph هو سهولة
الصيانة: عند وجود ثلاثة كيانات أو أكثر تحيل بعضها إلى بعض، تكتب @context مرة
واحدة في الأعلى بدلاً من تكراره في كل كتلة، وتجتمع كل العلاقات في موضع واحد.
وهذا هو النمط الذي تستخدمه Yoast في الإنتاج؛ إذ تشرح
وثائق بنية schema
أن الرسم المشترك يتيح لهم “avoid having to duplicate or repeat shared properties, and to reduce the amount of code/processing/overhead required.” (ترجمة) «تجنب تكرار الخصائص المشتركة وتقليل الشيفرة والمعالجة والأعباء المطلوبة».
لماذا نستخدم التداخل، وماذا تقول Google فعلاً؟
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 خيارين بنيويين وتؤكد أنها تفهم كليهما. تقول في الإرشادات العامة للبيانات المنظمة: “Google Search understands multiple items on a page, whether you nest the items or specify each item individually.” (ترجمة) «يفهم بحث Google عناصر متعددة في الصفحة، سواء أدخلت العناصر بعضها تحت بعض أو حددت كل عنصر على حدة». وتعرّفهما بوضوح: التداخل هو “when there is one main item, and additional items are grouped under the main item” (ترجمة) «أن يوجد عنصر رئيسي واحد وتُجمع العناصر الإضافية تحته»، والعناصر المنفردة هي “when each item is a separate block on the same page” (ترجمة) «أن يكون كل عنصر كتلة مستقلة في الصفحة نفسها».
أقرب فقرة إلى تعليل رسمي لاستخدام @id تقول: ““If there are items that are more helpful when they are linked together (for example, a recipe and a video), use @id in 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.”” (ترجمة) «إذا كانت هناك عناصر تصبح أكثر فائدة عند ربطها، مثل وصفة وفيديو، فاستخدم @id في كليهما لتحديد أن الفيديو عن وصفة الصفحة؛ وإن لم تربط العناصر فقد لا يعرف بحث Google أنه يستطيع عرض الفيديو كنتيجة غنية لوصفة». هذه هي الآلية بكلمات Google: تخبر @id Google أن عنصرين ينتميان معاً.
ملاحظة صريحة: تذكر وثائق Google هذا المبدأ نثراً، لكنها لا تقدم مثال شيفرة
عملياً يجمع @graph و@id؛ إذ تعرض أمثلتها Recipe متداخلة وعنصرين علويين
منفردين، ولا يحيل أي منهما فعلياً بواسطة @id. وتسد الأمثلة أدناه هذه الفجوة.
يتصل ذلك مباشرةً بوظيفتي schema كما تعرضهما صفحة
ترميز schema: فالتداخل
الجيد حركة تخص فهم الكيانات — إزالة الالتباس وتجنب البيانات المتناقضة أو
المكررة — وليس مشغلاً لنتيجة غنية بمفرده. وربط Article بمؤلفه Author بوضوح
لا يفتح ميزة SERP جديدة؛ بل يزيل الغموض عن العلاقة.
النمط 1 — WebSite → WebPage → Article → Author
هذا نمط النشر القياسي: Organization واحدة (الناشر) وWebSite واحد،
ثم WebPage لكل صفحة وArticle عليها، مع حل author وpublisher بواسطة
@id بدلاً من إعادة تعريفهما:
{
"@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" }
}
]
}لاحظ ما يحدث: author وpublisher مرجعان من سطر واحد. ويُعرّف كل من
Person وOrganization مرة واحدة. وتتبع Article صفحة WebPage عبر
mainEntityOfPage، وهي isPartOf موقع WebSite الذي تنشره Organization.
هذا رسم مترابط، لا خمس جزر منفصلة.
النمط 2 — Product → Offer → Organization (البائع)
هذا هو النظير في التجارة الإلكترونية، وهنا تظهر قيمة التداخل على نطاق واسع:
بدلاً من إعادة تعريف Organization التجارية في كل صفحة من آلاف صفحات المنتجات،
عرّفها مرة واحدة وأشر إليها بصفتها 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" }
}
}
]
}يشير seller في Offer إلى عقدة Organization المشتركة. إنه البائع
نفسه بتعريف واحد يُشار إليه من كل منتج. (وفي مجموعات المتغيرات الكبيرة يمتد
مبدأ @id المشترك نفسه إلى ProductGroup مع منتجات Product متغيرة؛ وهذا
تخصص للنمط نفسه لا آلية مختلفة.)
الأخطاء الثلاثة التي تكسر الرسم البياني
هذا هو لب التدقيق العملي. فعندما «لا يعمل» التداخل، يكون السبب في الغالب واحداً من هذه الثلاثة.
1. قيم @id غير المتسقة أو غير الفريدة
قد يُمنح الكيان نفسه سلاسل @id مختلفة عبر الصفحات أو أثناء إعادة بناء
المنصة أو ترحيلها، فترى محركات البحث والمدققات كيانات غير مترابطة بدلاً من كيان
واحد. أو يحدث العكس: يُعاد استخدام @id واحد لكيانين مختلفين فعلاً. والحل عرف
صارم وموثق، مثل {base-url}/#organization و{page-url}/#webpage و
{profile-url}/#person، يطبق آلياً. حالة الأحرف مهمة: #author ≠ #Author.
2. المراجع اليتيمة
يُشار إلى @id من دون أن يُعرّف. فقد تكتب
"author": {"@id": "https://example.com/#person-jane"}، لكن لا توجد عقدة في
المستند المختبر تعرّف ذلك @id مع @type وخصائصه. وللدقة، فإن كائن
{"@id": "..."} المجرد — الذي تسميه مواصفة JSON-LD
مرجع عقدة: “a node object used to reference a node having only the @id key”
(ترجمة) «كائن عقدة يُستخدم للإشارة إلى عقدة ولا يحتوي إلا مفتاح @id» —
صياغة JSON-LD صالحة بذاتها، وليست خطأ تحليل. المشكلة دلالية وخاصة بالمستهلك:
فالعلاقة المقصودة — «مؤلف هذه Article هو ذلك Person» — لا تُحل إلى شيء مفيد،
فتفقد أي ميزة أو قارئ يحتاج اسم المؤلف أو عنوانه أو بيانات sameAs. وهذه الحالة
خادعة لأن المدققات غالباً تظل تحلل كل عنصر معلن بلا خطأ؛ فتنشر رسماً ناقصاً
ولا تلاحظ. ويسجل دليل @id
لدى Momentic ذلك ضمن أكثر إخفاقات التداخل شيوعاً.
3. التعريفات الكاملة المكررة للكيان نفسه
هذا عكس اليتم: إعادة تعريف كائن Organization أو Person كاملاً داخل
كل صفحة بدلاً من تعريفه مرة واحدة والإشارة إليه. وقد يحدث أمران مختلفان، ومن
المهم التمييز بينهما:
- تعريفات متكررة للكيان نفسه فعلاً. تقول
مواصفة JSON-LD: “the properties of a
node in a graph may be spread among different node objects within a document. When
that happens, the keys of the different node objects need to be merged to create the
properties of the resulting node.” (ترجمة) «قد تتوزع خصائص عقدة في الرسم بين كائنات عقد متعددة داخل مستند؛ وعندها يجب دمج مفاتيح تلك الكائنات لتكوين خصائص العقدة الناتجة». لذلك لا يفشل التحليل عند تكرار
@idنفسه ببيانات متطابقة أو متوافقة؛ بل تدمجه المعالجات. ولا يجعل ذلك التكرار فكرة جيدة: فهو ما وُجد التداخل لمنعه، ويضخم الترميز ويصنع فخ صيانة؛ حدّث عنوانك أو شعارك في قالب وانس أربعين قالباً أخرى، فيتناقض الكيان عبر الموقع. وتعرض تغطية Ahrefs وSchema App المستقلة نقطة «غيّر واحداً وانس البقية» نفسها. - إعادة استخدام
@idنفسه لكيانين مختلفين فعلاً. هذا هو الكسر الحقيقي: يشترك كائنان عقديان في معرّف لكنهما يصفان أشياء متعارضة، كاسم أو شعار أو@typeمختلف. هذا تعارض دلالي لا دمج سليم؛ استخدم@idمستقلاً لكل كيان منفصل.
عرّف مرة واحدة وأشر من كل موضع؛ وتظل حجة الصيانة صحيحة في الحالتين، حتى
لو لم يكسر تكرار الكيان نفسه الرسم تقنياً كما يفعل مرجع يتيم أو @id متعارض.
السؤال غير المحسوم: هل يُحل @id عبر الصفحات؟
هنا الحد الصريح الذي يفصل الإجابة الحقيقية عن الإجابة الواثقة الخاطئة. لا
تذكر وثائق Google صراحةً أبداً ما إذا كانت مراجع @id تُحل عبر الصفحات؛
مثلاً أن يشير Offer.seller في صفحة منتج إلى عقدة Organization لا تُعرّف إلا
في الصفحة الرئيسية. ولا تستخدم وثائق Search Central عبارة cross-page أو across
pages في سياق @id.
تشير الإشارة القريبة الوحيدة إلى صفحات مكتفية ذاتياً: توصي Google بشأن
المحتوى المكرر بـ*“placing the same structured data on all page duplicates, not
just on the canonical page”* (ترجمة) «وضع البيانات المنظمة نفسها على كل نسخ الصفحة، لا الصفحة الأساسية وحدها»؛ ما يوحي بأن البيانات المنظمة تُقيّم لكل صفحة ولا تُجلب من موضع آخر. ولم أستطع التحقق من تصريح علني لممثل مسمى من Google أو Bing، مثل Mueller أو Illyes أو Splitt، يحسم سؤال @id عبر الصفحات. ولدى Bing
تحقق JSON-LD في Webmaster Tools،
لكنها لا تنشر أي إرشاد خاص بـ@id أو @graph؛ وهذه فجوة توثيق حقيقية لا موقف سأختلقه لها.
لذلك، حتى يوليو 2026، تعامل مع عبارة «تتبع Google روابط @id عبر الصفحات»
بصفتها استنتاجاً قطاعياً لا سلوكاً مؤكداً. والخيار الآمن الذي تتوافق عليه
Yoast وMomentic وSchema App بصورة مستقلة هو: حافظ على اتساق قيم @id للكيان
نفسه في كل موضع، لكن أخرج الرسم الكامل في كل صفحة تحتاج إليه. لا تفترض أن
Google ستجلب كياناً مرجعياً من عنوان URL آخر. وهذا بالضبط خيار Yoast في الإنتاج؛
إذ تُخرج الرسم الكامل في كل صفحة ولا تعتمد على الحل عبر الصفحات.
كيفية التحقق من schema المتداخلة
أداتان:
- Rich Results Test — وفق اختبار
الممارسين في يوليو 2026، تحلل الأداة مصفوفات
@graphوتحل مراجع@idداخل المستند المختبر: عندما يشير الكيان A إلى B بواسطة@idويُعرّف B في الرسم نفسه، يظهران مترابطين؛ وعندما لا يُعرّف@idالمرجعي في الترميز، تظل الأداة تحلل العناصر المعلنة منفردة بلا خطأ، لكنها لا تعرض العلاقة. ولا توثق Google سلوك الواجهة هذا صراحةً، لذلك عامله كسلوك أداة ملحوظ قابل للتكرار، لا كمواصفة رسمية، وأعد اختباره إذا تغيرت الواجهة. ولهذا تمر المراجع اليتيمة: لا خطأ، بل رابط مفقود. - Schema Markup Validator — مدقق مفردات schema.org، وهو أقل ارتباطاً بقائمة Google لأنواع النتائج الغنية المدعومة.
اختبر الصفحة المعروضة لا مصدر القالب فقط؛ فإذا حُقنت JSON-LD بواسطة JavaScript، فتحقق من وجودها فعلاً. توثق Google قراءة JSON-LD المحقون ديناميكيًا بواسطة JavaScript، لكن ذلك خاص بـGoogle؛ إذ يختلف تنفيذ JavaScript باختلاف الزاحف والمنتج، ولا توجد قاعدة عامة بأن كل زاحف ذكاء اصطناعي يعرض JS بالطريقة نفسها أو يعرضه أصلاً. الخيار المتحفظ هو شحن JSON-LD في HTML الأولي بدلاً من افتراض تنفيذها؛ وهذه مسألة schema-markup-for-AI.
خرافات تستحق الإنهاء
- «يجب أن يكون
@idعنوان URL حقيقياً حياً قابلاً للجلب». لا؛ فالعرف هو عنوان URL أساسي مع fragment، لكن وظيفته التعريف لا الجلب، ولا يلزم أن يُحل الجزء إلى صفحة مستقلة. - «يؤدي
@idنفسه في صفحات مختلفة إلى دمج الكيانات تلقائياً في فهرس Google، كما يوحد canonical الصفحات». لا تؤكد ذلك أي وثيقة من Google. اتساق@idممارسة سليمة، وليس آلية دمج مثبتة عبر الصفحات. - «يجب استخدام
@graph؛ وكتل script المنفصلة خاطئة». خطأ. تفهم Google الطريقتين، و@graphخيار صيانة. - «يزيد التداخل دائماً فهم الكيانات». فقط إذا كانت الكيانات مرتبطة فعلاً.
فتداخل عناصر غير مرتبطة، مثل
Eventلا علاقة له تحتRecipeفي مثال Schema App، لا يفيد وقد يشوش الإشارات. - «بنية
@idو@graphعامل ترتيب أو نتائج غنية». لا. قيمتها إزالة الالتباس وتقليل التكرار، بما يتسق مع أن schema ليست عامل ترتيب أصلاً. - «
@idغير المعلن غير ضار؛ تتجاهله المحركات فحسب». هذا إخفاق المرجع اليتيم: لا تتكون العلاقة المقصودة بصمت، وغالباً لا تعرض الأدوات خطأ، فتنشره بلا ملاحظة.
موضع هذا الدليل
هذه هي طبقة الكيفية تحت
محور البيانات المنظمة، وشقيق أعمق لـ
ترميز schema الذي يقدم
@id و@graph، ولـJSON-LD
بصفتها التنسيق. وتعتمد على تفكير فهم الكيانات نفسه في
الكيانات و
ترميز schema للذكاء الاصطناعي:
فالرسم الجيد بنية تحتية للكيانات، سواء كان المستهلك Knowledge Graph لدى Google
أو نموذجاً لغوياً كبيراً. وتقع المجموعة الفرعية كلها داخل
SEO داخل الصفحة.
ملخص الذكاء الاصطناعي
خلاصة مكثفة للنسخة المتقدمة:
- ما هو. يربط التداخل كيانات JSON-LD بدلاً من ترك كتل منفصلة.
@idمعرّف URI ثابت وفريد، عادةً عنوان URL أساسي مع#fragment، يسمّي كياناً كي تشير إليه الكيانات الأخرى بدلاً من إعادة تعريفه. و**@graph** كلمة مفتاحية تجمع الكيانات المترابطة في كتلة<script>واحدة مع إحالات@id. @id≠url، ولا يلزم أن يُحل@id. وفق مواصفة JSON-LD، وظيفته تعريف العقدة لا قابلية الجلب، بينما تصفurlصفحة حقيقية. و@idحساس لحالة الأحرف.- موقف Google المؤكد: تفهم التداخل والعناصر المنفردة، وتستخدم
@idلإخبارها بأن عنصرين مترابطان. لكنها لا توثق حل@idعبر الصفحات؛ فاعتبره استنتاجاً قطاعياً لا حقيقة مؤكدة. وتشير أقرب إشارة إلى تقييم مكتفٍ لكل صفحة. - نمطا العمل:
WebSite → WebPage → Article → Authorللنشر، معauthorوpublisherبواسطة@id، وProduct → Offer → Organization/sellerللتجارة الإلكترونية، مع عقدة بائع واحدة تشير إليها المنتجات. - ثلاثة إخفاقات: قيم
@idغير المتسقة أو غير الفريدة؛ والمراجع اليتيمة، أي@idمشار إليه وغير معرّف، وهو نقص دلالي لا JSON-LD غير صالحة؛ والتعريفات الكاملة المكررة، وهي فخ صيانة تدمج فيه قواعد JSON-LD تكرارات الكيان نفسه، بينما يُعد استخدام@idواحد لكيانات مختلفة تعارضاً حقيقياً. - الخيار الآمن:
@idمتسق في كل موضع مع الرسم الكامل في كل صفحة تحتاجه؛ لا تعتمد على الجلب عبر الصفحات. وتتوافق Yoast وMomentic وSchema App على ذلك. - تحقق بواسطة Rich Results Test، التي تحل
@idداخل المستند المختبر، ومدقق schema.org؛ واختبر الصفحة المعروضة. - ليست رافعة ترتيب أو نتائج غنية بذاتها؛ بل أداة لفهم الكيانات وإزالة الالتباس والتكرار.
الوثائق الرسمية
الوثائق والمواصفات الأولية.
- الإرشادات العامة للبيانات المنظمة — الصفحة التي توثق فيها Google التداخل مقابل العناصر المنفردة ومبدأ الربط بواسطة
@id(آخر تحديث في 10 يوليو 2026، وتأكد وجوده مباشرةً). وتشمل أيضاً إرشاد وضع البيانات المنظمة نفسها على كل نسخ الصفحة. - مقدمة إلى كيفية عمل ترميز البيانات المنظمة — سياق التنسيق وقواعد الاكتمال والدقة.
- Rich Results Test — تحلل
@graphوتحل مراجع@idداخل المستند المختبر.
schema.org / W3C
- توصية W3C لـJSON-LD 1.1 — المواصفة التي تعرّف
@idو@graphوكائنات العقد والرسم البياني. - Schema Markup Validator — مدقق مفردات schema.org، وهو أقل ارتباطاً بقائمة Google لدعم النتائج الغنية.
Bing / Microsoft
- تقديم دعم JSON-LD في Bing Webmaster Tools — يدعم Markup Validator لدى Bing تنسيق JSON-LD؛ مع ملاحظة أنه لا يوجد إرشاد منشور من Bing خاص بآليات تداخل
@idو@graph.
اقتباسات من المصدر
تصريحات مسجلة من Google. يقفز كل رابط عميق إلى النص المقتبس.
Google — التداخل مقابل العناصر المنفردة
- “Google Search understands multiple items on a page, whether you nest the items or specify each item individually.” (ترجمة) «يفهم بحث Google وجود عناصر متعددة في الصفحة، سواء كانت متداخلة أم حُدد كل عنصر منها على حدة». — Google Search Central، الإرشادات العامة للبيانات المنظمة. انتقل إلى الاقتباس
Google — سبب وجود @id (مبدأ الربط)
- ““…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.”” (ترجمة) «استخدم@idفي عنصرَي الوصفة والفيديو لتبيّن أن الفيديو يتناول وصفة الصفحة؛ وإذا لم تربط العنصرين، فقد لا يدرك بحث Google إمكان عرض الفيديو كنتيجة غنية لوصفة». — الصفحة نفسها. انتقل إلى الاقتباس
Google — عامل كل صفحة كوحدة مكتفية (أقرب إشارة عبر الصفحات)
- “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.” (ترجمة) «إذا كانت لديك صفحات مكررة للمحتوى نفسه، فنوصي بإضافة البيانات المنظمة ذاتها إلى جميع النسخ، لا إلى الصفحة الأساسية وحدها». — الصفحة نفسها. انتقل إلى الاقتباس
ما ليس مسجلاً رسمياً
لا تؤكد وثائق Google صراحةً ما إذا كانت مراجع @id تُحل عبر الصفحات، ولم
أستطع التحقق من تصريح مسجل لممثل مسمى من Google أو Bing يحسم السؤال. وعندما
تقول المقالة “the safe default is consistent @id plus the full graph per page,” (ترجمة) «الخيار الآمن هو استخدام @id متسق مع الرسم الكامل في كل صفحة»، فهذا
إجماع ممارسين من تقارب Yoast وMomentic وSchema App مستقلةً، وليس اقتباساً من
Google؛ وقد وسمته كذلك في تبويب متقدم بدلاً من عرضه كإرشاد رسمي.
@id و@graph ليسا عامل ترتيب إلى موقف Google الأوسع والمتكرر
بأن البيانات المنظمة ليست إشارة ترتيب مباشرة، لا إلى اقتباس حرفي خاص بـ@id. schema المتداخلة — ورقة غش
@id مقابل url مقابل @graph
| العنصر | ما هو | هل يجب أن يُحل إلى صفحة؟ |
|---|---|---|
@id | معرّف فريد لكيان (عقدة في الرسم) | لا — للتعريف لا للجلب |
url | الصفحة الحقيقية القابلة للجلب للكيان | نعم — إنه عنوان URL فعلي |
@graph | مصفوفة تجمع كيانات مترابطة في كتلة <script> واحدة | لا ينطبق — إنها كلمة حاوية |
أعراف @id
- عنوان URL مطلق مع fragment وصفي:
https://example.com/#organization. - حساس لحالة الأحرف —
#Author≠#author. اختر شكلاً ولا تنحرف عنه. - الكيان نفسه ←
@idنفسه في كل موضع. الكيانات المختلفة ← قيم مختلفة. - لا تستخدم سلسلة اعتباطية مجردة مثل
"id1".
النمطان
| النمط | السلسلة | المرجع بواسطة @id |
|---|---|---|
| النشر | WebSite → WebPage → Article | author → Person، وpublisher → Organization |
| التجارة الإلكترونية | Product → Offer | seller → Organization |
ثلاثة أمور يجب مراقبتها
| الخطأ | ما يحدث |
|---|---|
@id غير متسق أو غير فريد | يُرى الكيان نفسه ككيانين، أو يُدمج كيانان في واحد |
| مرجع يتيم | يُشار إلى @id من دون تعريفه ← تفشل العلاقة بصمت (JSON-LD صالحة لكن ناقصة دلالياً، وغالباً بلا خطأ مدقق) |
| تعريفات كاملة مكررة | تضخم وفخ صيانة (تندمج تكرارات الكيان نفسه وفق قواعد JSON-LD؛ أما استخدام @id واحد لكيانات مختلفة فهو التعارض الحقيقي) |
حقائق سريعة
- تؤكد Google عمل التداخل والعناصر المنفردة كليهما؛ و
@graphاختيارية. - لا توثق Google حل
@idعبر الصفحات؛ افترض التقييم لكل صفحة. - الخيار الآمن:
@idمتسق مع رسم كامل في كل صفحة تحتاج إليه. - ليست رافعة ترتيب أو نتائج غنية؛ بل أداة لفهم الكيانات.
- تحقق بواسطة Rich Results Test التي تحل
@idداخل المستند، ومدقق schema.org؛ واختبر الصفحة المعروضة.
الأنماط المضادة للتداخل
الطرق المحددة التي تخطئ بها schema المتداخلة، وإصلاح كل منها.
انحراف أعراف @id بين القوالب
يُخرج قالب المدونة #organization، وقالب المنتج #org، وقسم مُرحل #company.
ثلاث سلاسل لكيان حقيقي واحد، فيُرى كثلاثة. الإصلاح: عرف موثق واحد يطبق آلياً،
ويُفضل توليده من إعداد واحد كما تفعل المكونات الإضافية.
الإشارة إلى كيان لم تعرّفه (يتيم)
"author": {"@id": "#person-jane"} من دون عقدة #person-jane في المستند.
لا تُحل العلاقة وتفشل؛ وغالباً لا تعرض Rich Results Test خطأ، بل لا تظهر الرابط.
الإصلاح: يجب تعريف كل @id مشار إليه مرة واحدة في الترميز المختبر مع @type.
إعادة تعريف الكيان كاملاً في كل صفحة
نسخ Organization كاملة، بما فيها الاسم والشعار وكل sameAs، داخل كل مقالة
ومنتج. يعمل ذلك، لكنه فخ صيانة: غيّر الشعار مرة وانس أربعين صفحة فيتناقض كيانك.
الإصلاح: عرّف مرة واحدة وأشر بواسطة @id في كل موضع آخر.
تداخل كيانات غير مرتبطة «لإضافة مزيد من schema»
جمع Recipe وEvent غير مرتبط وJobPosting في رسم واحد لأن «المزيد من الترميز
أفضل». يجب أن تكون العلاقة حقيقية؛ فالتجاور ليس علاقة. الإصلاح: اربط فقط
الكيانات المرتبطة فعلاً.
افتراض حل @id عبر الصفحات
تعريف Organization فقط في الصفحة الرئيسية والإشارة إليها من صفحات المنتجات،
مع توقع أن تجلبها Google. لا تؤكد وثائق Google نجاح ذلك. الإصلاح: حافظ على
اتساق @id، لكن ضمّن الكيان الكامل في كل صفحة تشير إليه.
@id مستخدم حيث ينبغي url، أو العكس
استخدام @id حيث تحتاج مرجع صفحة قابل للجلب، أو توقع أن تربط url عقد الرسم.
لهما وظيفتان مختلفتان. الإصلاح: @id لهوية الرسم وurl للصفحة الحقيقية؛
ويمكن للكيان امتلاكهما معاً.
عدم اتساق حالة الأحرف والشرطة المائلة النهائية
https://example.com/#Org في صفحة وhttps://example.com/#org في أخرى، أو
.../post/#article مقابل .../post#article. تُعامل كلها كمعرّفات مختلفة.
الإصلاح: طبّع بدقة حالة الأحرف والشرطات والبروتوكول والمضيف.
أمثلة عملية
نقاط بداية قابلة للنسخ واللصق للنمطين ولمرجع صحيح.
النشر: WebSite → 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" }
}
]
}التجارة الإلكترونية: Product → Offer → Organization (البائع)
{
"@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" }
}
}
]
}مرجع صحيح مقابل مرجع يتيم
صحيح — تُعرّف العقدة المرجعية في الرسم نفسه:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Person", "@id": "https://example.com/#jane", "name": "Jane Doe" },
{ "@type": "Article", "author": { "@id": "https://example.com/#jane" } }
]
}معطّل (يتيم) — يُشار إلى #jane من دون تعريفه، لذلك لا يُحل author إلى شيء:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Article", "author": { "@id": "https://example.com/#jane" } }
]
} تدقيق schema المتداخلة — قائمة تحقق
مراجعة للتأكد من أن الرسم مترابط ومتسق ومكتفٍ بذاته:
- عرف
@idواحد موثق ومطبق في كل موضع، مثل{base}/#organizationو{page}/#webpageو{profile}/#person. - الكيان نفسه ←
@idنفسه في كل صفحة وقالب، بلا انحراف بين#orgو#organization، مع تطبيع حالة الأحرف والشرطة المائلة. - لا مراجع يتيمة؛ كل
@idتشير إليه معرّف في المستند المختبر مع@typeوخصائصه. - لا تعريفات كاملة مكررة؛ تُعرّف الكيانات المشتركة مثل
OrganizationوPersonمرة واحدة ويشار إليها بواسطة@id، ولا يعاد لصقها داخل كل موضع. - استخدام صحيح لـ
@idوurl؛ الأولى تعرّف العقدة والثانية تشير إلى الصفحة الحقيقية، ويمكن للكيان امتلاكهما معاً. - ربط الكيانات المرتبطة فعلاً فقط؛ لا تجمع عناصر غير مرتبطة لمجرد إضافة ترميز.
- رسم كامل في كل صفحة تحتاجه؛ لا تعتمد على حل
@idعبر الصفحات. - التحقق في Rich Results Test وفي مدقق schema.org.
- الاختبار على الصفحة المعروضة لا مصدر القالب؛ وتأكد من وجود JSON-LD المحقونة بواسطة JS فعلاً، واعرضها من الخادم لزواحف الذكاء الاصطناعي.
- ترميز متسق عبر الصفحة الأساسية ونسخها؛ البيانات المنظمة نفسها في كل نسخة.
اختبر نفسك: تداخل ترميز Schema
خمسة أسئلة سريعة عن @id و@graph والأخطاء التي تكسر الرسم المتداخل.
اختر إجابة لكل سؤال ثم تحقق.
موارد تستحق وقتك
كتاباتي ذات الصلة
- Structured Data: What It Is and How to Use It — دليلي لدى Ahrefs لأنواع schema وطرق التنفيذ وأدوات التحقق ومخاطر إزالة التباس الكيانات بواسطة
sameAs، وهي وظيفة فهم الكيانات التي تخدمها@idو@graph. - The Beginner’s Guide to Technical SEO — موضع البيانات المنظمة في الصورة التقنية الأكبر.
محاضراتي
- How Search Works (SlideShare) — شرحي للزحف والعرض والفهرسة والترتيب، وهو سياق ما تغذيه البيانات المنظمة. (وينطبق إخلاء مسؤوليتي المعتاد: “This is my understanding of systems… not going to be 100% complete or accurate.” (ترجمة) «هذا فهمي للأنظمة، ولن يكون مكتملاً أو دقيقاً بنسبة 100%».)
رسمي
- الإرشادات العامة للبيانات المنظمة من Google — التداخل مقابل العناصر المنفردة ومبدأ الربط بواسطة
@id. - توصية W3C لـJSON-LD 1.1 — المواصفة التي تعرّف
@idو@graphوكائنات العقد والرسم. - Rich Results Test ومدقق schema.org — أداتا فحص الرسم المتداخل.
من أنحاء المجال
- We Tracked 1,885 Pages Adding Schema. AI Citations Barely Moved. (Louise Linehan وXibeijia Guan، Ahrefs) — دراسة عن schema والاستشهادات بالذكاء الاصطناعي، تفيد في ضبط توقع أن الترميز النظيف، بما فيه التداخل، بنية تحتية للكيانات لا حيلة للاستشهاد.
- معرّفات العقد: من البيانات المنظمة إلى البيانات المترابطة (Patrick Hathaway، Sitebulb) — أوضح شرح لمعنى معرّف العقدة، مع مثال عملي لقيم
@idمستقلة وتحذير حساسية حالة الأحرف. - What is an @id in Structured Data? (Mark van Berkel، Schema App) — يستشهد بتعريف مواصفة JSON-LD ويقدم تأطير «موطن الكيان»، أي الصفحة التي يعيش فيها تعريفه الكامل.
- What is Nesting in Schema Markup? (Jasmine Drudge-Willson، Schema App) — التداخل للتسلسل الهرمي مقابل الملاءمة، ولماذا يُعد تداخل الكيانات غير المرتبطة خطأ.
- Schema: Technology and approach (وثائق مطوري Yoast) — بنية
@graphإنتاجية حقيقية وقالب@idوخيار صريح بإخراج الرسم الكامل في كل صفحة بدلاً من الاعتماد على الحل عبر الصفحات. - استخدام @id في ترميز Schema.org لـSEO والنماذج اللغوية والرسوم المعرفية (Tyler Einberger، Momentic) — قائمة واضحة بأخطاء
@idالشائعة، مثل المراجع اليتيمة والمعرّفات غير الثابتة والقيم غير المتسقة.
سجل التغييرات
تم التحديث في 22 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 13 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 10 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 21 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 18 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.