Dữ liệu có cấu trúc cho Thao tác với sách (Book)

Các thao tác với sách khiến người dùng tìm đến Google Tìm kiếm để khám phá sách và tác giả mới. Điều này cho phép người dùng có thể nhanh chóng mua hoặc mượn sách mà họ tìm thấy ngay từ kết quả trên Tìm kiếm. Ví dụ: Khi tìm cuốn Mạng nhện của Charlotte, người dùng sẽ nhìn thấy kết quả tìm kiếm và có thể mua hoặc mượn cuốn sách đó thông qua các kết quả. Là nhà cung cấp sách, bạn có thể cung cấp nguồn cấp dữ liệu cho Google bằng mã schema dữ liệu có cấu trúc như dưới đây. Phần đặc tả của chúng tôi cung cấp thuộc tính ReadAction để người dùng mua sách và BorrowAction để người dùng mượn sách.

Một thao tác với sách trong kết quả của Tìm kiếm

Các thao tác đọc và mượn (được tích hợp trong các bảng tri thức) sẽ cho thấy các lựa chọn để mua hoặc mượn sách. Thông qua các đường liên kết bạn cung cấp, các thao tác đọc và mượn sẽ chuyển người dùng trực tiếp từ bảng tri thức và các nền tảng khác của Google tới một trang thông tin về sách trên trang web hoặc ứng dụng của bạn.

Thứ tự của các nhà cung cấp trong bảng tri thức được cá nhân hoá và thay đổi linh hoạt theo từng người dùng. Điều này có nghĩa là mỗi người dùng sẽ thấy một thứ tự riêng, và cùng một người dùng có thể thấy thứ tự khác nhau ở những thời điểm khác nhau. Có nhiều yếu tố ảnh hưởng tới một thứ tự nhất định. Ví dụ: nếu một người dùng thường nhấp vào đường liên kết của một nhà cung cấp nhất định trong bảng tri thức, thì nhà cung cấp đó có khả năng cao sẽ xuất hiện ở vị trí cao hơn. Không có cách nào để kiểm soát thứ tự này.

Bắt đầu

Để triển khai thành công các thao tác với Sách, bạn phải xây dựng nguồn cấp dữ liệu của mình theo đúng định nghĩa các loại dữ liệu có cấu trúc về thao tác với Sách. Nhưng trước hết, hãy tham khảo các phần sau:

Nguyên tắc

Để đảm bảo sách của bạn có thể xuất hiện ổn định trên Tìm kiếm, bạn cần phải nắm chắc một số chi tiết quan trọng và khái niệm chính. Ngoài ra, nguồn cấp dữ liệu của bạn phải đáp ứng một số thông số kỹ thuật đối với các định dạng chuẩn.

Để giúp bạn làm điều đó, hãy tuân thủ những nguyên tắc nêu trong bài viết này, ngoài nguyên tắc chung về dữ liệu có cấu trúcYêu cầu cơ bản của Tìm kiếm. Những nguyên tắc này bao gồm:

Tác phẩm và ấn bản

Xuyên suốt tài liệu này, chúng tôi sử dụng hai thuật ngữ riêng biệt khi nói về sách:

  • Tác phẩm: Khái niệm trừu tượng về một cuốn sách. Cụ thể, siêu dữ liệu như tiêu đề, tác giả và ngôn ngữ gốc là các thuộc tính của một tác phẩm.
  • Ấn bản: Một cuốn sách hữu hình. Cụ thể, siêu dữ liệu như năm xuất bản, tên ấn bản và Mã số tiêu chuẩn quốc tế cho sách (ISBN) là các thuộc tính của ấn bản.

Ví dụ: Mạng nhện của Charlotte là một tác phẩm, nhưng mọi phiên bản của sách đều là ấn bản. Trong trường hợp này, tác phẩm Mạng nhện của Charlotte có thể có ấn bản thứ nhất, ấn bản thứ hai, ấn bản rút gọn, ấn bản dịch sang tiếng Pháp, v.v.

Trong nguồn cấp dữ liệu, sự khác biệt này đặc biệt quan trọng nhưng lại khó nhận ra. Có hai thực thể Book:

  • Book (Work) là thực thể Book"cấp cao nhất":
    • workExample là một thuộc tính của Work và chỉ định một phiên bản duy nhất của Book (Edition).
    • Phải có ít nhất một workExample cho mỗi Work.
  • Book (Edition) là thực thể Book "cấp thấp hơn" .

Hãy nhớ rằng một tác phẩm có thể có nhiều ấn bản. Bạn nên tạo nhiều nhóm nhất có thể cho các ấn bản này. Điều này giúp các hệ thống của Google tận dụng tất cả thông tin liên quan về một cuốn sách và trình bày cuốn sách đó trong Tìm kiếm. Nếu cần thiết, bạn có thể tách các ấn bản này thành nhiều hồ sơ tác phẩm, nhưng mỗi hồ sơ tác phẩm phải có:

  • @id riêng biệt.
  • Ít nhất một ấn bản có ISBN hoặc giá trị nhận dạng được hỗ trợ khác.

Hệ thống thư viện và thư viện thành viên

Library entity là loại thực thể Library "cấp cao nhất". Đây là một hệ thống trừu tượng bao gồm một thực thể LibrarySystem và từng thực thể Library (member) "cấp thấp hơn" của hệ thống thư viện đó.

Thực thể LibrarySystem là khái niệm tượng trưng cho mạng lưới cộng tác của các thư viện thành viên. Ví dụ: Thư viện công cộng Austin có thể được coi là một thực thể LibrarySystem. Trang web của Thư viện công cộng Austin tự giới thiệu là hệ thống thư viện công cộng phục vụ vùng Austin, Texas. Hệ thống này bao gồm 20 thư viện liên kết, hay còn gọi là thư viện thành viên.

