angle-left null Mô hình chuyển đổi thông điệp dữ liệu công dân theo QCVN 109:2017/BTTTT giữa các tiêu chuẩn XML-JSON
Trang chủ

22/04/2020 08:21

(data.gov.vn) Cục Tin học hóa giới thiệu mô hình áp dụng ngôn ngữ JSON phù hợp với QCVN 109:2017/BTTTT để đáp ứng nhu cầu thực tế nhưng vẫn đảm bảo sự tuân thủ cấu trúc của QCVN 109:2017/BTTTT, tạo điều kiện...

TỔNG QUAN

 

1.   Giới thiệu chung

Ngày 04/4/2017, Bộ Thông tin và Truyền thông đã có Thông tư số 02/2017/TT-BTTTT ban hành “quy chuẩn kỹ thuật quốc gia về cấu trúc thông điệp dữ liệu công dân trao đổi với cơ sở dữ liệu quốc gia về dân cư” (QCVN 109:2017/BTTTT). Quy chuẩn QCVN 109:2017/BTTTT quy định cụ thể về cấu trúc các thông điệp dữ liệu chứa thông tin công dân khi trao đổi với CSDLQG về dân cư để bảo đảm sự tương hợp và dễ dàng trong trao đổi, xử lý, thống nhất dữ liệu có liên quan đến dân cư.

Trong Quy chuẩn QCVN 109:2017/BTTTT quy định cấu trúc dữ liệu công dân được trao đổi bằng ngôn ngữ XML giữa các hệ thống thông tin. Tuy nhiên, hiện nay, ngôn ngữ JSON cũng thường được sử dụng để trao đổi dữ liệu trên mạng internet, trong một hệ thống thông tin giữa trình duyệt và máy chủ hoặc giữa các hệ thống thông tin. So sánh JSON với XML thì JSON nhỏ và nhẹ hơn nhưng các công nghệ phụ trợ để đảm bảo sự chặt chẽ về dữ liệu thì hạn chế hơn XML. Vì vậy, JSON chủ yếu được sử dụng để truyền tải dữ liệu trong một hệ thống giữa trình duyệt và hệ thống phần mềm lớp giữa.

XML hay JSON đều có định dạng văn bản và đều có khả năng tự mô tả cấu trúc của dữ liệu trong bản thân dữ liệu được trao đổi. Tuy nhiên, nếu không được mô tả cấu trúc trước sẽ làm hạn chế trao đổi do không thể xử lý hoàn toàn tự động bằng các hệ thống thông tin. QCVN 109 đã quy định cấu trúc dữ liệu lõi của công dân khi trao đổi với CSDLQG về dân cư và quy định cụ thể lược đồ dữ liệu XMLSchema kèm theo. Tuy nhiên JSON thì không được quy định để sử dụng trong Quy chuẩn này.

Xuất phát từ sự phổ biến của ngôn ngữ JSON trong trao đổi dữ liệu, Cục Tin học hóa đã nghiên cứu mô hình áp dụng ngôn ngữ JSON phù hợp với QCVN 109:2017/BTTTT để đáp ứng nhu cầu thực tế nhưng vẫn đảm bảo sự tuân thủ cấu trúc của QCVN 109:2017/BTTTT, tạo điều kiện thuận lợi để trao đổi dữ liệu trong trao đổi dữ liệu nội bộ của một hệ thống thông tin và giữa các hệ thống thông tin, với CSDLQG về dân cư, đảm bảo dữ liệu là thông suốt, nhất quán về cấu trúc và thông tin mặc dù có thể xử lý qua nhiều ngôn ngữ khác nhau.

2.  Ngôn ngữ JSON

Thông tư số 39/2017/TT-BTTTT ngày 15 tháng 12 năm 2017 của Bộ Thông tin và Truyền thông ban hành danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định các tiêu chuẩn về tích hợp dữ liệu trong đó XML, XMLSchema là các tiêu chuẩn bắt buộc áp dụng. Bên cạnh đó trong Thông tư, JSON cũng được quy định là định dạng trao đổi dữ liệu mô tả đối tượng dạng kịch bản JavaScript được khuyến nghị áp dụng. JSON là một định dạng tương đương XML trong một số trường hợp nhất định để mã hóa dữ liệu trao đổi. JSON là một kiểu định dạng dữ liệu thuần văn bản. Định dạng JSON sử dụng các cặp key - value để dữ liệu sử dụng. Giống như tên gọi của tiêu chuẩn JSON, JSON thường dược sử dụng làm ngôn ngữ trao đổi dữ liệu trên mạng giữa giao diện trình duyệt và máy chủ trong đó sử dụng bộ xử lý JavaScript trên trình duyệt để xử lý dữ liệu được định dạng theo format JSON trong các AJAX request.

