Was ist die Verwendung von @id in der json-ld-Syntax?


16

Ich bin wirklich verwirrt, wofür @iddie json-ld-Syntax verwendet wird. Probe von apple.com. Was @idrepräsentiert eigentlich. Jede Hilfe wäre toll?

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@id": "http://www.apple.com/#organization",
    "@type": "Organization",
    "url": "http://www.apple.com/",
    "logo": "https://www.apple.com/ac/structured-data/images/knowledge_graph_logo.png?201608191052",
    "contactPoint": [
        {
            "@type": "ContactPoint",
            "telephone": "+1-800-692-7753",
            "contactType": "sales",
            "areaServed": [ "US" ]
        }
    ],
    "sameAs": [
        "http://www.wikidata.org/entity/Q312",
        "https://www.youtube.com/user/Apple",
        "https://www.linkedin.com/company/apple"
    ]
}

Antworten:


24

Mit dem @idSchlüsselwort können Sie einem Knoten einen URI zuweisen. Dieser URI identifiziert den Knoten.

Siehe Knoten-IDs in der JSON-LD-Spezifikation.

(Das Äquivalent in Mikrodaten ist das itemidAttribut und das Äquivalent in RDFa Lite ist das resourceAttribut.)

Warum sind Bezeichner nützlich?

  • Sie können einen Knoten referenzieren, anstatt ihn zu wiederholen ( siehe mein Beispiel ).
  • Andere Autoren können dasselbe tun (auf externen Websites): Wenn sie die von Ihnen angegebene URI verwenden, ist klar, dass sie über dasselbe sprechen.
  • Verbraucher können lernen, dass verschiedene Knoten ungefähr dasselbe sind.

Es ist auch eines der Kernkonzepte von Linked Data und Semantic Web. Wenn Sie sich dafür interessieren, möchten Sie möglicherweise URIs verwenden, die zwischen der tatsächlichen Sache und der Seite über diese Sache unterscheiden ( siehe meine Erklärung ).

Dies ist, was Apple im Beispiel tut. Der URI http://www.apple.com/#organizationstellt die tatsächliche Organisation dar, keine Seite (und kein Teil auf dieser Seite) über die Organisation. Dies ist eine Hash-URL und eine beliebte Methode, um zwischen der Sache und der Seite über die Sache zu unterscheiden. Wenn Sie in Ihrem JSON-LD angeben möchten, dass Sie Apple mögen, können Sie damit http://www.apple.com/#organizationApple identifizieren. Wenn Sie http://www.apple.com/stattdessen verwenden würden, wäre es Apples Homepage, die Sie mögen.


Wenn Sie versuchen, Ihren letzten Absatz zu verstehen, sollte eine Seite die gleichen Werte für '@id' und 'url' haben? Ich dachte, wenn wir 'url' angeben, können wir eine Hash-basierte ID haben. Das hilft, die Dinge gleichmäßig zu halten.
Ethan Collins

1
@EthanCollins: Es ist eine gute Praxis, beide ( @idund url) bereitzustellen , ja. Bei Seiten haben sie normalerweise den gleichen URI wie value. Bei anderen Elementen haben sie normalerweise andere URIs als Wert ( @idfür die Sache, urlfür die Seite über diese Sache). - Um sicherzugehen, dass wir uns auf derselben Seite befinden: Mit Hash-basierter ID meinen Sie Hash-URLs im Kontext verknüpfter Daten, nicht im Kontext einseitiger Anwendungen / JavaScript-basierter Websites, oder?
oder

Danke fürs klarstellen. Ich muss mir auch die anderen nützlichen Links ansehen, die Sie in Ihren Antworten geteilt haben. Es ist jetzt viel klarer. (um deine letzte Frage zu beantworten, ja, ich wollte Hash-URIs meinen).
Ethan Collins

7

Lesen Sie den folgenden Link von Google Developers - Datentypen - Lokales Unternehmen im Bereich Lokale Unternehmenseigenschaften, den Sie haben:

[...] Die ID sollte über die Zeit stabil und unveränderlich sein. In der Google-Suche wird die URL als undurchsichtige Zeichenfolge behandelt und es muss sich nicht um einen funktionierenden Link handeln. Wenn das Unternehmen über mehrere Standorte verfügt, stellen Sie sicher, dass die @ -ID für jeden Standort eindeutig ist.

Die @id ist für fast alle Objekte

Ich hoffe meine antwort hilft dir :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.