Mỗi thực thể LibrarySystem yêu cầu ít nhất một thực thể Library (member), kể cả khi thư viện đó không thuộc hệ thống thư viện nào trong thực tế. Trong trường hợp này, để phục vụ mục đích triển khai thao tác với Sách, thư viện đó sẽ là thư viện thành viên duy nhất trong hệ thống thư viện. Để phục vụ mục đích triển khai thao tác với Sách, khác với một hệ thống thư viện, thư viện thành viên không phải là thực thể trừu tượng nên sẽ có địa chỉ thực.

Ngược lại, mọi thực thể Library (member) phải thuộc ít nhất một thực thể LibrarySystem.

ISBN và các giá trị nhận dạng được hỗ trợ khác

ISBN là tín hiệu đối chiếu chính khi Google Tìm kiếm so khớp dữ liệu trong nguồn cấp của bạn với dữ liệu của Google. Bạn phải cung cấp ISBN hoặc các giá trị nhận dạng khác mà hệ thống hỗ trợ cho mọi cuốn sách bạn muốn đưa vào kết quả trên Tìm kiếm. Nếu không có những giá trị này, chúng tôi có thể sẽ không so khớp được sách của bạn và kết quả là những cuốn sách đó sẽ không xuất hiện.

Google Tìm kiếm ưu tiên ISBN-13, nhưng bạn cũng có thể cung cấp các giá trị nhận dạng sau:

  • Mã số của Trung tâm Thư viện Máy tính Trực tuyến (OCLC)
  • Mã số kiểm soát của Thư viện Quốc hội (LCCN)
  • Mã điện tử JP

Để đảm bảo người dùng có trải nghiệm tốt nhất khi tìm sách của bạn, đường liên kết trong nguồn cấp dữ liệu của bạn phải tuân thủ những nguyên tắc sau:

  • Nếu bạn có các trang trùng lặp chứa nội dung giống nhau, thì đường liên kết đó phải là URL chính tắc chứa tên sách và thông tin khác về sách.
  • Sau khi người dùng nhấp vào đường liên kết dẫn tới thao tác đọc hoặc mượn, đường liên kết phải chuyển người dùng tới một trang hỗ trợ việc mua hoặc mượn sách trực tiếp. Cụ thể là đừng dùng đường liên kết dẫn tới thao tác để chuyển người dùng đến các trang yêu cầu phải nhấp vào các đường liên kết khác thì mới mua hoặc mượn được nội dung. Ví dụ: đừng chuyển người dùng tới trang kết quả tìm kiếm hoặc trang tóm tắt sản phẩm.

Tạo nguồn cấp dữ liệu

Nếu trang web của bạn bán sách cho người dùng, thì bạn phải tải nguồn cấp dữ liệu Book lên. Hãy liên hệ với đại diện của Google và xác minh thông tin về cách thức và vị trí tải nguồn cấp dữ liệu lên.

Nếu trang web của bạn cho người dùng mượn sách, bạn phải tải hai nguồn cấp dữ liệu riêng biệt lên: nguồn cấp dữ liệu Book và nguồn cấp dữ liệu Library. Hãy liên hệ với người đại diện của Google và xác nhận thông tin về cách và vị trí bạn cần tải nguồn cấp dữ liệu lên.

Tuân thủ yêu cầu về kích thước, số lượng và định dạng của nguồn cấp dữ liệu

Các yêu cầu này bao gồm:

  • Yêu cầu về kích thước tệp nguồn cấp dữ liệu:
    • Kích thước của tệp nguồn cấp dữ liệu chưa nén phải nhỏ hơn 1 GB.
    • Kích thước của tệp nguồn cấp dữ liệu cần nén phải nhỏ hơn 1 GB. Nếu tệp nguồn cấp dữ liệu chưa nén của bạn lớn hơn 1 GB, bạn phải chia tệp nguồn cấp dữ liệu chưa nén đó thành nhiều tệp nhỏ.
  • Bạn có thể nén các tệp nguồn cấp dữ liệu. Các tệp này phải có định dạng zip, gz, tar, tar.gz, JAR, ar, arj, cpio hoặc định dạng tệp lưu trữ dump.
  • Nếu có nhiều tệp nguồn cấp dữ liệu, bạn có thể tải ngay các tệp đó lên, hoặc cũng có thể gộp vào một tệp chỉ mục sơ đồ trang web nếu muốn.
  • Các tệp nguồn cấp dữ liệu đơn lẻ phải có đuôi tệp là .json.

Tuân thủ yêu cầu về nội dung nguồn cấp dữ liệu

Hãy đặc biệt lưu ý những yêu cầu sau đây về nội dung nguồn cấp dữ liệu mà bạn phải tuân thủ:

  • Nguồn cấp dữ liệu không được chứa các thực thể cũ. Các thực thể cũ là các thực thể có availabilityEnds mang giá trị là một ngày trong quá khứ hoặc các thực thể mà trang web của bạn đã ngừng cung cấp.
  • Tất cả đường liên kết sâu (chẳng hạn như urlTemplate) và tất cả URL (chẳng hạn như url) mà bạn đưa vào nguồn cấp dữ liệu phải là URL chính thức. Đừng sử dụng URL kiểm soát chất lượng, URL phát triển hoặc các URL chưa chính thức.
  • Tất cả URL, chẳng hạn như url, đều phải là URL chính tắc.
  • Mỗi thực thể trong nguồn cấp dữ liệu của bạn phải chỉ định các thuộc tính sau:
    • Một giá trị nhận dạng duy nhất: @id
    • Một URL duy nhất: url
    • Một đường liên kết sâu duy nhất: urlTemplate

Kiểm tra nguồn cấp dữ liệu bằng công cụ xác thực nguồn cấp dữ liệu

