Hướng dẫn cho nhà phát triển DSPL

DSPL là viết tắt của Dataset Publishing Language (Ngôn ngữ xuất bản tập dữ liệu). Đây là định dạng đại diện cho cả siêu dữ liệu (thông tin về tập dữ liệu, chẳng hạn như tên và nhà cung cấp tập dữ liệu, cũng như khái niệm về tập dữ liệu này) và dữ liệu thực tế của tập dữ liệu. Bạn có thể nhập các tập dữ liệu được mô tả ở định dạng này vào Trình khám phá dữ liệu công khai của Google – một công cụ cho phép dữ liệu phong phú và giàu hình ảnh.

Lưu ý: Để tải dữ liệu lên Google Public Data bằng công cụ tải lên Dữ liệu công khai, bạn phải có Tài khoản Google.

Tài liệu này dành cho những chủ sở hữu dữ liệu muốn nội dung của họ xuất hiện trong Public Data Explorer. Phần này nằm ngoài Hướng dẫn bằng cách tìm hiểu sâu hơn về chi tiết của giản đồ DSPL và các tính năng được hỗ trợ. Chỉ có một giả lập cơ bản về XML được giả định, mặc dù kiến thức về cơ sở dữ liệu quan hệ cũng rất hữu ích.

Mặc dù đây không phải là yêu cầu bắt buộc, nhưng bạn nên đọc Hướng dẫn. Phần này sẽ ngắn gọn và dễ hiểu hơn trước khi bạn xem tài liệu này.

Tổng quan

Tập dữ liệu DSPL là một tệp .zip chứa một tệp XML và một tập hợp các tệp CSV. Tệp CSV là các bảng đơn giản chứa dữ liệu của tập dữ liệu, trong khi tệp XML mô tả siêu dữ liệu của tập dữ liệu. Loại sau bao gồm siêu dữ liệu thông tin như mô tả về các biện pháp cũng như siêu dữ liệu có cấu trúc như thông tin tham chiếu giữa các bảng. Siêu dữ liệu này cho phép những người dùng không phải chuyên gia khám phá và trực quan hoá dữ liệu của bạn.

Quy trình

Nhìn chung, quá trình tạo tập dữ liệu DSPL như sau (một số bước có thể diễn ra song song):

  1. Tạo tệp XML DSPL.
  2. Xác định bất kỳ nguồn dữ liệu bên ngoài nào để sử dụng trong tập dữ liệu của bạn.
  3. Xác định khái niệm, lát cắt và chủ đề (không bắt buộc). Liên tục cập nhật nội dung của tệp DSPL.
  4. Xuất dữ liệu nguồn sang tệp .csv.
  5. Tạo tập dữ liệu DSPL.
  6. Gửi tập dữ liệu cho Google.

Cấu trúc XML

Tổng quan

Tệp XML DSPL xác định siêu dữ liệu của tập dữ liệu, bao gồm mối quan hệ cấu trúc giữa các khái niệm, lát cắt, chủ đề và bảng. Mặc dù bạn có thể tạo tệp này theo cách thủ công, nhưng các công cụ và tập lệnh xử lý dữ liệu có thể đơn giản hoá đáng kể quy trình này. Xem tệp DSPL mẫu trong một cửa sổ mới.

Tệp này bao gồm một số phần, được tóm tắt trong bảng dưới đây. Theo bảng này, chúng tôi sẽ mô tả từng phần trước một cách chi tiết hơn.

Mục Tóm tắt Thông tin khác
Tiêu đề và mục nhập Phần tử mẹ cho tất cả các phần tử khác của tập dữ liệu. Bao gồm vùng chứa tên mục tiêu (tức là giá trị nhận dạng) cho tập dữ liệu cùng với không gian tên của bất kỳ tập dữ liệu nào đã nhập. Tài liệu
Thông tin về tập dữ liệu Tên, nội dung mô tả và URL của tập dữ liệu. Tài liệu
Thông tin về nhà cung cấp Tên, nội dung mô tả và URL của nhà cung cấp tập dữ liệu. Tài liệu
Khái niệm

Định nghĩa về "sự vật" xuất hiện trong tập dữ liệu (ví dụ: quốc gia, tỷ lệ thất nghiệp, giới tính, v.v.)

Mỗi khái niệm có một mã nhận dạng duy nhất. Thông tin này có thể được tham chiếu bằng lát cắt và bảng.

Tài liệu
Lát cắt

Tổ hợp các khái niệm có dữ liệu thống kê trong tập dữ liệu. Mỗi phần chứa phương diệnchỉ số.

Lát cắt tham chiếu các khái niệm và cả bảng, chứa dữ liệu thực tế. Mỗi lát có một giá trị nhận dạng riêng biệt có thể được tham chiếu bằng các bảng chứa dữ liệu thực tế.

Tài liệu
Bảng Xác định dữ liệu cho các khái niệm và lát cắt. Bảng khái niệm chứa bảng liệt kê và bảng Slice giữ dữ liệu thống kê. Bảng được xác định trong tệp XML và trỏ đến tệp .csv chứa dữ liệu thực tế. Tài liệu
Chủ đề Danh mục để sắp xếp các khái niệm tập dữ liệu. Mặc dù không bắt buộc, nhưng việc này có thể rất hữu ích cho người dùng khi họ di chuyển trên dữ liệu của bạn. Tài liệu

Tiêu đề và mục nhập

Khai báo vùng chứa tên Dữ liệu công khai

