HocThuatSo.comHọc Thuật Số
Gửi thư
Cơ sở dữ liệu học thuật mở

Crossref REST API: tra siêu dữ liệu bài báo và tạp chí bằng dòng lệnh

Dùng Crossref REST API để tra siêu dữ liệu theo DOI, theo ISSN tạp chí, theo tên; lấy danh sách bài của một tạp chí, nguồn tài trợ, giấy phép; gọi lịch sự kèm email và lưu thành bảng.

Crossref REST API: tra siêu dữ liệu bài báo và tạp chí bằng dòng lệnh

Crossref REST API cho tra siêu dữ liệu miễn phí, không cần đăng ký: /works/{DOI} trả một bài, /journals/{ISSN}/works trả mọi bài của một tạp chí, /works?query.bibliographic= tìm theo trích dẫn. Thêm tham số mailto để được xếp vào nhóm gọi lịch sự.

Crossref là tổ chức đăng ký DOI cho phần lớn bài báo học thuật, kể cả nhiều tạp chí Việt Nam. Mỗi lần một tạp chí đăng ký DOI, họ gửi kèm siêu dữ liệu: tiêu đề, tác giả, ngày, nguồn tài trợ, giấy phép, đôi khi cả danh sách tài liệu tham khảo. API công khai cho bạn đọc lại tất cả những thứ đó bằng dòng lệnh. Với biên tập viên tạp chí, đây cũng là cách kiểm siêu dữ liệu mình đã gửi có đúng không.

Các điểm cuối hay dùng

Máy chủ API của Crossref nằm ở tên miền api.crossref.org. Các điểm cuối dưới đây ghép vào sau địa chỉ đó:

Điểm cuốiTrả vềDùng khi
/works/{DOI}Một bản ghiKiểm siêu dữ liệu một bài
/works?query.bibliographic=…Danh sách khớp gần đúngCó trích dẫn dạng chữ, cần tìm DOI
/journals/{ISSN}Thông tin tạp chí và thống kêXem tạp chí đã đăng ký bao nhiêu DOI
/journals/{ISSN}/worksBài của một tạp chíLấy toàn bộ bài một tạp chí
/funders/{id}/worksBài khai một nhà tài trợTìm bài của một quỹ
/members/{id}Thông tin thành viên CrossrefXem nhà xuất bản đã gửi những gì

Kết quả trả về là JSON. Với dòng lệnh, ghép curl với công cụ jq để rút đúng trường cần xem; với phân tích, dùng Python hoặc R.

Một lưu ý về DOI trong đường dẫn: DOI có thể chứa ký tự như dấu gạch chéo, dấu ngoặc hay dấu chấm phẩy. Khi ghép vào đường dẫn gọi API, mã hoá DOI theo kiểu mã hoá đường dẫn trước khi gửi; thư viện requests làm việc này nếu bạn truyền qua tham số, còn khi ghép chuỗi tay thì phải tự mã hoá. DOI không phân biệt chữ hoa chữ thường, nên chuẩn hoá về chữ thường trước khi so khớp hai danh sách.

Tra theo DOI, theo ISSN, theo tên

Theo DOI

Gọi /works/ rồi tới DOI. Trường message chứa bản ghi: title, author (danh sách, mỗi người có given, family, có thể có ORCID và affiliation), container-title là tên tạp chí, issued là ngày xuất bản, is-referenced-by-count là số lần được trích trong dữ liệu Crossref.

Theo ISSN

/journals/{ISSN} cho biết tạp chí đã đăng ký bao nhiêu DOI và tỷ lệ bản ghi có từng loại siêu dữ liệu, như tóm tắt, ORCID, nguồn tài trợ, giấy phép, tài liệu tham khảo. Biên tập viên dùng số liệu này để biết siêu dữ liệu của tạp chí mình đang thiếu gì.

Theo tên hoặc trích dẫn

query.bibliographic nhận cả một trích dẫn dạng chữ và trả các ứng viên xếp theo điểm khớp. Đừng tin ứng viên đầu tiên một cách máy móc: so tiêu đề, năm, tác giả rồi mới nhận. Có thêm query.author và query.container-title để thu hẹp.

Bộ lọc nguồn tài trợ, giấy phép và loại tài liệu

Cú pháp chung. Tham số filter nhận nhiều điều kiện cách nhau bằng dấu phẩy, ví dụ filter=from-pub-date:2020-01-01,until-pub-date:2024-12-31,type:journal-article.

Có nguồn tài trợ. has-funder:true giữ bài có khai nhà tài trợ; trường funder trong bản ghi cho tên, mã nhà tài trợ và số hiệu đề tài nếu tạp chí gửi.

Có giấy phép. has-license:true giữ bài có khai giấy phép; trường license cho đường dẫn giấy phép, ví dụ một giấy phép Creative Commons, và ngày áp dụng.

Có tóm tắt, có ORCID. has-abstract:true, has-orcid:true giúp đo mức đầy đủ siêu dữ liệu của một tạp chí.

Đếm theo nhóm. Tham số facet, như facet=type-name:*, trả số lượng theo nhóm mà không phải tải bản ghi.

Lấy toàn bộ bài của một tạp chí và lưu thành bảng

Tham số rows tối đa 1.000 bản ghi mỗi lần gọi. Phân trang bằng offset bị giới hạn ở phần đầu tập kết quả, nên với tập lớn dùng con trỏ cursor:

  1. Gọi /journals/{ISSN}/works với rows=1000, cursor=*, mailto= địa chỉ thư của bạn, và select=DOI,title,author,issued,funder,license để chỉ lấy trường cần.
  2. Đọc message.total-results để biết tổng số, và message.next-cursor để gọi trang sau.
  3. Lặp tới khi danh sách items trả về rỗng.
  4. Mỗi bản ghi, rút tiêu đề phần tử đầu của title, năm từ issued.date-parts, danh sách tác giả ghép từ family và given.
  5. Ghi CSV mã hoá UTF-8, kèm một dòng ghi chú ngày truy xuất ở tệp riêng.