Bạn nên thực hiện các bước khắc phục sự cố sau đây để giải quyết các lỗi và cảnh báo thường gặp trên công cụ xác thực nguồn cấp dữ liệu:

  • Đảm bảo rằng bạn đã chọn đúng lựa chọn trong trường Validate on (Xác thực cho). Chọn Books Action (Thao tác với sách) cho thực thể Book.

  • Xác minh rằng giá trị của @type đúng chính tả.
  • Đảm bảo rằng giá trị của @context được thiết lập đúng cách. Thiết lập "@context": "https://schema.org" cho cả ReadActionBorrowAction.

Lưu trữ tệp nguồn cấp dữ liệu

Khi tệp nguồn cấp dữ liệu của bạn đã sẵn sàng, hãy lưu trữ tệp tại một vị trí an toàn. Google thường xuyên tìm nạp nguồn cấp dữ liệu để đảm bảo rằng nội dung của bạn được cập nhật.

Phương thức lưu trữ

Google hỗ trợ các phương thức lưu trữ nguồn cấp dữ liệu sau đây:

Lưu trữ Hỗ trợ việc xác thực
Google Cloud Storage Quyền Storage Object Viewer (Xem đối tượng lưu trữ)
HTTPS Tên người dùng + mật khẩu hoặc chứng chỉ máy khách HTTP
Giao thức truyền tệp bảo mật (SFTP) Mật khẩu, Khoá + cụm từ, hoặc cả hai
AWS S3 Mã khoá + khoá truy cập

Gửi tệp nguồn cấp dữ liệu để xem xét

Để nội dung của bạn xuất hiện trên Google Tìm kiếm, nhóm hỗ trợ Google sẽ xem xét chất lượng của các đường liên kết sâu trong nguồn cấp dữ liệu của bạn. Bạn nên tự kiểm tra một số đường liên kết sâu để xác nhận xem các đường liên kết này có chuyển hướng người dùng tới một trang cho phép họ mua hoặc mượn sách không.

Để yêu cầu xem xét nguồn cấp dữ liệu của bạn, hãy cung cấp các thông tin sau:

  • Vị trí lưu trữ: URL của tệp nguồn cấp dữ liệu.
  • Thông tin xác thực máy chủ lưu trữ, nếu có: Thông tin xác thực cho phép Google lấy tệp nguồn cấp dữ liệu từ vị trí máy chủ lưu trữ của bạn.

Cập nhật nguồn cấp dữ liệu nếu cần

Bạn nên cập nhật nguồn cấp dữ liệu hằng ngày, nhưng sau cùng thì việc này vẫn phụ thuộc vào tần suất thay đổi của danh mục sách. Hãy lưu ý các điều kiện và mẹo sau:

  • Google Tìm kiếm không hỗ trợ cập nhật theo thời gian thực.
  • Google Tìm kiếm sẽ tìm nạp nguồn cấp dữ liệu của bạn một lần mỗi ngày và thường tiến hành lập chỉ mục nội dung trong vòng hai ngày.
  • Nếu bạn dự định thay đổi thời gian mà người dùng có thể đọc một ấn bản, hãy dùng availabilityStartsavailabilityEnds để đặt ngày chính xác. Nếu một thực thể không còn tồn tại, hãy xoá hoàn toàn thực thể đó

Định nghĩa các loại dữ liệu có cấu trúc

Bạn phải sử dụng các thuộc tính bắt buộc mà chúng tôi liệt kê trong bài viết này để nội dung của bạn đủ điều kiện xuất hiện trong kết quả tìm kiếm có cấu trúc. Bạn cũng có thể thêm các thuộc tính mà chúng tôi khuyên dùng để bổ sung thông tin về nội dung nhằm mang lại trải nghiệm tốt hơn cho người dùng.

Thực thể DataFeed

Mỗi tệp nguồn cấp dữ liệu schema.org bạn gửi đến Google phải chứa một thực thể duy nhất của DataFeed ở cấp độ gốc. Tất cả thực thể BookLibrary phải được liệt kê trong trường dataFeedElement của thực thể DataFeed.

Sau đây là các tài sản được Google hỗ trợ:

Thuộc tính bắt buộc
@context

Text

Đặt thành https://schema.org.

@type

Text

Đặt thành DataFeed.

dataFeedElement

Book hoặc LibrarySystem

Đặt thành một thực thể Book hoặc LibrarySystem. Nếu không, hãy đặt thành một mảng chỉ gồm thực thể Book hoặc thực thể LibrarySystem. Không được đặt thành một mảng chứa cả thực thể Book và thực thể LibrarySystem.

Ví dụ về cách sử dụng trong nguồn cấp dữ liệu Book:


{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "Book",
      "@id": "https://example.com/work/the_catcher_in_the_rye",
      "url": "https://example.com/work/the_catcher_in_the_rye",
      "name": "The Catcher in the Rye",
      "author": {
        "@type": "Person",
        "name": "J.D. Salinger"
      },
      "sameAs": "https://en.wikipedia.org/wiki/The_Catcher_in_the_Rye",
      "workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "isbn": "9787543321724",
          "bookEdition": "Mass Market Paperback",
          "bookFormat": "https://schema.org/Paperback",
          "inLanguage": "en",
          ...
        },
        ...
      ]
   }
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}

Ví dụ về cách sử dụng trong nguồn cấp dữ liệu LibrarySystem:


{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "LibrarySystem",
      "@id": "https://example.com/library-systems/100",
      "name": "Santa Clara County Library District",
      "additionalProperty": [
        {
          "@type": "PropertyValue",
          "name": "librarytype",
          "value": "public"
        }
      ],
      ...
    },
    ...
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}
dateModified

DateTime

Ngày và giờ cập nhật nguồn cấp dữ liệu gần đây nhất, ở định dạng ISO 8601.

