Qual è l'uso di @id nella sintassi json-ld?


16

Sono davvero confuso per cosa viene @idutilizzato nella sintassi json-ld. Campione da apple.com. Cosa @idrappresenta effettivamente. Qualsiasi aiuto sarebbe grande?

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

Risposte:


26

La @idparola chiave consente di assegnare a un nodo un URI. Questo URI identifica il nodo.

Vedere Identificativi nodo nelle specifiche JSON-LD.

(L'equivalente in Microdata è l' itemidattributo e l'equivalente in RDFa Lite è l' resourceattributo.)

Perché gli identificatori sono utili?

  • Puoi fare riferimento a un nodo invece di ripeterlo ( vedi il mio esempio ).
  • Altri autori possono fare lo stesso (su siti esterni): quando usano l'URI specificato, è chiaro che stanno parlando della stessa cosa.
  • I consumatori possono imparare che nodi diversi riguardano la stessa cosa.

È anche uno dei concetti chiave di Linked Data e Web semantico. Se ci tieni a questo, potresti voler usare URI che differenziano tra la cosa reale e la pagina su quella cosa ( vedi la mia spiegazione ).

Questo è ciò che Apple sta facendo nell'esempio. L'URI http://www.apple.com/#organizationrappresenta l'organizzazione effettiva, non una pagina (e non una parte di quella pagina) sull'organizzazione. Questo è un URL hash , ed è un modo popolare per distinguere tra la cosa e la pagina della cosa. Se vuoi dire nel tuo JSON-LD che ti piace Apple, puoi usare http://www.apple.com/#organizationper identificare Apple. Se http://www.apple.com/invece lo utilizzassi , sarebbe la homepage di Apple che ti piace.


Stai cercando di capire il tuo ultimo paragrafo, quindi una pagina dovrebbe avere gli stessi valori '@id' e 'url'? Stavo pensando che se forniamo 'url', allora possiamo avere un ID basato sull'hash. Ciò aiuta a mantenere le cose uniformi.
Ethan Collins,

1
@EthanCollins: è buona norma fornire entrambi ( @ide url) sì. Nel caso delle pagine, in genere avrebbero lo stesso URI del valore; nel caso di altri elementi, in genere avrebbero URI diversi come valore ( @idper la cosa, urlper la pagina su quella cosa). - Per essere sicuri che siamo sulla stessa pagina: con ID basato sull'hash, intendi gli URL hash nel contesto dei dati collegati, non nel contesto delle applicazioni a pagina singola / siti basati su JavaScript, giusto?
unor

Grazie per il chiarimento. Devo anche dare un'occhiata agli altri link utili che hai condiviso nelle tue risposte, ora è molto più chiaro. (per rispondere alla tua ultima query, sì, volevo dire URI hash).
Ethan Collins,

7

Leggendo il seguente link da Google Developers - Tipi di dati - Attività locale nella sezione Proprietà attività locali che hai:

[...] L'ID dovrebbe essere stabile e invariato nel tempo. Ricerca Google considera l'URL come una stringa opaca e non deve essere un collegamento funzionante. Se l'azienda ha più sedi, assicurati che @id sia univoco per ciascuna sede.

@Id è per quasi tutti gli oggetti

Spero che la mia risposta ti aiuti :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.