Một tập dữ liệu DSPL bắt đầu bằng phần tử <dspl> cấp cao nhất. Tệp này dùng để bao gồm tất cả thông tin trong tập dữ liệu và cho biết mọi vùng chứa tên sẽ được dùng trong toàn bộ tệp. Ví dụ:

<?xml version="1.0" encoding="UTF-8"?>
<dspl targetNamespace="http://www.example.com/mystats"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.google.com/dspl/2010" >
    ...
</dspl>

Không gian tên là giá trị nhận dạng duy nhất có thể liên kết với một giản đồ XML (tập hợp các phần tử và thuộc tính XML). targetNamespace cung cấp một URI xác định tập dữ liệu của bạn. URI này không bắt buộc phải trỏ đến một tài nguyên thực tế, nhưng bạn nên yêu cầu URI phân giải thành một tài liệu mô tả nội dung hoặc tập dữ liệu của bạn.

Bạn không cần phải cung cấp targetNamespace. Nếu không, bạn sẽ được tự động tạo một tài khoản tại thời điểm nhập.

Thuộc tính targetNamespace theo sau là một loạt thuộc tính xmlns chỉ định các giản đồ XML khác sẽ được sử dụng trong tệp. Mỗi tệp DSPL phải bao gồm giản đồ Dữ liệu công khai của Google, có URI là "http://schemas.google.com/dspl/2010" và dùng giản đồ này làm không gian tên mặc định. Mã này cũng phải bao gồm giản đồ XML tiêu chuẩn, W3 được xác định bởi "http://www.w3.org/2001/XMLSchema-instance". Như đã mô tả trong phần tiếp theo, bạn có thể thêm các vùng chứa tên khác để bao gồm thông tin từ các tập dữ liệu khác.

Nhập không gian tên của tập dữ liệu khác

Tập dữ liệu có thể sử dụng lại định nghĩa và dữ liệu của các tập dữ liệu khác. Ví dụ: Google cung cấp một số tập dữ liệu cơ bản để xác định các khái niệm thường xuất hiện trong dữ liệu người dùng. Ví dụ: hầu hết các tập dữ liệu đều cần một khái niệm để thể hiện số năm. Thay vì xác định một khái niệm mới, bạn có thể sử dụng khái niệm năm từ tập dữ liệu "http://www.google.com/publicdata/dataset/time". Hãy xem trang Khái niệm chính tắc để biết thêm thông tin.

Để sử dụng tập dữ liệu bên ngoài, hãy thêm phần tử <import> vào tệp DSPL ngay sau khi khai báo vùng chứa tên và cho biết không gian dữ liệu mà bạn đang nhập, như sau:

<import namespace="http://www.google.com/publicdata/dataset/google/time"/>

Sau đó, hãy thêm vùng chứa tên đã nhập (trong trường hợp này là time="http://www.google.com/publicdata/dataset/google/time") vào nội dung khai báo vùng chứa tên ở đầu tệp, chẳng hạn như sau:

<?xml version="1.0" encoding="UTF-8"?>
<dspl targetNamespace="http://www.stats-bureau.com/mystats"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.google.com/dspl/2010"
    xmlns:time="http://www.google.com/publicdata/dataset/google/time" >
<import namespace="http://www.google.com/publicdata/dataset/google/time"/>

Bây giờ, tệp DSPL của bạn có thể tham chiếu đến các phần tử trong tập dữ liệu thời gian của Google Public Data. Lặp lại quy trình này cho mọi tập dữ liệu mà bạn muốn tham chiếu.

Tham chiếu nội dung trong tập dữ liệu bên ngoài

Sau khi nhập một tập dữ liệu khác, bạn cần phải tham chiếu được các khái niệm, lát cắt và dữ liệu từ tập dữ liệu đó. Để thực hiện việc này, bạn có thể sử dụng tệp đối chiếu của định dạng prefix:other_id, trong đó prefix là tiền tố dùng cho không gian tên của tập dữ liệu bên ngoài.

Sau đây là ví dụ về tham chiếu đến khái niệm year trong tập dữ liệu time (như mô tả ở trên):

<slices>
  <slice id="country_slice">
    <dimension concept="country"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="country_slice_table"/>
  </slice>
  ...
</slices>

Thông tin về tập dữ liệu

Phần tử <info> bao gồm thông tin mô tả về tập dữ liệu. Dưới đây là ví dụ và thông tin chi tiết về các phần tử XML có liên quan.

Ví dụ:

<info>
  <name>
    <value>Unemployment Rates</value>
  </name>
  <description>
    <value>Worldwide unemployment rates by region</value>
  </description>
  <url>
    <value>http://www.example.com/mystats/info.html</value>
  </url>
</info>

Các phần tử

Phần tử Bắt buộc? Mô tả
<info> Bao gồm tất cả thông tin mô tả về tập dữ liệu. Bao gồm các phần tử con <name>, <description><url>.
<name> Con của <info>. Bao gồm phần tử con <value>, giúp xác định tên của tập dữ liệu.
<description> Không bắt buộc Con của <info>. Bao gồm phần tử con <value>, trong đó có phần mô tả bằng văn bản cho tập dữ liệu.
<url> Con của <info>. Đường liên kết đến URL dẫn đến thêm thông tin về tập dữ liệu.

Thông tin về nhà cung cấp

Phần tử <provider> liệt kê thông tin về nhà cung cấp tập dữ liệu. Dưới đây là ví dụ và thông tin chi tiết về các phần tử XML có liên quan.

Ví dụ:

<provider>
  <name>
    <value>Bureau of Statistics</value>
  </name>
  <url>
    <value>http://www.example.com</value>
  </url>