Thực thể Book

Bạn có thể xem định nghĩa đầy đủ về Book tại schema.org/Book. Tuy vậy, bạn chỉ cần chú ý đến những thuộc tính sau. Bạn phải xác định các thuộc tính bắt buộc cho mọi cuốn sách bạn chọn đưa vào nguồn cấp dữ liệu của mình. Bạn cũng có thể xác định các thuộc tính mà chúng tôi khuyên dùng để thêm thông tin về nội dung nhằm mang lại trải nghiệm tốt hơn cho người dùng.

Book (Work)

Thực thể Book này là loại thực thể cấp cao nhất và đại diện cho một tác phẩm.

Sau đây là các tài sản được Google hỗ trợ:

Thuộc tính bắt buộc
@context

Text

Đặt thành https://schema.org.

@id

Text

Một giá trị nhận dạng duy nhất trên toàn cầu cho sách ở định dạng URL. Giá trị này phải dành riêng cho tổ chức của bạn. Giá trị này cũng phải ổn định và không thay đổi theo thời gian. Bạn nên sử dụng định dạng URL (mặc dù định dạng này là không bắt buộc). URL này không cần phải là một đường liên kết đang hoạt động. Miền mà bạn dùng cho giá trị @id phải thuộc sở hữu của tổ chức của bạn.

@type

Text

Đặt thành Book.

author

Person hoặc Organization

(Các) tác giả của cuốn sách.

name

Text

Tên sách.

url

URL

URL trên trang web của bạn nơi có thông tin giới thiệu hoặc mô tả về cuốn sách. Liên kết này giúp điều chỉnh nội dung trong nguồn cấp dữ liệu của bạn sao cho khớp với nội dung trong cơ sở dữ liệu của Google. URL này có thể giống như workExample.target.urlTemplate.

Đối với trang đích trong thực tế, Google Tìm kiếm sử dụng URL được cung cấp trong workExample.target.urlTemplate.

workExample

Book (Edition)

(Các) ấn bản của tác phẩm.

Thuộc tính nên có
sameAs

URL

URL của một trang tham chiếu giúp xác định tác phẩm. Ví dụ: một trang của Wikipedia, Wikidata, VIAF hoặc Thư viện Quốc hội Hoa Kỳ cho cuốn sách đó.

Book (Edition)

Thuộc tính workExample sử dụng thực thể Book này. Thuộc tính này đại diện cho một ấn bản của tác phẩm.

Sau đây là các tài sản được Google hỗ trợ:

Thuộc tính bắt buộc
@id

Text

Một giá trị nhận dạng duy nhất trên toàn cầu cho sách ở định dạng URL. Giá trị này phải dành riêng cho tổ chức của bạn. Giá trị này cũng phải ổn định và không thay đổi theo thời gian. Bạn nên sử dụng định dạng URL (mặc dù định dạng này là không bắt buộc). URL này không cần phải là một đường liên kết đang hoạt động. Miền mà bạn dùng cho giá trị @id phải thuộc sở hữu của tổ chức của bạn.

@type

Text

Đặt thành Book.

bookFormat

Enum

Định dạng của ấn bản. Thuộc tính này phải có một trong các giá trị sau:

  • https://schema.org/AudiobookFormat
  • https://schema.org/EBook
  • https://schema.org/Hardcover
  • https://schema.org/Paperback
inLanguage

Text

Ngôn ngữ chính của nội dung trong ấn bản. Sử dụng một mã gồm hai ký tự trong danh sách mã ISO 639-1 alpha-2.

isbn

Text

Giá trị ISBN-13 của ấn bản. Nếu bạn có ISBN-10, hãy chuyển đổi giá trị đó thành ISBN-13.

potentialAction

ReadAction hoặc BorrowAction

Thao tác cần kích hoạt để người dùng mua hoặc tải sách xuống. Để biết thêm chi tiết, hãy tham khảo ReadAction hoặc BorrowAction.

Thuộc tính nên có
author

Person hoặc Organization

(Các) tác giả của ấn bản.

bookEdition

Text

Thông tin về ấn bản của cuốn sách. Ví dụ: 2nd Edition.

datePublished

Date

Ngày xuất bản ấn bản ở định dạng YYYY-MM-DD hoặc YYYY. Đây có thể là một ngày cụ thể hoặc chỉ là một năm cụ thể.

identifier

PropertyValue

Giá trị nhận dạng bên ngoài hoặc mã khác giúp nhận dạng ấn bản này. Google cho phép sử dụng nhiều giá trị nhận dạng. Để biết thêm chi tiết, hãy tham khảo PropertyValue (identifier).

Bạn có thể dùng lại thuộc tính này.

name

Text

Tên ấn bản. Chỉ sử dụng khi tên ấn bản khác với tên tác phẩm.

sameAs

URL

URL của một trang web tham khảo nêu rõ thông tin định danh ấn bản đó. Ví dụ: trang Wikipedia cho ấn bản cụ thể này. Không sử dụng lại thuộc tính sameAs của Work.

url

URL

URL trên trang web của bạn nơi có thông tin giới thiệu hoặc mô tả về ấn bản. URL này có thể giống như workExample.target.urlTemplate.

Ví dụ về Book (Edition):

"workExample":
        {
          "@type": "Book",
          "@id": "https://example.com/book/100",
          "inLanguage": "en",
          "isbn": "9787543321724",
          "bookEdition": "20 Anniversary Edition",
          "datePublished": "2000-02-26",
          "bookFormat": "https://schema.org/Hardcover",
          "potentialAction": {...}
        }

Ví dụ: Book (Edition) với nhiều thuộc tính workExample:

"workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/book/200",
          "inLanguage": "zh",
          "isbn": "9787543321721",
          "bookEdition": "2nd Edition",
          "bookFormat": "https://schema.org/Hardcover",
          "potentialAction": {...}
        },
        {
          "@type": "Book",
          "@id": "https://example.com/book/300",
          "inLanguage": "zh",
          "isbn": "9787543321722",
          "bookEdition": "1st Edition",
          "bookFormat": "https://schema.org/EBook",
          "potentialAction": {...}
      }
 ]

Person hoặc Organization (author)

Thuộc tính author của sách sử dụng thực thể Person hoặc Organization.

Thuộc tính bắt buộc
@type

Text

Đặt thành Person hoặc Organization.

name

Text

Tên của người hoặc tổ chức đó.

Thuộc tính nên có
sameAs

URL

URL của một trang web tham khảo nêu rõ thông tin định danh người hoặc tổ chức đó. Ví dụ: trang Wikipedia cho người hoặc tổ chức đó.

Ví dụ author:

"author": {
  "@type": "Person",
  "name": "William Shakespeare"
}

Ví dụ về nhiều thuộc tính author:

"author": [
  {
    "@type": "Person",
    "name": "William Shakespeare"
  },
  {
    "@type": "Person",
    "name": "Victor Hugo",
    "sameAs": "https://en.wikipedia.org/wiki/Victor_Hugo"
  }
]

PropertyValue (giá trị nhận dạng)

Thuộc tính identifier của Edition sử dụng thực thể PropertyValue.

Thuộc tính bắt buộc
@type

Text

Đặt thành PropertyValue.

propertyID

Text

Loại giá trị nhận dạng. Như đã mô tả trong phần ISBN và các giá trị nhận dạng được hỗ trợ khác, giá trị nhận dạng phải là một trong hai thuộc tính sau:

  • OCLC_NUMBER
  • LCCN
  • JP_E-CODE
value

Text

Giá trị nhận dạng. Giá trị nhận dạng bên ngoài có chức năng xác định rõ ràng ấn bản này. Hãy xoá tất cả các tiền tố không phải dạng số của giá trị nhận dạng bên ngoài.

Ví dụ identifier:

    "identifier": {
      "@type": "PropertyValue",
      "propertyID": "OCLC_NUMBER",
      "value":  "110123456"
    }

Ví dụ về nhiều thuộc tính identifier:

    "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "OCLC_NUMBER",
      "value":  "110123456"
    },
    {
      "@type": "PropertyValue",
      "propertyID": "LCCN",
      "value":  "220123456"
    },{
      "@type": "PropertyValue",
      "propertyID": "JP_E-CODE",
      "value":  "12345678901234567890"
    }]

Ví dụ về nguồn cấp dữ liệu ReadAction Book ở định dạng JSON

{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "Book",
      "@id": "https://example.com/work/the_catcher_in_the_rye",
      "url": "https://example.com/work/the_catcher_in_the_rye",
      "name": "The Catcher in the Rye",
      "author": {
        "@type": "Person",
        "name": "J.D. Salinger"
      },
      "sameAs": "https://en.wikipedia.org/wiki/The_Catcher_in_the_Rye",
      "workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "isbn": "9787543321724",
          "bookEdition": "Mass Market Paperback",
          "bookFormat": "https://schema.org/Paperback",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "datePublished": "1991-05-01",
          "identifier": {
            "@type": "PropertyValue",
            "propertyID": "OCLC_NUMBER",
            "value": "1057320822"
          },
          "potentialAction": {
            "@type": "ReadAction",
            "target": {
              "@type": "EntryPoint",
              "urlTemplate": "https://example.com/store/9787543321724",
              "actionPlatform": [
                "https://schema.org/DesktopWebPlatform",
                "https://schema.org/AndroidPlatform",
                "https://schema.org/IOSPlatform"
              ]
            },
            "expectsAcceptanceOf": {
              "@type": "Offer",
              "category": "purchase",
              "price": 6.99,
              "priceCurrency": "USD",
              "availabilityStarts": "2020-01-01T11:0:00-04:00",
              "availabilityEnds": "2050-06-30T23:59:00-04:00",
              "eligibleRegion": {
                "@type": "Country",
                "name": "US"
              }
            }
          }
        },
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "isbn": "9780316769532",
          "bookEdition": "Hardcover",
          "bookFormat": "https://schema.org/Hardcover",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "datePublished": "1951-07-16",
          "potentialAction": {
            "@type": "ReadAction",
            "target": {
              "@type": "EntryPoint",
              "urlTemplate": "https://example.com/store/9780316769532",
              "actionPlatform": [
                "https://schema.org/DesktopWebPlatform",
                "https://schema.org/AndroidPlatform",
                "https://schema.org/IOSPlatform"
              ]
            },
            "expectsAcceptanceOf": [
              {
                "@type": "Offer",
                "category": "nologinrequired",
                "availabilityStarts": "2020-01-01T11:0:00-04:00",
                "availabilityEnds": "2050-06-30T23:59:00-04:00",
                "eligibleRegion": [
                  {
                    "@type": "Country",
                    "name": "US"
                  },
                  {
                    "@type": "Country",
                    "name": "GB"
                  }
                ]
              },
              {
                "@type": "Offer",
                "category": "Subscription",
                "availabilityStarts": "2020-01-01T11:0:00-04:00",
                "availabilityEnds": "2050-06-30T23:59:00-04:00",
                "eligibleRegion": {
                  "@type": "Country",
                  "name": "IN"
                }
              }
            ]
          }
        }
      ]
    }
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}

Ví dụ về nguồn cấp dữ liệu BorrowAction Book ở định dạng JSON