Một số các công nghệ/tiêu chuẩn gắn liền với JSON tương đương với mục đích trong XML bao gồm: JSON Schema tương đương với XML Schema trong ngôn ngữ XML. JSON Schema là một bộ từ vựng cho phép quy định cấu trúc của dữ liệu JSON và phục vụ thẩm tra dữ liệu JSON. JSON for Linked Data (JSON-LD) là tiêu chuẩn quy định liên kết dữ liệu JSON tương đương RDF trong ngôn ngữ XML. Các tiêu chuẩn này không được quy định trong Thông tư số 39/2017/TT-BTTTT nhưng cũng cần tham khảo để sử dụng trong quá trình chuyển đổi phù hợp. Trong mô hình chuyển đổi JSON-LD được sử dụng để chỉ thị bối cảnh (context) của dữ liệu JSON theo không gian tên được quy định tại QCVN 109:2017/BTTTT.

3.  Sự cần thiết mô hình chuyển đổi thông điệp dữ liệu XML-JSON

XML hay JSON đều được sử dụng dụng đa dạng và đồng thời trong các hệ thống thông tin và giữa các hệ thống thông tin. Mỗi một tiêu chuẩn có lợi thế riêng khi sử dụng và các hệ thống được xây dựng tận dụng tối đa lơi thế đó. Tuy nhiên, để đảm bảo dữ liệu thông suốt thì dữ liệu được chia sẻ, trao đổi bằng bất cứ định dạng ngôn ngữ nào thì giá trị dữ liệu cũng phải được bảo toàn, xử lý nhất quán. Vì vậy, việc chuyển đổi dữ liệu giữa các định dạng đặc biệt là các định dạng XML và JSON là cần thiết và việc dữ liệu chuyển đổi qua lại giữa các định dạng khác nhau phải được bảo toàn nguyên vẹn và duy trì sự tuân thủ về cấu trúc và giá trị cần phải có một mô hình thống nhất để quy định sự chuyển đổi này.

JSON và XML có sự khác biệt nhất định. Nếu không có mô hình quy định chuyển đổi dữ liệu giữa XML và JSON sẽ nảy sinh một số trường hợp sau:

-       Dữ liệu dân cư được khai thác từ CSLDQG theo định dạng XML tuân thủ QCVN 109:2017/BTTTT nhưng khi xử lý trong nội bộ HTTT hoặc kết nối với hệ thống thông tin khác sử dụng JSON có thể dẫn đến sự sai lệch do dữ liệu XML khai thác là không đầy đủ do giới hạn về thẩm quyền khai thác hoặc sự đầy đủ về thông tin của người dân. Việc không đầy đủ dẫn đến mỗi một mẫu dữ liệu XML khác nhau sẽ chuyển sang cấu trúc định dạng JSON khác nhau.

-       Dữ liệu sau khi xử lý trong HTTT dưới định dạng JSON chuyển ngược về định dạng XML không được bảo toàn dẫn đến sự sai lệch về dữ liệu.

-       Sự đa dạng về cấu trúc sẽ dẫn đến sự đòi hỏi nỗ lực nhiều hơn trong quá trình triển khai các hệ thống thông tin.

Trong quá trình nghiên cứu, Cục Tin học hóa đã sử dụng nhiều các công cụ chuyển đổi tự động có sẵn để chuyển đổi tự động giữa XML-JSON nhưng kêt quả đều không đáp ứng yêu cầu. Quá trình chuyển đổi từ XML sang JSON và chuyển ngược lại XML làm cho thông điệp phá vỡ sự tuân thủ QCVN 109:2017/BTTTT. Mỗi thông điệp định dạng JSON được chuyển từ XML có cấu trúc không ổn định tùy thuộc vào phạm vi dữ liệu của thông điệp XML. Vì vậy, Cục Tin học hóa đã xây dựng mô hình chuyển đổi XML-JSON và cung cấp cho các cơ quan, đơn vị để đáp ứng nhu cầu.

II.        MÔ HÌNH CHUYỂN ĐỔI XML-JSON

 1.  Mô hình chuyển đổi

QCVN 109:2017/BTTTT không yêu cầu sử dụng lược đồ JSON Schema để đi kèm với thông điệp JSON, chỉ yêu cầu cấu trúc dữ liệu JSON phải đáp ứng đúng về mặt cấu trúc và giá trị được quy định tại QCVN 109:2017/BTTTT. Trong trường hợp các cơ quan, đơn vị cần kiểm soát cặt chẽ dữ liệu JSON của mình khi trao đổi có thể tự xây dựng các lược đồ JSON Schema để sử dụng. Cấu trúc và ràng buộc JSON Schema phải đáp ứng đúng cấu trúc và quy định ràng buộc tại QCVN 109:2017/BTTTT.