</provider>

Các phần tử

Phần tử Bắt buộc? Mô tả
<provider> Bao gồm tất cả thông tin mô tả về nhà cung cấp tập dữ liệu. Bao gồm các phần tử con <name><url>.
<name> Không bắt buộc Con của <provider>. Bao gồm phần tử con <value>, giúp xác định tên của trình cung cấp tập dữ liệu.
<url> Không bắt buộc Con của <info>. Đường liên kết đến một URL cung cấp thêm thông tin về nhà cung cấp tập dữ liệu.

Khái niệm

Mô tả

Mỗi tập dữ liệu chứa một hoặc nhiều khái niệm. Khái niệm là một định nghĩa về một loại dữ liệu xuất hiện trong một tập dữ liệu. Ví dụ: một tập dữ liệu có dữ liệu dân số về nhân khẩu học có thể có các khái niệm về quốc gia, tiểu bang, dân số và năm. Các giá trị dữ liệu tương ứng với một khái niệm nhất định được gọi là bản sao của khái niệm đó. Các khái niệm thường được mô tả trong tập dữ liệu, nhưng một số khái niệm (chẳng hạn như thời gian hoặc năm) có thể được mô tả trong tập dữ liệu bên ngoài.

Mỗi khái niệm có thể có một hoặc nhiều thuộc tính. Thuộc tính là một đặc điểm của một thực thể khái niệm ổn định theo thời gian. Ví dụ: khái niệm quốc gia có thể có các thuộc tính name, populationcapital.

Các khái niệm cũng có thể có một hoặc nhiều thuộc tính. Các thuộc tính cung cấp thông tin ở cấp độ khái niệm chứ không phải thông tin riêng lẻ của thuộc tính. Ví dụ: nếu có một tập dữ liệu có khái niệm tỷ lệ thất nghiệp, thì chúng ta có thể sử dụng thuộc tính để chỉ định rằng khái niệm này là tỷ lệ phần trăm. Một ví dụ khác về cách sử dụng phổ biến các thuộc tính là cung cấp thông tin về đơn vị.

Ví dụ:

Dưới đây là ví dụ về khái niệm quốc gia có mã nhận dạng duy nhất country và thuộc tính name. Bạn có thể sử dụng mã nhận dạng khái niệm để tham chiếu khái niệm trong các lát cắt và bảng.

<concept id="country" extends="geo:location">
  <info>
    <name><value>Country</value></name>
    <description>
      <value>My list of countries.</value>
    </description>
  </info>
  <type ref="string"/>
  <property id="name">
    <info>
      <name><value>Name</value></name>
      <description>
        <value>The official name of the country</value>
      </description>
    </info>
    <type ref="string" />
  </property>
  <property concept="geo:continent" isParent="true"/>
  <property id="capital" concept="geo:city" />
  <table ref="countries_table" />
</concept>

Dưới đây là cách hoạt động của ví dụ này.

  • Mã này mô tả quốc gia khái niệm có quốc gia là mã country, các thuộc tính name, continentcapital.
  • Khái niệm này mở rộng geo:location, khái niệm chính tắc cho các vị trí. Khi mở rộng geo:location, country sẽ kế thừa tất cả các thuộc tính và thuộc tính do khái niệm mở rộng quy định: tên thuộc tính, nội dung mô tả, url, vĩ độ và kinh độ. country có thể xác định lại một số thuộc tính và thuộc tính này, miễn là định nghĩa đó nhất quán với định nghĩa và khái niệm được mở rộng cung cấp.
  • Phần tử <info> của khái niệm mô tả thông tin quan trọng về khái niệm này. Thông tin này sẽ xuất hiện trên trang đích của tập dữ liệu trong Public Data Explorer.
  • Khái niệm phần tử <type> đề cập đến loại nội dung. Trong trường hợp này là chuỗi, nhưng điều này có thể khác nhau. Khái niệm Dân số sẽ có loại integer; khái niệm Eurovision winner có thể có kiểu boolean.
  • Phần tử <property> mô tả từng thuộc tính của khái niệm đó, trong đó có mã nhận dạng duy nhất (id), infotype. Các thuộc tính cũng có thể tham chiếu các khái niệm để cho biết rằng giá trị của các khái niệm đó là bản sao hợp lệ của các khái niệm đó.
  • Khái niệm này tham chiếu đến một bảng dữ liệu trỏ đến tệp CSV chứa dữ liệu thực tế. Bảng dữ liệu được tham chiếu như sau: <table ref="countries_table"/>.

    Nếu khái niệm của bạn tham chiếu đến một bảng, tệp dữ liệu liên kết phải liệt kê tất cả các thực thể của khái niệm đó. Ví dụ: bạn không thể tạo một bảng chỉ liệt kê một số quốc gia có trong tập dữ liệu. (Nếu có một số quốc gia mà bạn quan tâm, bạn có thể tạo một khái niệm riêng để mô tả những quốc gia đó. Ví dụ: mycountries.)

Các phần tử