{
  "@context": "https://schema.org",
  "@type": "DataFeed",
  "dataFeedElement": [
    {
      "@context": "https://schema.org",
      "@type": "Book",
      "@id": "https://example.com/work/the_catcher_in_the_rye",
      "url": "https://example.com/work/the_catcher_in_the_rye",
      "name": "The Catcher in the Rye",
      "author": {
        "@type": "Person",
        "name": "J.D. Salinger"
      },
      "sameAs": "https://en.wikipedia.org/wiki/The_Catcher_in_the_Rye",
      "workExample": [
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "isbn": "9787543321724",
          "bookEdition": "Mass Market Paperback",
          "bookFormat": "https://schema.org/Paperback",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_paperback",
          "datePublished": "1991-05-01",
          "identifier": {
            "@type": "PropertyValue",
            "propertyID": "OCLC_NUMBER",
            "value": "1057320822"
          },
          "potentialAction": {
            "@type": "BorrowAction",
            "lender": {
              "@type": "LibrarySystem",
              "@id": "https://example.com/librarySystem/100"
            },
            "target": {
              "@type": "EntryPoint",
              "urlTemplate": "https://example.com/borrowpurchase?bookId=170",
              "actionPlatform": [
                "https://schema.org/DesktopWebPlatform",
                "https://schema.org/AndroidPlatform",
                "https://schema.org/IOSPlatform"
              ]
            }
          }
        },
        {
          "@type": "Book",
          "@id": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "isbn": "9780316769532",
          "bookEdition": "Hardcover",
          "bookFormat": "https://schema.org/Hardcover",
          "inLanguage": "en",
          "url": "https://example.com/edition/the_catcher_in_the_rye_hardcover",
          "datePublished": "1951-07-16",
          "potentialAction": {
            "@type": "BorrowAction",
            "lender": {
              "@type": "LibrarySystem",
              "@id": "https://example.com/librarySystem/100"
            },
            "target": [
              {
                "@type": "EntryPoint",
                "urlTemplate": "https://example.com/borrowpurchase?bookId=170",
                "actionPlatform": [
                  "https://schema.org/DesktopWebPlatform"
                ]
              },
              {
                "@type": "EntryPoint",
                "urlTemplate": "https://example.com/mobile/borrowpurchase?bookId=170",
                "actionPlatform": [
                  "https://schema.org/AndroidPlatform",
                  "https://schema.org/IOSPlatform"
                ]
              }
            ]
          }
        }
      ]
    }
  ],
  "dateModified": "2018-09-10T13:58:26.892Z"
}

ReadAction (potentialAction)

Thuộc tính potentialAction sử dụng thực thể ReadAction. ReadAction xác định các đường liên kết sâu để truy cập sách, nhà bán lẻ cung cấp sách và các tiêu chí mà người dùng phải đáp ứng. Các tiêu chí này có thể bao gồm tư cách thành viên, trạng thái đăng nhập, vị trí hoặc bất kỳ điều kiện nào khác cần đáp ứng để truy cập sách.

Thuộc tính bắt buộc
@type

Text

Đặt thành ReadAction.

expectsAcceptanceOf

Offer

Phần xác định các yêu cầu mà người dùng phải đáp ứng để truy cập vào thực thể này. Nếu có nhiều thuộc tính Offer, thì người dùng phù hợp với bất kỳ tiêu chí nào nêu trong Offer sẽ có thể truy cập nội dung.

Bạn có thể dùng lại thuộc tính này.

expectsAcceptanceOf.@type

Text

Đặt thành Offer.

expectsAcceptanceOf.category

Text

Loại Offer. Thuộc tính này phải có một trong các giá trị sau:

  • nologinrequired: Người dùng có thể thực hiện thao tác này mà không cần phải mua hoặc đăng nhập để truy cập nội dung.
  • free: Người dùng có thể thực hiện thao tác này mà không cần mua sách hay mua gói đăng ký có tính phí. Tuy nhiên, người dùng phải đăng nhập.
  • subscription: Sách thuộc gói đăng ký có tính phí đối với dịch vụ của bạn.
  • purchase: Sách có thể đọc được sau khi mua.
  • rental: Sách có thể đọc được trong một khoảng thời gian nhất định sau khi mua.
expectsAcceptanceOf.eligibleRegion

Country

Quốc gia đủ điều kiện cho Offer này. Bạn có thể dùng thuộc tính này để kiểm soát quốc gia và khu vực mà bạn cung cấp hoặc không cung cấp nội dung này.

Bạn có thể dùng lại thuộc tính này.

expectsAcceptanceOf.eligibleRegion.@type

Text

Đặt thành Country.

expectsAcceptanceOf.eligibleRegion.name

Text

Mã quốc gia theo ISO 3166-1 alpha-2.

target

EntryPoint

Thông tin đặc tả về đường liên kết sâu, bao gồm cả thông tin về nền tảng được hỗ trợ. Bạn có thể sử dụng nhiều thuộc tính EntryPoint để xác định các đường liên kết sâu khác nhau cho các nhóm nền tảng khác nhau.

Bạn có thể dùng lại thuộc tính này.

target.@type

Text

Đặt thành EntryPoint.

target.actionPlatform

Text

(Các) nền tảng nơi đường liên kết sâu này hoạt động. Hãy sử dụng một trong các giá trị sau:

  • https://schema.org/DesktopWebPlatform
  • https://schema.org/AndroidPlatform
  • https://schema.org/IOSPlatform

Bạn có thể dùng lại thuộc tính này.

target.urlTemplate

URL

Đường liên kết trực tiếp đưa người dùng đến nội dung trên trang đích của cuốn sách.

Thuộc tính nên có
expectsAcceptanceOf.availabilityEnds

DateTime

Thời gian kết thúc của khung thời gian được phép đọc. Bạn có thể sử dụng thuộc tính này để kiểm soát thời điểm chính xác khi người dùng không đọc cuốn sách này được nữa.

expectsAcceptanceOf.availabilityStarts

DateTime

