Apa gunanya @id dalam sintaks json-ld?

16

Saya benar-benar bingung apa yang @iddigunakan dalam sintaks json-ld. Contoh dari apple.com. Apa yang @idsebenarnya mewakili. Adakah pertolongan yang bagus?

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

Jawaban:

26

Kata @idkunci memungkinkan Anda untuk memberikan URI node. URI ini mengidentifikasi simpul.

Lihat Node Identifiers di spec JSON-LD.

(Persamaan dalam Microdata adalah itemidatribut, dan padanan dalam RDFa Lite adalah resourceatribut.)

Mengapa pengidentifikasi bermanfaat?

  • Anda dapat mereferensikan sebuah simpul alih-alih mengulanginya ( lihat contoh saya ).
  • Penulis lain dapat melakukan hal yang sama (di situs eksternal): ketika mereka menggunakan URI yang Anda tentukan, jelas bahwa mereka membicarakan hal yang sama.
  • Konsumen dapat mengetahui bahwa node yang berbeda memiliki hal yang sama.

Ini juga salah satu konsep inti dari Linked Data dan Web Semantik. Jika Anda peduli tentang ini, Anda mungkin ingin menggunakan URI yang membedakan antara hal yang sebenarnya dan halaman tentang hal itu ( lihat penjelasan saya ).

Inilah yang dilakukan Apple dalam contoh ini. URI http://www.apple.com/#organizationmewakili organisasi yang sebenarnya, bukan halaman (dan bukan bagian pada halaman itu) tentang organisasi. Ini adalah URL Hash , dan ini adalah cara yang populer untuk membuat perbedaan antara hal tersebut dan halaman tentang hal itu. Jika Anda ingin mengatakan dalam JSON-LD Anda bahwa Anda menyukai Apple, Anda dapat menggunakannya http://www.apple.com/#organizationuntuk mengidentifikasi Apple. Jika Anda akan menggunakannya http://www.apple.com/, itu akan menjadi beranda Apple yang Anda sukai.

unor
sumber
Mencoba memahami paragraf terakhir Anda, jadi, halaman harus memiliki nilai '@id' dan 'url' yang sama? Saya berpikir bahwa jika kita memberikan 'url', maka kita dapat memiliki id berbasis hash. Itu membantu menjaga keseragaman.
Ethan Collins
1
@EthanCollins: Ini praktik yang baik untuk memberikan keduanya ( @iddan url), ya. Dalam hal halaman, mereka biasanya memiliki URI yang sama dengan nilai; dalam hal item lain, mereka biasanya memiliki URI yang berbeda sebagai nilai ( @iduntuk hal ini, urluntuk halaman tentang hal itu). - Untuk memastikan bahwa kami berada di halaman yang sama: Dengan ID berbasis hash, maksud Anda Hash URL dalam konteks Data Tertaut, bukan dalam konteks aplikasi satu halaman / situs berbasis JavaScript, kan?
unor
Terima kasih telah mengklarifikasi. Saya juga harus melihat tautan bermanfaat lainnya yang Anda bagikan dalam jawaban Anda, jauh lebih jelas sekarang. (untuk menjawab pertanyaan terakhir Anda, ya saya ingin berarti URI hash).
Ethan Collins
7

Membaca tautan berikut dari Google Developers - Jenis data - Bisnis Lokal di bagian Properti bisnis lokal yang Anda miliki:

[...] ID harus stabil dan tidak berubah dari waktu ke waktu. Google Search memperlakukan URL sebagai string yang tidak jelas dan tidak harus berupa tautan yang berfungsi. Jika bisnis memiliki beberapa lokasi, pastikan @id unik untuk setiap lokasi.

@Id adalah untuk hampir semua objek

Saya harap jawaban saya membantu Anda :)

benetj
sumber