Qual é o uso de @id na sintaxe json-ld?

16

Estou realmente confuso sobre o que é @idusado na sintaxe json-ld. Amostra de apple.com. O que @idrealmente representa. Qualquer ajuda seria ótimo?

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

Respostas:

25

A @idpalavra-chave permite atribuir um URI a um nó. Este URI identifica o nó.

Consulte Identificadores de nó na especificação JSON-LD.

(O equivalente em Microdata é o itemidatributo e o equivalente em RDFa Lite é o resourceatributo.)

Por que os identificadores são úteis?

  • Você pode fazer referência a um nó em vez de repeti-lo ( veja meu exemplo ).
  • Outros autores podem fazer o mesmo (em sites externos): quando eles usam o URI especificado, fica claro que eles estão falando sobre a mesma coisa.
  • Os consumidores podem aprender que nós diferentes são sobre a mesma coisa.

É também um dos conceitos principais do Linked Data e da Web Semântica. Se você se importa com isso, convém usar URIs que diferenciem a coisa real e a página sobre ela ( veja minha explicação ).

É isso que a Apple está fazendo no exemplo. O URI http://www.apple.com/#organizationrepresenta a organização real, não uma página (e não uma parte nessa página) sobre a organização. Este é um URL Hash e é uma maneira popular de fazer a distinção entre a coisa e a página sobre ela. Se você quiser dizer no seu JSON-LD que gosta da Apple, use-o http://www.apple.com/#organizationpara identificar a Apple. Se você usasse http://www.apple.com/, seria a página inicial da Apple que você gosta.

unor
fonte
Tentando entender seu último parágrafo, uma página deve ter os mesmos valores '@id' e 'url'? Eu estava pensando que, se fornecermos 'url', poderemos ter um ID baseado em hash. Isso ajuda a manter as coisas uniformes.
Ethan Collins
11
@ EthanCollins: É uma boa prática fornecer ambos ( @ide url), sim. No caso de páginas, elas normalmente teriam o mesmo URI que o valor; no caso de outros itens, eles normalmente teriam URIs diferentes como valor ( @idpara a coisa, urlpara a página sobre essa coisa). - Para ter certeza de que estamos na mesma página: com ID baseado em hash, você quer dizer URLs Hash no contexto de dados vinculados, não no contexto de aplicativos de página única / sites baseados em JavaScript, certo?
unor 6/06/19
Obrigado por esclarecer. Também pude dar uma olhada nos outros links úteis que você compartilhou em suas respostas, agora está muito mais claro. (para responder sua última consulta, sim, eu queria dizer URIs de hash).
Ethan Collins
7

Leia o seguinte link no Google Developers - Tipos de dados - Empresa local na seção Propriedades da empresa local:

[...] O ID deve ser estável e imutável ao longo do tempo. A Pesquisa do Google trata o URL como uma sequência opaca e não precisa ser um link funcional. Se a empresa tiver vários locais, verifique se o @id é único para cada local.

O @id é para quase todos os objetos

Espero que minha resposta ajude você :)

benetj
fonte