Thời gian bắt đầu của khung thời gian được phép đọc. Bạn có thể sử dụng thuộc tính này để kiểm soát thời điểm chính xác khi người dùng có thể bắt đầu đọc cuốn sách này.

expectsAcceptanceOf.price

Number

Giá mua sách. Phải có thuộc tính này khi category của thuộc tính Offer được đặt thành purchase hoặc rental.

expectsAcceptanceOf.priceCurrency

Text

Đơn vị tiền tệ của giá bán có định dạng ISO 4217 gồm ba chữ cái.

Ví dụ ReadAction:

"potentialAction": {
  "@type": "ReadAction",
  "target": {
    "@type": "EntryPoint",
    "urlTemplate": "https://example.com/purchase?bookId=170",
    "actionPlatform": [
      "https://schema.org/DesktopWebPlatform",
      "https://schema.org/AndroidPlatform",
      "https://schema.org/IOSPlatform"
    ]
  },
  "expectsAcceptanceOf": {
    "@type": "Offer",
    "category": "purchase",
    "price": "9.99",
    "priceCurrency": "USD",
    "availabilityStarts": "2018-04-01T11:01:00-04:00",
    "availabilityEnds": "2018-06-30T23:59:00-04:00",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

Ví dụ: ReadAction với nhiều thuộc tính EntryPoint:

"potentialAction": {
  "@type": "ReadAction",
  "target": [
    {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/purchase?bookId=170",
      "actionPlatform": [
        "https://schema.org/DesktopWebPlatform"
      ]
    },
    {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/mobile/purchase?bookId=170",
      "actionPlatform": [
        "https://schema.org/AndroidPlatform",
        "https://schema.org/IOSPlatform"
      ]
    }
  ],
  "expectsAcceptanceOf": [
    {
      "@type": "Offer",
      "category": "noLoginRequired",
      "availabilityStarts": "2018-04-01T11:01:00-04:00",
      "availabilityEnds": "2018-06-30T23:59:00-04:00",
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        },
        {
          "@type": "Country",
          "name": "GB"
        }
      ]
    },
    {
      "@type": "Offer",
      "category": "Subscription",
      "availabilityStarts": "2018-04-01T11:01:00-04:00",
      "availabilityEnds": "2018-06-30T23:59:00-04:00",
      "eligibleRegion": {
        "@type": "Country",
        "name": "IN"
      }
    }
  ]
}

BorrowAction (potentialAction)

Thuộc tính potentialAction sử dụng thực thể BorrowAction. BorrowAction xác định các đường liên kết sâu để truy cập sách, thư viện cung cấp sách và các tiêu chí mà người dùng phải đáp ứng. Các tiêu chí này có thể bao gồm tư cách thành viên, trạng thái đăng nhập, vị trí hoặc bất kỳ điều kiện nào khác cần đáp ứng để truy cập sách.

Thuộc tính bắt buộc
@type

Text

Đặt thành BorrowAction.

lender

LibrarySystem

Hệ thống thư viện cung cấp quyền truy cập vào ấn bản này.

lender.@id

URL

URL đến giá trị nhận dạng của LibrarySystem, phải được mô tả đầy đủ và phân cách trong nguồn cấp dữ liệu thư viện.

lender.@type

Text

Đặt thành LibrarySystem.

target

EntryPoint

Thông tin đặc tả về đường liên kết sâu, bao gồm cả thông tin về nền tảng được hỗ trợ. Để xác định các liên kết sâu cho các nhóm nền tảng khác nhau, hãy chỉ định một mảng EntryPoint.

Bạn có thể dùng lại thuộc tính này.

target.@type

Text

Đặt thành EntryPoint.

target.actionPlatform

Text

(Các) nền tảng nơi đường liên kết sâu này hoạt động. Hãy sử dụng một trong các giá trị sau:

  • https://schema.org/DesktopWebPlatform
  • https://schema.org/AndroidPlatform
  • https://schema.org/IOSPlatform

Bạn có thể dùng lại thuộc tính này.

target.urlTemplate

URL

Đường liên kết trực tiếp đưa người dùng đến nội dung trên trang đích của cuốn sách.

Ví dụ về BorrowAction:

"potentialAction": {
  "@type": "BorrowAction",
  "lender": {
    "@type": "LibrarySystem",
    "@id": "https://example.com/librarySystem/100"
  },
  "target": {
    "@type": "EntryPoint",
    "urlTemplate": "https://example.com/borrow?bookId=170",
    "actionPlatform": [
      "https://schema.org/DesktopWebPlatform",
      "https://schema.org/AndroidPlatform",
      "https://schema.org/IOSPlatform"
    ]
  }
}

Ví dụ: BorrowAction với nhiều thuộc tính EntryPoint:

