Việc sử dụng @id trong cú pháp json-ld là gì?


16

Tôi thực sự bối rối những gì được @idsử dụng cho cú pháp json-ld. Mẫu từ apple.com. Những gì @idthực sự đại diện. Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời?

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

Câu trả lời:


24

Các @idtừ khóa cho phép bạn để cung cấp cho một nút một URI. URI này xác định nút.

Xem Mã định danh nút trong thông số JSON-LD.

(Tương đương trong Microdata là itemidthuộc tính và tương đương trong RDFa Lite là resourcethuộc tính.)

Tại sao định danh hữu ích?

  • Bạn có thể tham chiếu một nút thay vì lặp lại nó ( xem ví dụ của tôi ).
  • Các tác giả khác có thể làm điều tương tự (trên các trang web bên ngoài): khi họ sử dụng URI mà bạn đã chỉ định, rõ ràng họ đang nói về điều tương tự.
  • Người tiêu dùng có thể biết rằng các nút khác nhau là về cùng một thứ.

Đây cũng là một trong những khái niệm cốt lõi của Dữ liệu được liên kết và Web ngữ nghĩa. Nếu bạn quan tâm đến điều này, bạn có thể muốn sử dụng các URI phân biệt giữa điều thực tế và trang về điều đó ( xem phần giải thích của tôi ).

Đây là những gì Apple đang làm trong ví dụ. URI http://www.apple.com/#organizationđại diện cho tổ chức thực tế, không phải là một trang (và không phải là một phần trên trang đó) về tổ chức. Đây là một URL Hash và đó là một cách phổ biến để phân biệt giữa sự vật và trang về sự việc. Nếu bạn muốn nói trong JSON-LD của bạn rằng bạn thích Apple, bạn có thể sử dụng http://www.apple.com/#organizationđể xác định Apple. Nếu bạn sử dụng http://www.apple.com/thay thế, đó sẽ là trang chủ của Apple mà bạn thích.


Cố gắng hiểu đoạn cuối của bạn, vì vậy, một trang nên có cả hai giá trị '@id' và 'url'? Tôi đã nghĩ rằng nếu chúng tôi cung cấp 'url', thì chúng tôi có thể có id dựa trên hàm băm. Điều đó giúp giữ cho mọi thứ thống nhất trên khắp.
Ethan Collins

1
@EthanCollins: Đó là một cách thực hành tốt để cung cấp cả ( @idurl), vâng. Trong trường hợp các trang, chúng thường có cùng URI với giá trị; trong trường hợp của các mặt hàng khác, họ sẽ thường có các URI khác nhau như giá trị ( @idcho điều này, urlcho trang về điều đó). - Để chắc chắn rằng chúng tôi đang ở trên cùng một trang: Với ID dựa trên hàm băm, ý bạn là URL Hash trong ngữ cảnh của Dữ liệu được liên kết, không phải trong ngữ cảnh của các ứng dụng một trang / trang web dựa trên JavaScript, phải không?
unor

Cảm ơn đã làm rõ. Tôi cũng đã có một cái nhìn về các liên kết hữu ích khác mà bạn đã chia sẻ trong câu trả lời của mình, giờ thì rõ ràng hơn nhiều. (để trả lời truy vấn cuối cùng của bạn, vâng tôi muốn có nghĩa là URI băm).
Ethan Collins

7

Đọc liên kết sau từ Nhà phát triển Google - Các loại dữ liệu - Doanh nghiệp địa phương trong phần Thuộc tính doanh nghiệp địa phương bạn có:

[...] ID phải ổn định và không thay đổi theo thời gian. Tìm kiếm của Google coi URL là một chuỗi mờ và nó không phải là một liên kết hoạt động. Nếu doanh nghiệp có nhiều địa điểm, hãy đảm bảo @id là duy nhất cho mỗi địa điểm.

@I dành cho hầu hết tất cả các đối tượng

Tôi hy vọng câu trả lời của tôi sẽ giúp bạn :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.