У чому полягає використання @id у синтаксисі json-ld?


16

Я дуже плутаю те, що @idвикористовується в синтаксисі json-ld. Зразок з apple.com. Що @idнасправді являє собою. Будь-яка допомога була б чудовою?

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

Відповіді:


27

@idКлючове слово дозволяє дати Вузол URI. Цей URI ідентифікує вузол.

Див. Ідентифікатори вузлів у специфікації JSON-LD.

(Еквівалент у Microdata є itemidатрибутом, а еквівалент RDFa Lite - resourceатрибутом.)

Чому ідентифікатори корисні?

  • Ви можете посилатися на вузол, а не повторювати його ( див. Мій приклад ).
  • Інші автори можуть зробити те ж саме (на зовнішніх сайтах): коли вони використовують URI, який ви вказали, зрозуміло, що вони говорять про те саме.
  • Споживачі можуть дізнатися, що різні вузли - це одне і те ж.

Це також одна з основних концепцій пов'язаних даних та семантичної мережі. Якщо вам це важливо, ви можете скористатися URI, які розрізняють фактичну річ і сторінку про цю річ ( див. Моє пояснення ).

Це те, що Apple робить у прикладі. URI http://www.apple.com/#organizationявляє собою фактичну організацію, а не сторінку (а не частину на цій сторінці) про організацію. Це URL-адреса Hash , і це популярний спосіб зробити різницю між річчю та сторінкою про річ. Якщо ви хочете сказати у своєму JSON-LD, що вам подобається Apple, ви можете використати http://www.apple.com/#organizationдля ідентифікації Apple. Якщо ви використовуєте http://www.apple.com/натомість, це буде домашня сторінка Apple, яка вам подобається.


Намагаєтесь зрозуміти ваш останній абзац, значить, на сторінці повинні бути однакові значення "@id" та "url"? Я думав, що якщо ми надамо 'URL', то ми можемо мати хеш-код. Це допомагає залишати рівномірними речі.
Етан Коллінз

1
@EthanCollins: Це хороша практика забезпечити і ( @idі url), так. У випадку зі сторінками вони, як правило, мають той самий URI як значення; у випадку інших елементів вони зазвичай мають різні URI як значення ( @idдля речі, urlдля сторінки про цю річ). - Щоб бути впевненим, що ми знаходимося на одній сторінці: Ідентифікатор на основі хешу має на увазі URL-адреси Hash в контексті пов'язаних даних, а не в контексті односторінкових програм / сайтів на основі JavaScript, правда?
unor

Дякуємо за уточнення. Я також повинен ознайомитись з іншими корисними посиланнями , якими ви поділилися у своїх відповідях, зараз це набагато зрозуміліше. (щоб відповісти на ваш останній запит, так, я хотів мати на увазі хеш-URI).
Етан Коллінз

7

Читаючи наступне посилання від Google Developers - Типи даних - Місцевий бізнес у розділі "Властивості місцевого бізнесу" у вас є:

[...] Ідентифікатор повинен бути стабільним і незмінним у часі. Пошук Google розглядає URL як непрозорий рядок, і він не повинен бути робочим посиланням. Якщо у компанії є кілька локацій, переконайтеся, що @id унікальний для кожного місця.

@Id - це майже для всіх об'єктів

Сподіваюся, моя відповідь вам допоможе :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.