Với Python, gói habanero bọc sẵn API Crossref; với R có gói rcrossref. Tự gọi bằng requests cũng chỉ vài chục dòng.

Tìm DOI cho cả danh sách tài liệu tham khảo

Bài toán

Một tình huống rất thường gặp với biên tập viên và người làm tổng quan: có một danh sách tài liệu tham khảo dạng chữ, vài chục tới vài trăm dòng, cần bổ sung DOI cho từng dòng. Làm tay thì mất cả buổi. Với query.bibliographic, việc này thành một vòng lặp ngắn.

Cách làm

Đọc từng dòng trích dẫn, gửi nguyên dòng vào /works?query.bibliographic= kèm rows=3 và mailto. Lấy ứng viên có điểm score cao nhất, rồi so ba thứ: năm trong issued, họ của tác giả đầu trong author, và vài từ đầu của title. Khớp cả ba thì nhận DOI; lệch một thì đánh dấu để kiểm tay.

Không đặt một ngưỡng điểm cố định cho mọi danh sách. Điểm khớp phụ thuộc độ dài trích dẫn và độ đầy đủ siêu dữ liệu, nên so các trường cụ thể đáng tin hơn.

Những dòng không tìm được

Sách cũ, luận án, báo cáo, văn bản pháp luật thường không có DOI Crossref. Bài ở tạp chí đăng ký DOI qua tổ chức khác, như DataCite cho bộ dữ liệu, cũng không xuất hiện ở đây. Với các dòng này, giữ nguyên trích dẫn chữ và không ép gán một DOI gần giống, vì DOI sai còn tệ hơn không có DOI.

Gọi lịch sự: vì sao nên ghi email liên hệ

Crossref chia người gọi API công khai thành nhóm có danh tính và nhóm vô danh. Khi bạn thêm mailto= địa chỉ thư vào tham số, hoặc ghi địa chỉ thư trong User-Agent, yêu cầu được xếp vào nhóm gọi lịch sự (polite pool). Nhóm này thường ổn định hơn, và nếu đoạn mã của bạn gây vấn đề, Crossref liên hệ được với bạn thay vì chặn.

Ngoài ra nên giữ nhịp gọi vừa phải, đọc các tiêu đề phản hồi về giới hạn tốc độ, và dừng lại khi nhận mã 429. Dự án cần lượng lớn có thể dùng bản dữ liệu công khai Crossref phát hành định kỳ hoặc dịch vụ trả phí Metadata Plus, chi tiết xem trên trang Crossref.

Tình huống của biên tập viên tạp chí trong nước

Biên tập viên có thể tự kiểm chất lượng siêu dữ liệu đã gửi Crossref mà không cần nhờ ai. Bảng dưới gom những kiểm tra đáng làm:

Kiểm traCách làmNếu thiếu thì sao
Tóm tắt có được gửi khôngĐếm bài có has-abstract:true trên tổng sốCơ sở chỉ mục và công cụ tìm kiếm thấy ít thông tin hơn
ORCID tác giảLọc has-orcid:trueBài khó tự vào hồ sơ ORCID của tác giả
Tài liệu tham khảoXem tỷ lệ trong /journals/{ISSN}Trích dẫn từ bài của tạp chí không được đếm
Giấy phépLọc has-license:trueNgười đọc và máy không biết được phép dùng lại thế nào
Tên tác giả đúng thứ tựĐọc mẫu vài bản ghiTên Việt bị đảo họ tên trên các cơ sở khác

Siêu dữ liệu sai có thể sửa bằng cách gửi lại bản ghi qua hệ thống đăng ký DOI của tạp chí. Với tạp chí dùng OJS, việc gửi lại thường làm qua plugin Crossref trong phần quản trị.

Câu hỏi thường gặp

Có cần khoá API để dùng Crossref REST API không?

Không cần cho API công khai. Nên thêm tham số mailto với địa chỉ thư của bạn để được xếp vào nhóm gọi lịch sự. Dịch vụ trả phí Metadata Plus dùng khoá riêng.

Vì sao bài có DOI mà không có tóm tắt trên Crossref?

Vì tóm tắt là trường không bắt buộc, tạp chí có gửi hay không là tuỳ. Nếu bạn là biên tập viên, hãy bật gửi tóm tắt trong cấu hình đăng ký DOI.

Số is-referenced-by-count có giống số trích dẫn Scopus không?

Không. Con số này chỉ đếm trích dẫn từ những bài mà nhà xuất bản đã gửi danh sách tài liệu tham khảo cho Crossref, nên thường khác Scopus hay Google Scholar.

Lấy được bao nhiêu bản ghi mỗi lần gọi?

Tham số rows cho tối đa 1.000 bản ghi một lần. Tập lớn hơn nên phân trang bằng cursor thay vì offset.

Tạp chí Việt Nam có thể tra trên Crossref không?

Được, nếu tạp chí đăng ký DOI qua Crossref. Gọi điểm cuối journals với ISSN của tạp chí để xem đã đăng ký bao nhiêu DOI.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

🧭
Bạn đang ở chặng nào của đường học vị?
Nhập chỗ bạn đang đứng và đích bạn nhắm — công cụ trả về số năm, chi phí và việc phải làm từng chặng.
Xem lộ trình của tôi →
Miễn phí, không cần tài khoản. Xem tất cả công cụ

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
[email protected]