Phần tử Bắt buộc? Mô tả
<concepts> Phần tử cấp cao nhất. Bao gồm tất cả các phần tử <concept>.
<concept> Xác định khái niệm. Giá trị của thuộc tính bắt buộc id phải là duy nhất đối với khái niệm trong tập dữ liệu. Nếu khái niệm tham chiếu đến một bảng dữ liệu khái niệm, thì giá trị của id phải khớp với tiêu đề cột mô tả khái niệm đó trong bảng dữ liệu. Bạn có thể sử dụng thuộc tính extends để biểu thị rằng khái niệm này sẽ mở rộng một khái niệm khác. Giá trị của extends phải khớp với mã của một khái niệm được xác định trong cùng một tập dữ liệu hoặc có dạng prefix:concept_id, trong đó concept_id là mã của một khái niệm được xác định trong tập dữ liệu bên ngoài đã nhập với prefix.
<info> Không bắt buộc Chứa thông tin mô tả về khái niệm này.
<name> Con của <info>. Tên của khái niệm. Phần tử con <value> chứa văn bản – ví dụ: Country.
<description> Không bắt buộc Con của <info>. Bao gồm phần tử con <value>, trong đó có phần mô tả bằng văn bản về khái niệm này.
<url> Không bắt buộc Con của <info>. Bao gồm phần tử con <value>, trong đó có một URL cho khái niệm này.
<pluralName> Không bắt buộc Con của <info>. Tên dạng số nhiều cho khái niệm này. Phần tử con <value> chứa văn bản – ví dụ: Countries.
<totalName> Không bắt buộc Con của <info>. Tên của tổ hợp tất cả bản sao của khái niệm này. Phần tử con <value> chứa văn bản – trong trường hợp có một khái niệm country, ví dụ: đây có thể là World.
<type> Không bắt buộc Xác định loại nội dung mà khái niệm này mô tả. Thuộc tính bắt buộc ref có các giá trị được phép sau:
  • chuỗi
  • số thực dấu phẩy động
  • số nguyên
  • ngày
  • boolean
Bạn có thể bỏ qua kiểu này nếu khái niệm mở rộng một khái niệm khác, trong trường hợp đó, ý tưởng được kế thừa từ khái niệm mở rộng.
<property> Không bắt buộc

Một thuộc tính của khái niệm này, chẳng hạn như capital. Giá trị của thuộc tính bắt buộc id phải là duy nhất đối với khái niệm này. Bạn có thể dùng thuộc tính concept không bắt buộc để cho biết rằng các giá trị của thuộc tính này là các thực thể của một khái niệm cụ thể. Nếu bạn chỉ định concept, thì id có thể bị bỏ qua; giá trị của biến này được định nghĩa ngầm định là mã nhận dạng của khái niệm được tham chiếu (ví dụ: <property concept="geo:country"/> tương đương với <property id="country" concept="geo:country"/>).

Một thuộc tính có thể chứa thuộc tính isParent Boolean để cho biết rằng mối quan hệ giữa một thực thể của khái niệm và giá trị của thuộc tính này là có tính phân cấp.

Một thuộc tính có thể chứa một thuộc tính Boolean isMapping, để cho biết rằng có một bản đồ ánh xạ 1-1 giữa các thực thể của khái niệm và các giá trị của thuộc tính đó.

Một thuộc tính có thể chỉ định một infotype lồng ghép, được xác định như khi dùng cho một khái niệm. type là bắt buộc nếu thuộc tính không chỉ định thuộc tính concept và phải khớp với loại của khái niệm tham chiếu nếu có.

<attribute> Không bắt buộc

