Jakie jest zastosowanie @id w składni json-ld?

16

Jestem naprawdę zdezorientowany, co jest @idużywane w składni json-ld. Próbka z apple.com. Co tak @idnaprawdę reprezentuje. Jakakolwiek pomoc byłaby świetna?

<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"
    ]
}

Ishan
źródło

Odpowiedzi:

27

Słowo @idkluczowe pozwala nadać węzłu identyfikator URI. Ten identyfikator URI identyfikuje węzeł.

Zobacz Identyfikatory węzłów w specyfikacji JSON-LD.

(Odpowiednik w Microdata to itemidatrybut, a odpowiednik w RDFa Lite to resourceatrybut).

Dlaczego identyfikatory są przydatne?

  • Możesz odwoływać się do węzła zamiast go powtarzać ( patrz mój przykład ).
  • Inni autorzy mogą zrobić to samo (na zewnętrznych stronach): kiedy używają podanego przez ciebie identyfikatora URI, jasne jest, że mówią o tym samym.
  • Konsumenci mogą dowiedzieć się, że różne węzły dotyczą tej samej rzeczy.

Jest to również jedna z podstawowych koncepcji połączonych danych i sieci semantycznej. Jeśli ci na tym zależy, możesz użyć identyfikatorów URI, które odróżniają rzeczywistą rzecz od strony na ten temat ( zobacz moje wyjaśnienie ).

To właśnie robi Apple w tym przykładzie. Identyfikator URI http://www.apple.com/#organizationreprezentuje rzeczywistą organizację, a nie stronę (i nie część na tej stronie) na temat organizacji. To jest Hash URL i jest to popularny sposób na rozróżnienie między rzeczą a stroną o niej. Jeśli chcesz powiedzieć w swoim JSON-LD, że lubisz Apple, możesz użyć http://www.apple.com/#organizationdo identyfikacji Apple. Jeśli użyjesz http://www.apple.com/zamiast tego, będzie to strona główna Apple, którą lubisz.

unor
źródło
Próbujesz zrozumieć swój ostatni akapit, więc strona powinna mieć zarówno „@id”, jak i „url” te same wartości? Myślałem, że jeśli podamy „url”, możemy mieć identyfikator oparty na haszowaniu. To pomaga zachować jednolitość.
Ethan Collins,
1
@EthanCollins: Dobrą praktyką jest zapewnienie zarówno ( @idi url), tak. W przypadku stron zwykle miałyby ten sam identyfikator URI co wartość; w przypadku innych elementów zwykle miałyby różne wartości URI jako wartość ( @iddla rzeczy, urldla strony o tej rzeczy). - Aby mieć pewność, że jesteśmy na tej samej stronie: w przypadku identyfikatora opartego na haszowaniu masz na myśli adresy URL mieszania w kontekście połączonych danych, a nie w kontekście aplikacji jednostronicowych / witryn opartych na JavaScript, prawda?
unor
Dzięki za wytłumaczenie. Muszę też rzucić okiem na inne przydatne linki, które udostępniłeś w swoich odpowiedziach, teraz jest o wiele jaśniej. (aby odpowiedzieć na twoje ostatnie zapytanie, tak, chciałem mieć na myśli skróty URI).
Ethan Collins,
7

Czytanie następującego linku od Google Developers - Typy danych - Lokalna firma w sekcji Właściwości lokalnej firmy:

[...] ID powinno być stabilne i niezmienne w czasie. Wyszukiwarka Google traktuje adres URL jako nieprzezroczysty ciąg i nie musi to być działający link. Jeśli firma ma wiele lokalizacji, upewnij się, że @id jest unikalny dla każdej lokalizacji.

@Id jest dla prawie wszystkich obiektów

Mam nadzieję, że moja odpowiedź ci pomoże :)

benetj
źródło