RDFa
Mở rộng HTML cho phép nhúng siêu dữ liệu theo chuẩn RDF thông qua các thuộc tính như property, typeof, resource.
RDFa là gì?
RDFa (Resource Description Framework in Attributes) là một tập hợp thuộc tính HTML được thiết kế để nhúng siêu dữ liệu theo chuẩn RDF (Resource Description Framework) trực tiếp vào mã nguồn trang web. Nó cho phép các nhà phát triển thêm thông tin có cấu trúc — như tên tác giả, ngày xuất bản, loại nội dung hoặc đánh giá — mà máy móc (ví dụ: công cụ tìm kiếm, trình đọc màn hình, hệ thống phân tích dữ liệu) có thể hiểu và xử lý dễ dàng.
RDFa không thay đổi cách hiển thị nội dung với người dùng, nhưng mở rộng khả năng mô tả ngữ nghĩa của từng phần tử HTML thông qua các thuộc tính như property, typeof, resource, prefix, about và datatype. Đây là một trong ba định dạng chính hỗ trợ dữ liệu có cấu trúc trên web, bên cạnh Microdata và JSON-LD.
Tại sao quan trọng trong SEO?
RDFa giúp công cụ tìm kiếm hiểu rõ hơn về nội dung và bối cảnh của trang — từ đó cải thiện khả năng hiển thị trong kết quả tìm kiếm nâng cao như rich snippets, knowledge panels hoặc featured snippets. Mặc dù Google ưu tiên JSON-LD cho dữ liệu có cấu trúc, RDFa vẫn được hỗ trợ đầy đủ và đặc biệt hữu ích khi bạn không thể chỉnh sửa phần <head> hoặc cần gắn siêu dữ liệu vào nội dung động do CMS tạo ra (ví dụ: WordPress với plugin hỗ trợ RDFa).
Với RDFa, bạn có thể mô tả chính xác: sản phẩm, bài viết, sự kiện, tổ chức, địa điểm, đánh giá… — tất cả đều góp phần tăng độ tin cậy và khả năng hiển thị có cấu trúc. Ngoài ra, RDFa còn hỗ trợ tốt cho các hệ sinh thái mở như Schema.org, FOAF hay Dublin Core, giúp dữ liệu dễ tích hợp với các nền tảng khác ngoài Google.
Cách hoạt động
RDFa xây dựng mô hình dữ liệu dựa trên bộ ba chủ thể – vị từ – đối tượng (subject-predicate-object), tương ứng với:
- Chủ thể: thực thể được mô tả (ví dụ: một bài viết — được xác định bằng thuộc tính
abouthoặcresource); - Vị từ: thuộc tính hoặc mối quan hệ (ví dụ:
schema:name,schema:author— khai báo quapropertyhoặcrel); - Đối tượng: giá trị của thuộc tính (ví dụ: tên tác giả “Nguyễn Văn A” — có thể là văn bản con hoặc URI).
Mỗi phần tử HTML có thể đóng vai trò là chủ thể, đồng thời chứa nhiều vị từ và đối tượng. Các tiền tố (prefix) như schema: hoặc dc: được khai báo một lần (thường ở thẻ cha hoặc <html>) để rút gọn cú pháp.
Hướng dẫn thực hiện
- Xác định mục tiêu dữ liệu: Chọn loại schema phù hợp (ví dụ:
Article,LocalBusiness,Product) tại schema.org. - Khai báo tiền tố: Thêm thuộc tính
prefixvào thẻ cha (thường là<html>hoặc<div>):<div prefix="schema: https://schema.org/"> - Gắn kiểu thực thể: Dùng
typeofđể chỉ định lớp schema:<article typeof="schema:Article"> - Mô tả thuộc tính: Dùng
propertycho mỗi trường dữ liệu:<h1 property="schema:headline">Tiêu đề bài viết</h1><time property="schema:datePublished" datetime="2024-03-15">15/03/2024</time> - Xác định chủ thể rõ ràng (nếu cần): Dùng
abouthoặcresourcekhi mô tả thực thể ngoài nội dung hiển thị (ví dụ: liên kết đến tài nguyên bên ngoài). - Kiểm tra kết quả: Dùng Google Search Console (tab “Hiệu suất > Dữ liệu có cấu trúc”) hoặc Schema Markup Validator để xác minh.
Lỗi thường gặp
- Thiếu khai báo
prefixhoặc khai báo sai URI: Gây lỗi phân tích. Cách khắc phục: Kiểm tra lại định dạng URI (phải kết thúc bằng dấu gạch chéo, ví dụhttps://schema.org/, không phảihttps://schema.org). - Dùng
propertytrên phần tử không cótypeofhoặcabout: Một số công cụ có thể bỏ qua dữ liệu. Cách khắc phục: Đảm bảo mọipropertynằm trong phạm vi của một chủ thể rõ ràng. - Trộn lẫn RDFa với Microdata hoặc JSON-LD cho cùng một thực thể: Có thể gây mâu thuẫn trong phân tích. Cách khắc phục: Chọn một định dạng duy nhất cho mỗi loại dữ liệu; nếu bắt buộc dùng nhiều định dạng, đảm bảo chúng mô tả các thực thể khác nhau.
- Bỏ sót thuộc tính bắt buộc (ví dụ:
schema:mainEntityOfPagetrongArticle): Không làm hỏng markup, nhưng giảm khả năng hiển thị rich result. Cách khắc phục: Xem tài liệu chính thức schema.org để kiểm tra yêu cầu bắt buộc theo loại.
Ví dụ thực tế
Dưới đây là đoạn HTML sử dụng RDFa để mô tả một bài viết tin tức:
<article typeof="schema:Article" prefix="schema: https://schema.org/">
<h1 property="schema:headline">Cách tối ưu hóa RDFa cho website Việt Nam</h1>
<div property="schema:author" typeof="schema:Person">
<span property="schema:name">Lê Minh Tuấn</span>
</div>
<time property="schema:datePublished" datetime="2024-04-10">10/04/2024</time>
<div property="schema:articleBody">
<p>RDFa giúp nhúng siêu dữ liệu trực tiếp vào HTML…</p>
</div>
<link property="schema:mainEntityOfPage" href="https://example.com/rdfa-la-gi" />
</article>
Câu hỏi thường gặp
RDFa có còn được Google hỗ trợ không?
Có. Google vẫn hỗ trợ RDFa đầy đủ cho việc phân tích dữ liệu có cấu trúc, dù khuyến khích dùng JSON-LD vì tính linh hoạt và dễ bảo trì hơn. RDFa vẫn hợp lệ và có thể kích hoạt rich result nếu triển khai đúng.
RDFa khác gì so với Microdata?
Cả hai đều nhúng dữ liệu có cấu trúc vào HTML, nhưng RDFa tuân thủ chuẩn RDF và hỗ trợ nhiều tiền tố (schema:, dc:, foaf:…) trong cùng một phần tử, trong khi Microdata chỉ làm việc với một vocabulary duy nhất mỗi lần. RDFa cũng cho phép khai báo chủ thể ngoài nội dung hiển thị (qua resource), điều Microdata không hỗ trợ.
Có nên dùng RDFa thay vì JSON-LD cho Technical SEO?
Tùy trường hợp. Nếu bạn kiểm soát toàn bộ mã nguồn và có thể đặt JSON-LD trong <head>, JSON-LD là lựa chọn ưu tiên. Nếu bạn làm việc với CMS hạn chế (không chỉnh được head), hoặc cần gắn dữ liệu vào từng khối nội dung động (ví dụ: bình luận, widget), RDFa là giải pháp thực tế và đáng tin cậy.
| Tính năng | RDFa | Microdata | JSON-LD |
|---|---|---|---|
| Vị trí triển khai | Bất kỳ phần tử HTML nào | Bất kỳ phần tử HTML nào | Chủ yếu trong <head> hoặc <body> (dạng script) |
| Hỗ trợ nhiều vocabulary | Có (qua prefix) |
Không (một itemtype duy nhất) | Có (qua @context) |
| Dễ kiểm tra lỗi | Khó hơn (phụ thuộc vào cấu trúc DOM) | Trung bình | Dễ nhất (độc lập với HTML) |
| Hỗ trợ bởi Google | Có | Có | Ưu tiên hàng đầu |