Quá trình chuyển sang thông điệp dữ liệu theo ngôn ngữ JSON theo mô hình sau:

Bên trái là cấu trúc thông điệp dữ liệu quy định bởi QCVN 109:2017/BTTTT chuyển sang cấu trúc dữ liệu JSON theo mô hình bên phải.

Nguyên tắc chuyển đổi:

-  Trong JSON, bổ sung ngữ cảnh theo tiêu chuẩn JSON-LD để tham chiếu sang không gian tên của QCVN 109:2017/BTTTT.

-  Phần tử dữ liệu gốc trong XML được chuyển thành một phần tử dữ liệu trong JSON theo sau phần tử ngữ cảnh @context.

-  Tên các phần tử, thuộc tính được quy định tại XML Schema được giữ nguyên thành tên các phần tử trong JSON

-  Giữa nguyên cách thức biểu diễn giá trị dữ liệu giữa XML và JSON

-  Các phần tử dữ liệu trong XMLSchema có số lượng minOccurs="1" maxOccurs="1" khi chuyển sang JSON là phần tử dữ liệu đơn.

-  Các phần tử dữ liệu trong XMLSchema có số lượng nhiều hơn 1 minOccurs="0" maxOccurs="unbound" khi chuyển sang JSON là phần tử dữ liệu là mảng dữ liệu.

-  Dữ liệu không xuất hiện trong XML cũng sẽ không xuất hiện trong JSON tương ứng, không phát sinh các đối tượng trống, thẻ trống.

Cụ thể việc chuyển đổi nội dung các thành phần chính như sau:

-       Đưa chỉ thị ngữ cảnh QCVN 109:2017/BTTTT vào thông điệp JSON. Việc đưa ngữ cảnh vào được xác định theo tiêu chuẩn JSON-LD để chỉ rõ toàn bộ các tên đối tượng dữ liệu trong thông điệp được định nghĩa tương ứng trong không gian tên http://www.mic.gov.vn/dancu/1.0 tương ứng với không gian tên của XML Schema trong XML. Cấu trúc của ngữ cảnh như sau:

{

  "@context": "http://www.mic.gov.vn/dancu/1.0",

//Nội dung của dữ liệu CongdanCollection

}

Chỉ thị này tương đương với xmlns ="http://www.mic.gov.vn/dancu/1.0" trong ngôn ngữ XML.

-       Chuyển phần tử CongdanCollection vào thông điệp với danh sách các thuộc tính tương ứng. Các thuộc tính và giá trị của thuộc tính SoCongDan, ThoiDiemDuLieu, GhiChu giữ nguyên, bỏ các chỉ thị xmls trong XML không còn cần thiết trong JSON.

<dc:CongdanCollection

GhiChu="Ví dụ thông điệp dữ liệu"

ThoiDiemDuLieu="2017-01-01T00:00:00"

SoCongDan = "2" xmlns:dc="http://www.mic.gov.vn/dancu/1.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

“CongdanCollection”:{

"GhiChu": "Ví dụ thông điệp dữ liệu",

"ThoiDiemDuLieu": "2017-01-01T00:00:00",

"SoCongDan": 2,

-       Danh sách các công dân được chuyển thành một mảng Congdan trong JSON. Trong XML, các phần tử dữ liệu được liệt kê liên tiếp dưới dạng:

     

xsd:element name="CongDan" type="Dancu:CongDanStructure"

                           minOccurs="0" maxOccurs="unbounded">

   

Thì trong JSON, được chuyển thành mảng các công dân dưới dạng

“Congdan”: [{},{},... ]

Lưu ý: ngay cả trong thông điệp gốc chỉ có 1 công dân thì trong JSON cũng được chuyển thành mảng “Congdan”: [{}] để tương thích về mặt cấu trúc.

-       Nội dung thông tin của từng công dân được chuyển sang JSON tương ứng như sau:

<dc:CongDan>

....

dc:CongDan>

{

 

}

Thông tin các công dân trong JSON cách nhau bởi dấu phảy “,”

Một số lưu ý khi chuyển đổi:

-  Thuộc tính QuocGia trong cấu trúc địa chỉ xuất hiện một lần nên khi chuyển sang JSON là cặp key-value có giá trị đơn. Ví dụ: "QuocTich": "VN". Tuy nhiên thuộc tính QuocTich trong dữ liệu công dân hoặc các cá nhân có mối quan hệ với công dân có thể xuất hiện nhiều lần nên cặp key-value có thể chứa nhiều giá trị mặc dù thông thường một cá nhân chỉ có quốc tịch Việt Nam. Ví dụ: "QuocTich": ["VN"]


Tin xem nhiều

placeholder image

Các câu hỏi để kiểm tra mức độ an toàn khi chia sẻ dữ liệu