Một thuộc tính của khái niệm. Các thuộc tính thể hiện thêm thông tin về khái niệm này (ví dụ: GDP là tỷ lệ phần trăm). Giá trị của thuộc tính bắt buộc id phải là duy nhất đối với khái niệm này. Bạn có thể dùng thuộc tính concept không bắt buộc để cho biết rằng các giá trị của thuộc tính này là các thực thể của một khái niệm cụ thể. Nếu bạn chỉ định concept, thì id có thể bị bỏ qua. Giá trị của thuộc tính này được định nghĩa ngầm định dưới dạng mã nhận dạng của khái niệm được tham chiếu. (ví dụ: <attribute concept="unit:unit"/> tương đương với <attribute id="unit" concept="unit:unit"/>.

Một thuộc tính có thể chỉ định một infotype lồng nhau, được xác định giống như một khái niệm. type là bắt buộc nếu thuộc tính không chỉ định thuộc tính concept và phải khớp với loại của khái niệm tham chiếu nếu có.

<table> Không bắt buộc Xác định bảng dữ liệu chứa dữ liệu cho khái niệm. Giá trị của thuộc tính ref bắt buộc phải khớp với mã nhận dạng bảng được chỉ định trong phần tử <table> có liên quan.

Lát cắt

Mô tả

Slice là sự kết hợp giữa các khái niệm có dữ liệu. Slice chứa hai loại tệp tham chiếu khái niệm: phương diệnchỉ số. Phương diện là một khái niệm dùng để phân đoạn hoặc lọc dữ liệu. Mặt khác, một chỉ số mô tả giá trị quan sát được hoặc các giá trị được liên kết với từng điểm dữ liệu.

Nói chung, các phương diện mang tính phân loại trong khi các chỉ số không mang giá trị phân loại, thay đổi theo thời gian và các giá trị số. Sau đây là một số ví dụ về nguyên mẫu:

  • Phương diện: Quốc gia, tiểu bang, hạt, khu vực, năm, tháng, giới tính, danh mục độ tuổi, phân khúc trong ngành
  • Chỉ số: Dân số, GDP, tỷ lệ thất nghiệp, tỷ lệ biết chữ, doanh thu, chi phí, giá

Ví dụ:

<slices>
  <slice id="country_slice">
    <dimension concept="country"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="country_slice_table"/>
  </slice>
  ...
</slices>

Dưới đây là cách hoạt động của ví dụ này.

  • Phần này thể hiện dân số theo quốc gia.
  • Báo cáo này có chỉ số population cùng các phương diện countryyear. Mỗi phương diện là một khái niệm đã được xác định ở nơi khác. Khái niệm country và chỉ số population tồn tại trong cùng tập dữ liệu với phần hiện tại và được tham chiếu như sau: concept="country"
  • Khái niệm year tồn tại trong thời gian dữ liệu được nhập, được xác định theo tiền tố dùng trước tên khái niệm (year), như sau: concept="time:year"
  • Lát cắt sẽ tham chiếu đến một bảng dữ liệu trỏ đến tệp CSV chứa dữ liệu thực tế. Bảng dữ liệu được tham chiếu như sau: <table ref="country_slice_table"/>. (Xem phần trên để biết thông tin về cách nhập tập dữ liệu.)

Lưu ý: Nhìn chung, tập dữ liệu của bạn sẽ linh hoạt hơn nếu bạn chỉ số tối thiểu và thay vào đó tạo các phương diện có ý nghĩa. Ví dụ: thay vì tạo chỉ số Female UnemploymentMale Unemployment, hãy tạo chỉ số duy nhất Unemployment rồi thêm phương diện Gender có bản sao FemaleMale.

Các phần tử

Phần tử Bắt buộc? Mô tả
<slices> Phần tử cấp cao nhất. Bao gồm tất cả các phần tử <slice>.
<slice> Không bắt buộc Xác định phần cắt. Giá trị của thuộc tính bắt buộc id phải là duy nhất đối với lát cắt.
<dimension> Không bắt buộc Xác định kích thước của Slice bằng cách tham chiếu đến một khái niệm. Giá trị của thuộc tính bắt buộc concept phải khớp chính xác với mã nhận dạng duy nhất của khái niệm và sử dụng tiền tố hợp lệ nếu khái niệm đó thuộc một tập dữ liệu bên ngoài đã nhập.
<metric> Không bắt buộc Xác định chỉ số của phần bằng cách tham chiếu khái niệm. Giá trị của thuộc tính bắt buộc concept phải khớp chính xác với mã nhận dạng duy nhất của khái niệm và sử dụng tiền tố hợp lệ nếu khái niệm đó thuộc một tập dữ liệu bên ngoài đã nhập.
<table> Xác định bảng dữ liệu chứa dữ liệu cho lát cắt. Giá trị của thuộc tính ref bắt buộc phải khớp với mã bảng được chỉ định trong phần tử <table> có liên quan.
<mapDimension> Không bắt buộc Con của <table>. Chứa các thuộc tính concepttoColumn; giá trị của phương diện đầu tiên là một phương diện trong lát cắt và giá trị của phương diện thứ hai là cột bảng tương ứng với phương diện trước đó.
<mapMetric> Không bắt buộc Con của <table>. Chứa các thuộc tính concepttoColumn; giá trị của thứ nhất là một chỉ số trong lát cắt và giá trị của thứ hai là cột trong bảng tương ứng với cột trước.

Bảng

Mô tả

Phần tables của tệp DSPL xác định các bảng dữ liệu có trong tập dữ liệu. Các bảng này có thể được tham chiếu theo khái niệm hoặc theo phần. Mỗi phần tử <table> chỉ định các cột của bảng và loại của chúng, đồng thời trỏ đến tệp CSV chứa dữ liệu bảng.

Ví dụ:

<tables>
  <table id="country_slice_table">
    <column id="country" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <data>
      <file format="csv" encoding="utf-8">country_slice.csv</file>
    </data>
  </table>
  ...
</tables>

Dưới đây là cách thức hoạt động của mẫu này.

  • Mẫu này mô tả bảng country_slice_table. Bảng có các cột country, yearpopulation.
  • Mỗi cột trong bảng đều có một mã nhận dạng duy nhất, do thuộc tính id xác định. Mã này phải khớp chính xác với tiêu đề cột thích hợp trong tệp dữ liệu liên kết.
  • Giá trị của thuộc tính type không bắt buộc xác định loại dữ liệu cho mỗi cột.
  • Phần tử <data> mô tả tệp .csv thực tế (country_slice.csv) chứa dữ liệu cho bảng. Định dạng tệp luôn là csv.

Các phần tử

Phần tử Bắt buộc? Mô tả
<tables> Phần tử cấp cao nhất. Bao gồm tất cả các phần tử <table>.
<table> Xác định bảng. Giá trị của thuộc tính bắt buộc id phải là duy nhất đối với bảng.
<column> Không bắt buộc Con của <table>. Thông tin về một cột có trong bảng. Bao gồm các thuộc tính sau:
  • id (bắt buộc): Mã nhận dạng của cột.
  • type (không bắt buộc): Loại dữ liệu của thông tin trong cột được chỉ định. Các giá trị được phép là: string, float, integer, date hoặc boolean.
<data> Không bắt buộc Con của <table>. Tệp dữ liệu được tham chiếu theo bảng. Nếu tên tệp ở dạng URL (ví dụ: http://...), thì tệp đó sẽ được tìm nạp thông qua giao thức thích hợp (HTTP, HTTPS hoặc FTP); nếu không, tệp có tên này phải được gói với tập dữ liệu. Giá trị của thuộc tính bắt buộc format luôn là csv. Mặc dù thuộc tính encoding là không bắt buộc, nhưng các tệp .csv của bạn phải được mã hoá bằng phương thức UTF-8.

Chủ đề

Mô tả

Topics API phân loại các khái niệm theo thứ bậc, cho phép người dùng di chuyển qua tập dữ liệu của bạn dễ dàng hơn.

Phần tử <topics> phải xuất hiện ngay trước phần tử <concepts> trong tệp DSPL. (Thứ tự của các phần tử là quan trọng và bạn có thể không tải được tập dữ liệu lên nếu các phần tử của bạn xuất hiện theo thứ tự không chính xác.) Để sử dụng chủ đề, hãy tham chiếu đến những chủ đề đó theo định nghĩa về khái niệm.

Ví dụ:

Dưới đây là một ví dụ về định nghĩa theo chủ đề:

<topics>
  <topic id="population_indicators">
    <info>
      <name>
        <value>Population indicators</value>
      </name>
    </info>
  </topic>
  ...
</topics>
  

...và đây là ví dụ về tham chiếu đến chủ đề này từ một khái niệm:

<concept id="population">
  <info>
    <name>
      <value>Population</value>
    </name>
    <description>
      <value>Size of the resident population.</value>
    </description>
  <topic ref="population_indicators"/>
  <type ref="integer"/>
</concept>

Các chủ đề có thể được lồng vào nhau và một khái niệm có thể tham chiếu đến nhiều chủ đề.

Định nghĩa phần tử

Phần tử Bắt buộc? Mô tả
<topics> Phần tử cấp cao nhất. Bao gồm tất cả các phần tử <topic>.
<topic> Xác định chủ đề. Giá trị của thuộc tính bắt buộc id phải là duy nhất đối với tập dữ liệu.
<info> Không bắt buộc Con của <topic>. Bao gồm thông tin về một chủ đề.
<name> Không bắt buộc Con của <info>. Phần tử con <value> sẽ chỉ định tên của chủ đề.

Tệp dữ liệu DSPL

Ngoài tệp siêu dữ liệu XML, tập dữ liệu DSPL cũng có thể chứa một hoặc nhiều tệp dữ liệu ở định dạng CSV. Mỗi tệp dữ liệu hỗ trợ một bảng trong tập dữ liệu và được tham chiếu từ tệp trước trong phần <data>...</data>. Về mặt lý thuyết, những tệp này và các bảng liên quan được dùng để thể hiện định nghĩa về khái niệm hoặc dữ liệu cắt. Mỗi loại tệp trong số những loại dữ liệu này được mô tả chi tiết hơn ở bên dưới.

Xin lưu ý rằng, bất kể mục đích là gì, tất cả các tệp dữ liệu phải là tệp văn bản UTF-8 được phân tách bằng dấu phẩy (CSV). Các tệp này chỉ được chứa văn bản thuần tuý; không được chứa HTML. Bạn có thể tạo các tệp dữ liệu theo cách thủ công, nhưng trên thực tế, bạn cần mát xa dữ liệu trong công cụ chứa nguồn dữ liệu gốc (ví dụ: bảng tính) hoặc trong chính tệp đã xuất.

Các tệp có thể được nhóm với tập dữ liệu hoặc nếu tên ở dạng URL, được tìm nạp qua HTTP, HTTPS hoặc FTP từ một nguồn từ xa.

Tệp dữ liệu trên khái niệm

Tệp dữ liệu về khái niệm chứa thông tin liên quan cho từng khái niệm. Phần khai báo khái niệm sử dụng phần tử <table> để tham chiếu đến tệp này.

Ví dụ:

Dưới đây là ví dụ về bảng cho khái niệm country được xác định ở trên:

country, name
AD, Andorra
AF, Afghanistan
AI, Anguilla
AL, Albania
AO, Angola
AQ, Antarctica
AS, American Samoa

Dưới đây là cách hoạt động của ví dụ này:

  • Trừ khi được chỉ định ánh xạ, dòng đầu tiên của tệp dữ liệu (tiêu đề cột) phải khớp chính xác với mã nhận dạng khái niệm và mã thuộc tính thích hợp của khái niệm nơi dữ liệu được liên kết. Tuy nhiên, thứ tự các cột không nhất thiết phải giống nhau trong tệp dữ liệu và bảng khái niệm. Trong trường hợp này, cột đầu tiên được liên kết với khái niệm country và cột thứ hai được liên kết với thuộc tính name.
  • Cột thuộc tính là không bắt buộc; nếu một tài sản không có một cột trong bảng, thì giá trị của tài sản đó được giả định là không xác định cho mỗi hàng. Ví dụ: bảng trên sẽ bỏ qua các cột cho thuộc tính latitudelongitude, vì vậy, các quốc gia sẽ không thể liên kết.
  • Mỗi giá trị cho trường mã nhận dạng của khái niệm (trong trường hợp này là country) phải là duy nhất và không trống (trường trống là một giá trị có ký tự khoảng trắng bằng 0 hoặc chỉ trống).
  • Giá trị cho các thuộc tính tham chiếu đến các khái niệm khác phải trống hoặc là giá trị hợp lệ của khái niệm được tham chiếu.
  • Bạn không bắt buộc phải đưa các giá trị vào trong dấu ngoặc kép, trừ khi các giá trị đó chứa dấu phẩy, dấu ngoặc kép hoặc ký tự dòng mới.
  • Thoát hai dấu ngoặc kép xuất hiện trong một giá trị bằng cách đặt hai dấu ngoặc kép khác vào trước.

Tệp dữ liệu cắt

Các tệp dữ liệu lát cắt chứa dữ liệu có liên quan cho từng phần. Định nghĩa lát cắt sử dụng phần tử <table ref="..."> để tham chiếu đến định nghĩa <table>, từ đó định nghĩa tệp này.

Ví dụ:

Sau đây là ví dụ về một tệp .csv chứa dữ liệu cho lát cắt population_by_country được mô tả ở trên:

country, year, population
AF, 1960, 9616353
AF, 1961, 9799379
AF, 1962, 9989846
AF, 1963, 10188299

Dưới đây là cách ví dụ này hoạt động:

  • Trường chỉ số là population. Các trường countryyear là các trường phương diện.
  • Không được để trống từng giá trị của trường phương diện. Dữ liệu này bao gồm cả các thứ nguyên thời gian. Bạn có thể để trống giá trị của trường chỉ số. Giá trị trống sẽ không có ký tự nào.
  • Mỗi tiêu đề cột tham chiếu đến một khái niệm (ví dụ: trường đầu tiên của ví dụ trên tham chiếu đến khái niệm country) phải khớp chính xác với mã nhận dạng duy nhất của khái niệm đó trong định nghĩa về khái niệm.
  • Tổ hợp các giá trị phương diện duy nhất, ví dụ: AF, 2000, có thể chỉ xảy ra một lần.
  • Các hàng trong cùng một chuỗi thời gian (tức là các hàng có cách kết hợp giống nhau về tất cả các giá trị phương diện ngoại trừ thời gian) phải được nhóm lại với nhau, mặc dù không cần sắp xếp theo thứ tự khác.

Tính năng nâng cao

Tập dữ liệu đa ngôn ngữ

Giá trị XML được dịch

Bạn có thể dùng thuộc tính xml:lang cho mỗi phần tử <value> trong tệp DSPL. Thuộc tính này chỉ định ngôn ngữ của nội dung trong phần tử, sử dụng thẻ ngôn ngữ chuẩn W3C. Lưu ý rằng bạn không bắt buộc phải sử dụng tính năng này. Nếu không có thuộc tính xml:lang nào được đưa vào, nội dung sẽ được giả định là bằng tiếng Anh.

Ví dụ sau đây cho thấy các phần từ tập dữ liệu bằng tiếng Anh, tiếng Bungary, tiếng Catalan và tiếng Trung giản thể:

<dspl ...>
  <info>
    <name>
      <value xml:lang="en">World Bank, World Development Indicators</value>
      <value xml:lang="bg">Световна банка, Индикатори за световно развитие</value>
      <value xml:lang="ca">Banc Mundial, Indicadors del desenvolupament mundial</value>
      <value xml:lang="zh-CN">国家/地区</value>
    </name>
    ...
  </info>

  <concepts>
    <concept id="country">
      <info>
        <name>
          <value xml:lang="en">Country</value>
          <value xml:lang="bg">Страна</value>
          <value xml:lang="ca">País</value>
          <value xml:lang="zh-CN">国家/地区</value>
        </name>
        ...
      </info>
      ...
    </concept>
    ...
  </concepts>

  ...
</dspl>

Thuộc tính đã dịch

Trong một số trường hợp, bạn có thể muốn cung cấp các bản dịch vượt ra ngoài siêu dữ liệu cấp khái niệm, áp dụng bổ sung (hoặc thay thế) cho từng bản sao khái niệm. Điều này đặc biệt hữu ích khi các giá trị của một thuộc tính khái niệm (ví dụ: tên) thay đổi theo ngôn ngữ.

Để cung cấp các giá trị như vậy bằng nhiều ngôn ngữ, hãy tạo một cột trong bảng định nghĩa tương ứng cho từng cách kết hợp tài sản/ngôn ngữ. Sau đó, hãy liên kết các cột này với các thuộc tính và ngôn ngữ liên quan bằng cách thêm một tập hợp các phần tử <mapProperty xml:lang="..." ref="..." toColumn="..."> vào thẻ tham chiếu bảng cho khái niệm đó.

Sau đây là ví dụ về một khái niệm quốc gia có tên bằng tiếng Anh, tiếng Tây Ban Nha và tiếng Pháp:

<concepts>
  ...
  <concept id="country" extends="geo:location">
    ...
    <property id="name">
      <info>
        <name>
          <value>Name</value>
        </name>
        <description>
          <value>The official name of the country</value>
        </description>
      </info>
      <type ref="string" />
    </property>
    ...
    <table ref="countries_table">
      <mapProperty xml:lang="en" ref="name" toColumn="name_en"/>
      <mapProperty xml:lang="es" ref="name" toColumn="name_es"/>
      <mapProperty xml:lang="fr" ref="name" toColumn="name_fr"/>
    </table>
  </concept>
  ...
</concepts>

...

<tables>
  ...
  <table id="countries_table">
    <column id="country" type="string"/>
    <column id="name_en" type="string"/>
    <column id="name_es" type="string"/>
    <column id="name_fr" type="string"/>
    ...
  </table>
</tables>

Sau đó, tệp CSV cho countries_table sẽ có dạng như sau:

country,name_en,name_es,name_fr,...
...
US,United States of America,Estados Unidos de América,États-Unis d'Amérique,...
...

Khái niệm có thể ánh xạ

Nhiều khái niệm (ví dụ: hạt, tiểu bang và thành phố) có các thực thể tương ứng với vị trí địa lý. DSPL hỗ trợ mã hoá địa lý các trường hợp này để chúng có thể hiển thị trong biểu đồ bản đồ ảnh động Dữ liệu công khai của Google.

Nếu khái niệm của bạn tương đương với các quốc gia trên thế giới, tiểu bang Hoa Kỳ hoặc các hạt ở Hoa Kỳ, thì bạn chỉ cần liên kết đến khái niệm chính tắc tương ứng của Google mà không cần phải mã hoá địa lý rõ ràng. Hãy xem Hướng dẫn về khái niệm chính tắc để biết thêm thông tin chi tiết.

Nếu không thì bạn cần phải tạo sơ đồ khái niệm cho bản đồ. Bước đầu tiên là mở rộng phạm vi của geo:location:

<concept id="..." extends="geo:location">
  ...
</concept>

Sau đó, bạn phải thêm vĩ độ và kinh độ làm thuộc tính rõ ràng:

<concept id="..." extends="geo:location">
  ...
  <property id="latitude"/>
  <property id="longitude"/>
</concept>
  

Sau đó, các giá trị này được chỉ định dưới dạng cột trong bảng dữ liệu định nghĩa khái niệm tương ứng.

Mối quan hệ khái niệm

Các khái niệm thường liên quan đến các khái niệm khác theo cách có cấu trúc. Ví dụ: một thực thể châu lục có thể bao gồm nhiều thực thể quốc gia; các quốc gia này có thể chứa nhiều thực thể tiểu bang hoặc tỉnh. Việc mã hoá các mối quan hệ này trong siêu dữ liệu của tập dữ liệu cho phép bạn sử dụng các tính năng hình ảnh hoá phong phú hơn so với cách khác, chẳng hạn như hiển thị một cây các vị trí có thể thu gọn để chọn.

Trong phần dưới đây, chúng tôi mô tả mối quan hệ với các khái niệm được hỗ trợ trong giản đồ DSPL.

Hệ phân cấp

Hệ phân cấp khái niệm được biểu thị trong DSPL thông qua việc sử dụng thuộc tính isParent="true" trong thẻ <property> của khái niệm con, chứa chứa giá trị nhận dạng của các thực thể từ khái niệm mẹ.

Ví dụ: khái niệm của Google về hạt ở Hoa Kỳ có dạng như sau:

<concept id="us_county" extends="geo:location">
  <info>
    <name>
      <value xml:lang="en">County</value>
    </name>
    ...
  </info>
  ...
  <property id="state" concept="us_state" isParent="true"/>
  ...
  <data>
    <table ref="reference_us_counties"/>
  </data>
</concept>
  

Bảng dữ liệu hỗ trợ có một cột state kèm theo mã trạng thái gồm hai chữ cái cho mỗi hạt. Loại siêu dữ liệu này cho phép Trình khám phá dữ liệu công khai hiển thị các trạng thái và hạt dưới dạng hệ phân cấp, một tính năng giúp người dùng khám phá dễ dàng hơn.

Xin lưu ý rằng một khái niệm có thể có nhiều phần tử con nhưng không quá một phần tử mẹ.

Ánh xạ

Bản đồ khái niệm (tức là các khái niệm về cơ bản là cùng một nội dung) được biểu thị thông qua thuộc tính isMapping="true" trong thẻ property của khái niệm đã liên kết.

Việc chỉ định một khái niệm ánh xạ cho một khái niệm khác sẽ cho phép khái niệm trước đó kế thừa tất cả các thuộc tính và thuộc tính của thuộc tính sau. Ngoài ra, điều này cũng hữu ích cho việc "liên kết" các khái niệm địa lý cá nhân với những khái niệm được xác định trong tập dữ liệu địa lý chuẩn của Google:

<concept id="my_country" extends="geo:location">
  <info>
    <name>
      <value xml:lang="en">Country</value>
    </name>
    ...
  </info>
  ...
  <property id="google_country_code" concept="geo:country" isMapping="true"/>
  <data>
    <table ref="countries_concept"/>
  </data>
</concept>
  

Phần mở rộng

Phần mở rộng về khái niệm được chỉ định thông qua phần tử extends trong định nghĩa khái niệm tương ứng. Các phần mở rộng rất hữu ích trong việc cho biết rằng một khái niệm cụ thể là lớp con của một khái niệm khác rộng hơn. Khái niệm mở rộng sẽ kế thừa tất cả các thuộc tính và thuộc tính của thành phần mẹ, đồng thời có thể thêm các thuộc tính khác.

Ví dụ: Khái niệm currency của Google mở rộng unit:

<concept id="unit">
  ...
</concept>

<concept id="currency" extends="unit">
  <info>
    <name>
      <value xml:lang="en">Currency unit</value>
    </name>
    ...
  </info>
  ...
  <table ref="currency_table"/>
</concept>
  

Xem nội dung thảo luận về phần mở rộng về khái niệm trong hướng dẫn để biết nội dung giải thích và ví dụ khác.

Gửi tập dữ liệu của bạn

Để gửi tập dữ liệu của bạn cho Google Public Data Explorer, hãy làm theo các hướng dẫn sau:

  1. Tạo thư mục.
  2. Lưu tệp dspl trong tập dữ liệu vào thư mục bạn đã tạo. Hãy nhớ sử dụng đuôi .xml.
  3. Lưu mọi tệp .csv cục bộ vào cùng một thư mục. Bạn có thể bỏ qua các tệp dữ liệu được tham chiếu qua URL.
  4. Nén thư mục.
  5. Tải tập dữ liệu của bạn lên Trình khám phá dữ liệu công khai của Google.

Sau khi tải tập dữ liệu lên và xác thực, bạn có thể kiểm thử tập dữ liệu đó khi đăng nhập vào Tài khoản Google của mình. Mã này chỉ được xuất bản cho đến khi bạn kiểm tra xong và thông báo cho chúng tôi rằng mã đã sẵn sàng.