wake-up-neo.com

Bewährte JSON-LD-Methoden: Verwenden Sie mehrere <script> -Elemente?

Ich bin gespannt auf die bewährte Methode zum Anwenden von JSON-LD auf eine Site für schema.org.

Wenn ich eine Seite mit einem Article habe und auch WebSite auf meiner Seite definieren möchte, hätte ich Folgendes:

<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>

Ist das richtig oder falsch? Gibt es einen Vorteil oder eine Notwendigkeit, diese in dasselbe Skript oder Array von Elementen zusammenzuführen?

56
Stu Furlong

Es ist gültig. Sie können so viele Datenblöcke (= script Elemente) haben, wie Sie möchten.

Ein möglicher Vorteil der Verwendung von nur einem script -Element: Es erleichtert die Beziehung zwischen mehreren Elementen (z. B. wenn Sie sich für hasPart oder entscheiden). mainEntity ), da Sie die Elemente einfach verschachteln müssen.
Aber diese Beziehungen herzustellen ist natürlich auch möglich, wenn separate Datenblöcke verwendet werden, indem auf die URI des Elements mit @id Verwiesen wird ( danke, @ Gregg Kellogg ).

(Als Referenz Hinzufügen von zwei oder mehr Elementen der obersten Ebene in einem einzigen script ist mit @graph Möglich.)

43
unor

Es hat keinen Vorteil, einzelne oder mehrere Datenblöcke zu haben, abgesehen von Einschränkungen hinsichtlich der Speicherung und Verwaltung von Schemadaten auf Ihrer Website.

Beispielsweise benötigen Sie sie möglicherweise separat, wenn verschiedene Komponenten auf Ihrer Website für die unabhängige Generierung der einzelnen Datenblöcke verantwortlich sind. Wenn Ihre Website alle Schemata für eine Seite an einem Ort verwalten kann, ist es möglicherweise einfacher, einen einzelnen Datenblock zu verwalten und diesen als einzelnes script -Element zu rendern.

Sie können diese in einem einzigen Skript kombinieren, indem Sie jedes Schema wie folgt als Array auflisten:

<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>
50
teaforchris