it-swarm.asia

أفضل ممارسات JSON-LD: استخدام عناصر <script> متعددة؟

أشعر بالفضول حول أفضل الممارسات لتطبيق JSON-LD على موقع لـ schema.org.

إذا كان لدي صفحة بها Article وأرغب أيضًا في تحديد WebSite على صفحتي ، فسوف يكون لدي هذا:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebSite",
    "url": "http://www.example.com/",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "http://www.example.com/search?&q={query}",
      "query-input": "required"
    }
}
</script>

<!- … -->

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Article",
  "author": "John Doe",
  "interactionCount": [
    "UserTweets:1203",
    "UserComments:78"
  ],
  "name": "How to Tie a Reef Knot"
}
</script>

هل هذا صحيح أم خطأ؟ هل هناك أي فائدة أو حاجة لدمج هذه في نفس البرنامج النصي أو مجموعة من العناصر؟

53
Stu Furlong

هذا صحيح. يمكنك الحصول على أكبر عدد ممكن من كتل البيانات (= script من العناصر) كما تشاء.

فائدة محتملة لاستخدام عنصر script واحد فقط: فهو يسمح بتسهيل العلاقات بين عناصر متعددة (على سبيل المثال ، إذا قررت استخدام hasPart أو mainEntity ) ، حيث يجب عليك ببساطة تداخل العناصر.
ولكن جعل هذه العلاقات ممكنًا بالطبع أيضًا عند استخدام كتل بيانات منفصلة ، من خلال الرجوع إلى URI الخاص بالعنصر مع @id ( شكرًا ، @ Gregg Kellogg ).

(كمرجع ، يمكن إضافة عنصرين أو أكثر من عناصر المستوى الأعلى في script مع @graph.)

42
unor

لا فائدة من امتلاك كتل بيانات مفردة أو متعددة ، بخلاف القيود حول كيفية تخزين وإدارة بيانات المخطط في موقع الويب الخاص بك.

على سبيل المثال ، قد تحتاجها منفصلة إذا كانت المكونات المختلفة داخل موقع الويب الخاص بك مسؤولة عن إنشاء كل كتلة بيانات بشكل مستقل. بدلاً من ذلك ، إذا كان موقع الويب الخاص بك قادرًا على إدارة جميع المخططات لصفحة واحدة في مكان واحد ، فقد يكون من الأسهل إدارة كتلة بيانات واحدة وجعلها كعنصر script واحد.

يمكنك دمج هذه في برنامج نصي واحد عن طريق سرد كل مخطط كصفيف مثل هذا:

<script type="application/ld+json">
[
  {
    "@context": "http://schema.org",
    "@type": "WebSite",
    "url": "http://www.example.com/",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "http://www.example.com/search?&q={query}",
      "query-input": "required"
    }
  },
  {
    "@context": "http://schema.org",
    "@type": "Article",
    "author": "John Doe",
    "interactionCount": [
      "UserTweets:1203",
      "UserComments:78"
    ],
    "name": "How to Tie a Reef Knot"
  }
]
</script>
45
teaforchris