"potentialAction": {
  "@type": "BorrowAction",
  "lender": {
    "@type": "LibrarySystem",
    "@id": "https://example.com/librarySystem/100"
  },
  "target": [
    {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/borrow?bookId=170",
      "actionPlatform": [
        "https://schema.org/DesktopWebPlatform"
      ]
    },
    {
      "@type": "EntryPoint",
`      "urlTemplate": "https://example.com/mobile/borrow?bookId=170",
      "actionPlatform": [
        "https://schema.org/AndroidPlatform",
        "https://schema.org/IOSPlatform"
      ]
    }
  ]
}

Thực thể Library

Bạn có thể xem định nghĩa đầy đủ về Library tại schema.org/Library. Tuy vậy, bạn chỉ cần chú ý đến những thuộc tính sau. Bạn phải xác định các thuộc tính bắt buộc cho mọi thư viện bạn chọn đưa vào nguồn cấp dữ liệu của mình. Bạn cũng có thể xác định các thuộc tính mà chúng tôi khuyên dùng để thêm thông tin về nội dung nhằm mang lại trải nghiệm tốt hơn cho người dùng.

Thực thể Library này là loại thực thể Library cấp cao nhất. Đây là một hệ thống trừu tượng, bao gồm một thực thể LibrarySystem và từng thực thể Library (member) cấp thấp hơn của thực thể LibrarySystem đó.

Nguồn cấp dữ liệu Library khác với nguồn cấp dữ liệu Book. Do đó, bất kỳ nguồn cấp dữ liệu Library nào bạn muốn triển khai phải hoàn toàn tách biệt khỏi nguồn cấp dữ liệu Book. Để biết thêm thông tin, hãy tham khảo cách Tạo nguồn cấp dữ liệu.

LibrarySystem

Thực thể LibrarySystem là khái niệm tượng trưng cho mạng lưới cộng tác của các thư viện thành viên.

Thuộc tính bắt buộc
@context Text

Đặt thành https://schema.org.

@id URL

Giá trị nhận dạng duy nhất trên toàn cầu cho hệ thống thư viện ở định dạng URL. Giá trị này cũng phải ổn định và không thay đổi theo thời gian. URL được coi là một chuỗi nguyên vẹn và không cần phải là một đường liên kết đang hoạt động. Miền mà bạn dùng cho giá trị @id phải thuộc sở hữu của tổ chức của bạn.

@type Text

Đặt thành LibrarySystem.

additionalProperty PropertyValue

Thuộc tính bổ sung dùng để xác định loại thư viện.

additionalProperty.@type Text

Đặt thành PropertyValue.

additionalProperty.name Text

Đặt thành librarytype.

additionalProperty.value Text

Loại thư viện. Hãy sử dụng một trong các giá trị sau:

  • public
  • academic
  • corporate
  • government
  • school
  • special
member Library

(Các) thành viên của hệ thống thư viện.

name Text

Tên hệ thống thư viện. Ví dụ: The Southwestern League of Libraries.

url URL

URL mà tại đó có thông tin giới thiệu hoặc mô tả về hệ thống thư viện. Google Tìm kiếm sử dụng đường liên kết này để đối chiếu nội dung trong nguồn cấp dữ liệu của bạn với nội dung trong cơ sở dữ liệu của Google. Đối với trang đích trong thực tế, Google Tìm kiếm sử dụng URL được cung cấp trong workExample.target.urlTemplate.

Library (member)

Thuộc tính member của thực thể LibrarySystem sử dụng thực thể Library (member). Library (member) đại diện cho một thành viên của thư viện trong một hệ thống thư viện nhất định.

Thuộc tính bắt buộc
@id URL

Giá trị nhận dạng duy nhất trên toàn cầu cho chi nhánh thư viện ở định dạng URL. Giá trị này cũng phải ổn định và không thay đổi theo thời gian. URL được coi là một chuỗi nguyên vẹn và không cần phải là một đường liên kết đang hoạt động. Miền mà bạn dùng cho giá trị @id phải thuộc sở hữu của tổ chức của bạn.

@type Text

Hãy đặt thành Library.

location PostalAddress

Địa chỉ đường phố của chi nhánh thư viện. Một số thuộc tính sẽ không được hỗ trợ ở một số quốc gia. Bạn phải sử dụng hết số thuộc tính có thể áp dụng cho địa chỉ của các thư viện.

Ví dụ về location ở Hoa Kỳ:


{
  "@type": "Library",
  "@id": "https://example.com/library-branches/1001",
  "name": "Campbell Library",
  "location": {
    "@type": "PostalAddress",
    "streetAddress": "77 Harrison Ave",
    "addressLocality": "Campbell",
    "addressRegion": "CA",
    "postalCode": "95008",
    "addressCountry": "US"
  }
}

Ví dụ về location ở Nhật Bản:


{
  "@type": "Library",
  "@id": "https://example.com/library-branches/1003",
  "name": "Tokyo Metropolitan Central Library",
  "location": {
    "@type": "PostalAddress",
    "streetAddress": "7-13-5 Minamiazabu, Minato City",
    "addressLocality": "Tokyo",
    "postalCode": "106-0047",
    "addressCountry": "JP"
  }
}
location.@type Text

Đặt thành PostalAddress.

location.addressCountry Text

Mã quốc gia ở định dạng ISO 3166-1. Ví dụ: US.

location.addressLocality Text

Thành phố. Ví dụ: Mountain View.

location.addressRegion Text

Khu vực. Ví dụ: CA.

location.postalCode Text

Mã bưu chính. Ví dụ: 94043.

location.streetAddress Text

Địa chỉ đường phố. Ví dụ: 1600 Amphitheatre Pkwy.

name Text

Tên của chi nhánh thư viện.

Ví dụ về nguồn cấp dữ liệu LibrarySystem ở định dạng JSON

{
   "@context": "https://schema.org",
   "@type":"LibrarySystem",
   "@id":"https://example.com/library-systems/100",
   "name":"Santa Clara County Library District",
   "additionalProperty":[
      {
         "@type":"PropertyValue",
         "name":"librarytype",
         "value":"public"
      }
   ],
   "member":[
      {
         "@type":"Library",
         "@id":"https://example.com/library-branches/1001",
         "name":"Campbell Library",
         "location":{
            "@type":"PostalAddress",
            "streetAddress":"77 Harrison Ave",
            "addressLocality":"Campbell",
            "addressRegion":"CA",
            "postalCode":"95008",
            "addressCountry":"US"
         }
      },
      {
         "@type":"Library",
         "@id":"https://example.com/library-branches/1002",
         "name":"Gilroy Library",
         "location":{
            "@type":"PostalAddress",
            "streetAddress":"350 W 6th St",
            "addressLocality":"Gilroy",
            "addressRegion":"CA",
            "postalCode":"95020",
            "addressCountry":"US"
         }
      }
   ]
}