Hướng dẫn về DSPL

DSPL là viết tắt của Dataset Publishing Language (Ngôn ngữ xuất bản tập dữ liệu). Bạn có thể nhập các tập dữ liệu được mô tả trong DSPL vào Trình khám phá dữ liệu công khai của Google. Đây là một công cụ cho phép khám phá dữ liệu một cách trực quan, phong phú.

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.

Hướng dẫn này cung cấp ví dụ từng bước về cách chuẩn bị tập dữ liệu DSPL cơ bản.

Tập dữ liệu DSPL là một gói chứa một tệp XML và một tập hợp các tệp CSV. Các tệp CSV là những bảng đơn giản chứa dữ liệu của tập dữ liệu. Tệp XML mô tả siêu dữ liệu của tập dữ liệu, bao gồm siêu dữ liệu thông tin như nội dung mô tả về các thước đo, cũng như siêu dữ liệu cấu trúc như thông tin tham chiếu giữa các bảng. Siêu dữ liệu 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.

Điều kiện tiên quyết để hiểu được hướng dẫn này là bạn phải hiểu khá rõ về XML. Một số kiến thức về các khái niệm cơ sở dữ liệu đơn giản (ví dụ: , khoá chính) có thể giúp ích, nhưng đây không phải là yêu cầu bắt buộc. Bạn có thể tham khảo tệp XML hoàn chỉnhgói tập dữ liệu hoàn chỉnh liên kết với hướng dẫn này để xem xét.

Tổng quan

Trước khi bắt đầu tạo tập dữ liệu, hãy tham khảo phần tổng quan cấp cao sau đây về nội dung của tập dữ liệu DSPL:

  • Thông tin chung: Giới thiệu về tập dữ liệu
  • Khái niệm: Định nghĩa về "những thứ" 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.)
  • Lát cắt: Kết hợp các khái niệm có dữ liệu
  • Bảng: Dữ liệu cho các khái niệm và phần. Bảng khái niệm chứa bảng liệt kê và bảng Slice giữ dữ liệu thống kê
  • Chủ đề: Dùng để sắp xếp các khái niệm của tập dữ liệu trong một hệ phân cấp có ý nghĩa thông qua việc gắn nhãn

Để minh hoạ các khái niệm khá trừu tượng này, hãy cân nhắc tập dữ liệu (với dữ liệu giả) dùng trong suốt hướng dẫn này: chuỗi thời gian thống kê về dân số và tỷ lệ thất nghiệp, tổng hợp theo nhiều cách kết hợp khác nhau giữa quốc gia, tiểu bang và giới tính của Hoa Kỳ.

Tập dữ liệu mẫu này xác định các khái niệm sau:

  • quốc gia
  • gender
  • tổng số
  • tiểu bang
  • tỷ lệ thất nghiệp
  • năm

Những khái niệm có tính phân loại, chẳng hạn như trạng thái, được liên kết với bảng khái niệm, giúp liệt kê tất cả các giá trị có thể có của chúng (California, Arizona, v.v.). Các khái niệm có thể có các cột bổ sung cho các thuộc tính như tên hoặc quốc gia của một tiểu bang.

Lát cắt xác định từng tổ hợp khái niệm chứa dữ liệu thống kê trong tập dữ liệu. Lát cắt chứa phương diệnchỉ số. Trong hình trên, các phương diện có màu xanh dương và các chỉ số có màu cam. Trong ví dụ này, lát cắt gender_country_slice có dữ liệu cho chỉ số population và phương diện country, yeargender. Một phần khác, có tên là country_slice, cung cấp tổng số người dùng (chỉ số) hằng năm cho các quốc gia.

Ngoài các thứ nguyên và chỉ số, lát cắt còn tham chiếu đến bảng chứa dữ liệu thực tế.

Hãy cùng xem qua từng bước tạo tập dữ liệu như vậy trong DSPL.

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

Để bắt đầu, chúng ta cần tạo một tệp XML cho tập dữ liệu. Sau đây là phần bắt đầu của đoạn mô tả DSPL cho tập dữ liệu mẫu của chúng tôi:

<?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"
   xmlns:geo="http://www.google.com/publicdata/dataset/google/geo"
   xmlns:entity="http://www.google.com/publicdata/dataset/google/entity"
   xmlns:quantity="http://www.google.com/publicdata/dataset/google/quantity">

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

  <info>
    <name>
      <value>My statistics</value>
    </name>
    <description>
      <value>Some very interesting statistics about countries</value>
    </description>
    <url>
      <value>http://www.stats-bureau.com/mystats/info.html</value>
    </url>
    </info>

  <provider>
    <name>
      <value>Bureau of Statistics</value>
    </name>
    <url>
      <value>http://www.stats-bureau.com</value>
    </url>
  </provider>
 ...
</dspl>

Phần mô tả tập dữ liệu bắt đầu bằng phần tử <dspl> cấp cao nhất. Thuộc tính targetNamespace chứa một URI xác định tập dữ liệu này. Không gian tên của tập dữ liệu đặc biệt quan trọng khi xuất bản tập dữ liệu, vì tập dữ liệu sẽ là giá trị nhận dạng toàn cầu của tập dữ liệu và là phương tiện để người khác tham chiếu đến tập dữ liệu đó.

Xin lưu ý rằng thuộc tính targetNamespace có thể bị bỏ qua. Trong trường hợp này, không gian tên riêng biệt được tạo tự động khi tập dữ liệu được nhập.

Sử dụng thông tin từ các tập dữ liệu khác

Cá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 bằng cách nhập các tập dữ liệu đó. Mỗi phần tử <import> chỉ định vùng chứa tên của một tập dữ liệu khác mà tập dữ liệu này sẽ tham chiếu.

Trong tập dữ liệu mẫu của mình, chúng ta sẽ cần một số định nghĩa từ http://www.google.com/publicdata/dataset/google/quantity (tập dữ liệu do Google tạo ra chứa các khái niệm hữu ích để xác định số lượng) và từ các tập dữ liệu thời gian, thực thểvị trí địa lý, cung cấp định nghĩa liên quan đến thời gian, thực thể và địa lý.

Phần tử <dspl> trên cùng cung cấp nội dung khai báo tiền tố vùng chứa tên (ví dụ: xmlns:time="http://...") cho mỗi tập dữ liệu đã nhập. Bạn cần khai báo tiền tố để tham chiếu đến các phần tử từ các tập dữ liệu khác một cách ngắn gọn. Ví dụ: time:year tham chiếu đến định nghĩa của year trong tập dữ liệu đã nhập có không gian tên được liên kết với tiền tố time.

Thông tin về tập dữ liệu và nhà cung cấp

Phần tử <info> chứa thông tin chung về tập dữ liệu: tên, nội dung mô tả và URL để tìm thêm thông tin.

Phần tử <provider> chứa thông tin về nhà cung cấp tập dữ liệu: tên và URL của trang cung cấp thêm thông tin (thường là trang chủ của nhà cung cấp dữ liệu).

Xác định khái niệm

Bây giờ, chúng tôi đã cung cấp một số thông tin chung về tập dữ liệu. Hiện chúng tôi đã sẵn sàng bắt đầu xác định nội dung của tập dữ liệu đó. Mục tiêu tiếp theo của chúng tôi là thêm số liệu thống kê về dân số cho các quốc gia trong 50 năm qua.

Việc đầu tiên chúng ta cần làm là cung cấp một số định nghĩa cho khái niệm dân số, quốc gia và năm. Trong DSPL, các định nghĩa này được gọi là 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. 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à phiên bản của khái niệm đó.

Dân số

Hãy bắt đầu bằng việc xác định khái niệm dân số. Trong một tài liệu về DSPL, các khái niệm được xác định trong phần tử <concepts> nằm ngay sau tập dữ liệu và thông tin về nhà cung cấp.

Sau đây là một khái niệm dân số chỉ gồm thông tin tối thiểu cần thiết cho mọi khái niệm: id (giá trị nhận dạng duy nhất), nametype.

<dspl ...>
  ...
  <concepts>
    <concept id="population">
      <info>
        <name>
          <value>Population</value>
        </name>
      </info>
      <type ref="integer"/>
    </concept>
  ...
  </concepts>

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

  • Mỗi khái niệm phải cung cấp một id xác định duy nhất khái niệm đó trong tập dữ liệu. Điều này có nghĩa là không có hai khái niệm nào được xác định trong cùng một tập dữ liệu có thể có cùng một mã.
  • Cũng giống như tập dữ liệu và nhà cung cấp tập dữ liệu, các phần tử <info> cung cấp thông tin dạng văn bản về khái niệm này, chẳng hạn như tên và nội dung mô tả.
  • Phần tử <type> chỉ định loại dữ liệu cho các phiên bản của khái niệm này (nói cách khác là "giá trị"). Trong ví dụ này, loại populationinteger. DSPL hỗ trợ các loại dữ liệu sau:
    • string
    • integer
    • float
    • boolean
    • date

Quốc gia

Giờ hãy viết định nghĩa về khái niệm quốc gia:

<concept id="country">
  <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>
  <table ref="countries_table" />
</concept>

Định nghĩa về khái niệm quốc gia bắt đầu giống như định nghĩa trước đây, với id, infotype.

Giá trị khái niệm

Các khái niệm phân loại như các quốc gia có bảng liệt kê tất cả các bản sao có thể xảy ra. Nói cách khác, bạn có thể liệt kê tất cả những quốc gia có thể tham chiếu. Tuy nhiên, để thực hiện việc này, mỗi quốc gia cần có một mã nhận dạng duy nhất. Ví dụ này sử dụng mã quốc gia theo ISO để xác định các quốc gia; các mã này thuộc loại string.

Trong ví dụ này, bạn không cần sử dụng mã ISO; bạn cũng có thể chỉ cần sử dụng tên quốc gia. Tuy nhiên, tên gọi khác nhau tuỳ theo ngôn ngữ và có thể thay đổi theo thời gian và không phải lúc nào cũng được sử dụng nhất quán trong các tập dữ liệu. Đối với các quốc gia và đối với các khái niệm phân loại nói chung, bạn nên chọn những giá trị nhận dạng ngắn, ổn định, thường dùng và không phụ thuộc vào ngôn ngữ (nếu có).

Thuộc tính khái niệm

Ngoài id, khái niệm quốc gia này còn có một phần tử <property> chỉ định tên quốc gia. Nói cách khác, tên quốc gia ("Ireland") là một thuộc tính của quốc gia có id Ireland. Thuộc tính là cách DSPL cung cấp thêm thông tin có cấu trúc về các thực thể của một khái niệm.

Giống như khái niệm này, các thuộc tính có id, infotype.

Dữ liệu khái niệm

Cuối cùng, khái niệm quốc gia có phần tử <table>. Phần tử này tham chiếu đến một bảng liệt kê tất cả các quốc gia.

Việc sử dụng bảng có ý nghĩa đối với một số khái niệm, nhưng không phù hợp với các khái niệm khác. Ví dụ: không có ý nghĩa khi liệt kê tất cả các giá trị có thể có cho tập hợp khái niệm. Tuy nhiên, nếu bạn tham chiếu đến một bảng cho một khái niệm, thì bảng đó phải chứa tất cả các bản sao của khái niệm đó, ví dụ: bảng này phải liệt kê mọi quốc gia, chứ không chỉ là một số ví dụ mẫu.

Tập dữ liệu xác định bảng countries_table như sau:

...
<tables>
  <table id="countries_table">
    <column id="country" type="string"/>
    <column id="name" type="string"/>
    <data>
      <file format="csv" encoding="utf-8">countries.csv</file>
    </data>
  </table>
  ...
</tables>

Bảng quốc gia xác định các cột của bảng và loại cột, đồng thời tham chiếu đến tệp CSV chứa dữ liệu. Bạn có thể kết hợp và tải tệp CSV này lên bằng XML của tập dữ liệu hoặc truy cập từ xa qua HTTP, HTTPS hoặc FTP. Trong trường hợp sau, bạn sẽ thay thế countries.csv bằng một URL, ví dụ: http://www.myserver.com/mydata/countries.csv.

Bất cứ nơi nào tệp được lưu trữ, tệp CSV đều có dạng như sau:

country, name
AD,      Andorra
AF,      Afghanistan
AI,      Anguilla
AL,      Albania
US,      United States

Hàng đầu tiên của bảng liệt kê các mã nhận dạng cột, như được chỉ định trong định nghĩa table của DSPL. Mỗi hàng sau đây tương ứng với một bản sao của khái niệm quốc gia. Nếu khái niệm có một bảng, thì bảng đó phải chứa tất cả các bản sao của khái niệm đó, trong trường hợp này, bảng phải liệt kê tất cả các quốc gia.

Các cột được liên kết đến khái niệm quốc gia và các thuộc tính dựa trên mã nhận dạng của những cột đó. Mã của cột đầu tiên, country, khớp với mã khái niệm. Điều này có nghĩa là cột này chứa giá trị nhận dạng quốc gia riêng biệt do khái niệm quốc gia xác định. Cột tiếp theo tương ứng với thuộc tính name của khái niệm quốc gia. Các giá trị trong cột này khớp với các giá trị của thuộc tính name.

Có một số yêu cầu đối với dữ liệu CSV cho bảng khái niệm:

  • Các tiêu đề cột trong dòng đầu tiên của tệp dữ liệu phải khớp chính xác với khái niệm id và thuộc tính id của khái niệm mà dữ liệu được liên kết (mặc dù thứ tự có thể khác nhau).
  • Mỗi hàng phải có cùng số lượng phần tử như số lượng thuộc tính trên khái niệm (ngay cả khi giá trị trống).
  • Mỗi giá trị cho trường id của khái niệm (ở đây là mã quốc gia) phải là duy nhất và không được để trống (một trường trống là trường không có ký tự trống hoặc chỉ có khoảng 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.
  • Các giá trị chứa dấu phẩy, dấu ngoặc kép hoặc ký tự dòng mới phải được đặt đầy đủ trong dấu ngoặc kép.
  • Mọi ký tự dấu ngoặc kép giá trị cố định bên trong một giá trị phải được đặt ngay sau một dấu ngoặc kép khác.

Năm

Khái niệm cuối cùng mà chúng ta cần cho dữ liệu dân số của quốc gia là khái niệm thể hiện số năm. Thay vì xác định một khái niệm mới, chúng tôi sẽ sử dụng khái niệm năm từ một trong các tập dữ liệu mà chúng tôi đã nhập: "http://www.google.com/publicdata/dataset/google/time". Để thực hiện việc này, chúng ta cần tham chiếu dưới dạng time:year, trong đó time đại diện cho tập dữ liệu được tham chiếu và year xác định khái niệm này.

Khái niệm chính tắc

time:year là một phần trong một tập hợp nhỏ các khái niệm chính tắc do Google xác định. Khái niệm chính tắc cung cấp các định nghĩa cơ bản về thời gian, khu vực địa lý, số lượng, đơn vị, v.v.

Trên thực tế, khái niệm quốc gia được xác định ở trên tồn tại dưới dạng khái niệm chính tắc. Chúng tôi chỉ tạo tài liệu này ở đây để minh hoạ. Bất cứ khi nào có thể, bạn nên dùng khái niệm chính tắc trong tập dữ liệu (trực tiếp hoặc bằng cách mở rộng (xem thêm thông tin về phần mở rộng bên dưới). Các khái niệm chính tắc giúp dữ liệu của bạn có thể so sánh được với các tập dữ liệu khác và bật các tính năng cho tập dữ liệu của bạn trong Public Data Explorer. Chẳng hạn như việc tạo ảnh động dữ liệu theo thời gian hoặc hiển thị dữ liệu địa lý trên bản đồ dựa vào việc sử dụng các khái niệm chính tắc timegeo tương ứng.

Lát cắt đầu tiên

Bây giờ, khi chúng ta đã có khái niệm về dân số, quốc gia và năm, hãy kết hợp chúng lại với nhau!

Do đó, chúng ta cần tạo một lát cắt kết hợp chúng. Trong DSPL, Slice là sự kết hợp giữa các khái niệm có dữ liệu.

Tại sao không chỉ tạo một bảng có đúng cột? Bởi vì lát cắt thu thập thông tin của tập dữ liệu về mặt khái niệm. Điều này sẽ trở nên rõ ràng hơn khi chúng tôi tạo thêm các phần của tập dữ liệu của mình.

Lát cắt xuất hiện trong tệp DSPL trong phần tử <slices>. Tệp này phải xuất hiện ngay sau phần concepts.

<slices>
  <slice id="countries_slice">
    <dimension concept="country"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="countries_slice_table"/>
  </slice>
</slices>

Cũng giống như khái niệm, mỗi phần có một id (countries_slice) xác định riêng phần đó trong tập dữ liệu.

Một phần chứa hai loại tệp tham chiếu khái niệm: Phương diệnchỉ số. Giá trị của các chỉ số thay đổi theo giá trị của phương diện. Ở đây, giá trị của population (chỉ số) thay đổi theo các phương diện countryyear.

Cũng giống như khái niệm, Slice bao gồm tham chiếu đến bảng chứa dữ liệu của Slice. Bảng được tham chiếu phải có một cột cho mỗi phương diện và chỉ số của Slice. Tương tự như đối với khái niệm, phương diện và chỉ số của Slice sẽ được liên kết với các cột trong bảng có cùng mã nhận dạng.

Bảng lát cắt

Bảng về phần dân số của chúng tôi xuất hiện trong phần tables của tệp DSPL:

<tables>
  ...
  <table id="countries_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>

Xin lưu ý rằng cột year có một thuộc tính format chỉ định cách định dạng năm. Định dạng ngày được hỗ trợ là những định dạng được xác định theo định dạng DateTime.

Bảng countries_slice chỉ định các cột của bảng và kiểu của các cột đó, đồng thời trỏ đến tệp CSV chứa dữ liệu. Tệp CSV sẽ có dạng như sau:

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

Mỗi hàng của bảng dữ liệu chứa một tổ hợp duy nhất giữa các phương diện countryyear, cùng với giá trị tương ứng của chỉ số population (ví dụ: dân số – chỉ số – của Afghanistan vào năm 1960 – phương diện).

Hãy lưu ý rằng các giá trị trong cột country khớp với giá trị/giá trị nhận dạng của khái niệm country, đó là mã gồm 2 chữ cái theo quốc gia ISO 3166.

Dữ liệu CSV cho một lát cắt phải đáp ứng các hạn chế sau:

  • Không được để trống từng giá trị của trường phương diện (chẳng hạn như countryyear). Bạn có thể để trống giá trị cho các trường chỉ số (chẳng hạn như population). Giá trị trống được biểu thị bằng không có ký tự.
  • Phải có giá trị của một trường phương diện tham chiếu đến một khái niệm trong dữ liệu của khái niệm đó. Ví dụ: giá trị AF phải có trong bảng dữ liệu khái niệm country.
  • Mỗi tổ hợp giá trị phương diện duy nhất, ví dụ: AF, 2000, có thể chỉ xuất hiện một lần.
  • Bạn nên sắp xếp dữ liệu theo các cột phương diện không theo thời gian (theo thứ tự bất kỳ), sau đó sắp xếp theo bất kỳ cột nào khác. Ví dụ: trong một bảng có các cột [date, dimension1, dimension2, metric1, metric2], bạn có thể sắp xếp theo dimension1, sau đó là dimension2, rồi đến date, nhưng không sắp xếp theo date rồi chọn phương diện.

Tóm tắt

Đến thời điểm này, DSPL của chúng ta đã có đủ thông tin để mô tả dữ liệu về dân số của quốc gia. Tóm lại, việc chúng tôi phải làm là:

  • Tạo tiêu đề và mô tả của tập dữ liệu DSPL cùng với nhà cung cấp dữ liệu
  • Tạo một khái niệm cho dân số và một khái niệm khác cho quốc gia, với một tệp csv liệt kê tất cả các quốc gia và tên của các quốc gia đó.
  • Tạo một phần với số dân số của chúng tôi cho các quốc gia theo thời gian, tham chiếu đến khái niệm năm đã được xác định trong tập dữ liệu thời gian nhập từ Google.

Trong phần còn lại của hướng dẫn này, chúng tôi sẽ giúp tập dữ liệu trở nên phong phú hơn bằng cách thêm nhiều phương diện hơn trong nhiều phần, cũng như thêm nhiều chỉ số được nhóm theo chủ đề.

Thêm phương diện: Hoa Kỳ

Bây giờ, hãy làm phong phú thêm tập dữ liệu của chúng tôi bằng cách thêm dữ liệu dân số cho các tiểu bang ở Hoa Kỳ. Trước tiên, chúng ta cần xác định một khái niệm cho các trạng thái. Điều này rất giống với khái niệm quốc gia mà chúng tôi đã xác định trước đó.

<concept id="state" extends="geo:location">
  <info>
    <name>
      <value>state</value>
    </name>
    <description>
      <value>US states, identified by their two-letter code.</value>
    </description>
  </info>
  <property concept="country" isParent="true" />
  <table ref="states_table"/>
</concept>

Phần mở rộng về khái niệm và tệp tham chiếu về thuộc tính

Khái niệm trạng thái giới thiệu một số tính năng mới của DSPL.

Trước tiên, trạng thái mở rộng một khái niệm khác là geo:location (được xác định trong tập dữ liệu địa lý bên ngoài mà chúng tôi đã nhập ở đầu tập dữ liệu). Về mặt ngữ nghĩa, điều này có nghĩa là state là một loại geo:location. Do đó, thừa kế đó sẽ kế thừa tất cả các thuộc tính và thuộc tính của geo:location. Cụ thể, vị trí xác định các thuộc tính cho latitudelongitude; bằng cách mở rộng khái niệm cũ, các thuộc tính này cũng được áp dụng cho trạng thái. Hơn nữa, vì vị trí kế thừa từ entity:entity, nên trạng thái cũng nhận được tất cả thuộc tính của sau, bao gồm name, descriptioninfo_url.

Lưu ý: Về mặt kỹ thuật, khái niệm quốc gia được xác định trước đó cũng nên mở rộng từ geo:location. Tuy nhiên, chúng tôi đã bỏ qua điểm này trước để đơn giản hoá. Tuy nhiên, chúng tôi đã đưa vị trí vào quốc gia kế thừa trong tệp XML cuối cùng.

Lưu ý: Bạn có thể sử dụng cấu trúc extends trong tập dữ liệu của riêng mình để sử dụng lại thông tin do các tập dữ liệu khác xác định. Việc sử dụng extends yêu cầu tất cả các bản sao của khái niệm phải là bản sao hợp lệ của khái niệm mà bạn đang mở rộng. Các tiện ích cho phép bạn thêm các thuộc tính và thuộc tính bổ sung, đồng thời hạn chế tập hợp các phiên bản thành một nhóm nhỏ các phiên bản của khái niệm mở rộng.

Ngoài tính kế thừa, thuộc tính trạng thái cũng giới thiệu ý tưởng về tệp tham chiếu về khái niệm. Cụ thể, khái niệm trạng thái có một thuộc tính tên là country, trong đó tham chiếu đến khái niệm quốc gia mà chúng ta đã tạo ở trên. Bạn có thể thực hiện việc này bằng cách sử dụng thuộc tính concept. Xin lưu ý rằng thuộc tính này không cung cấp mã nhận dạng mà chỉ là một giá trị tham chiếu khái niệm. Điều này tương đương với việc tạo một mã nhận dạng có cùng giá trị với mã nhận dạng của khái niệm được tham chiếu (tức là country trong ví dụ này). Mối quan hệ phân cấp giữa trạng thái và hạt được thu thập bằng cách có một thuộc tính isParent="true" trên tệp tham chiếu. Nhìn chung, các phương diện có mối quan hệ phân cấp, chẳng hạn như các khu vực địa lý, nên được biểu thị theo cách này, với khái niệm con có một thuộc tính tham chiếu đến khái niệm mẹ bằng thuộc tính isParent.

Định nghĩa về bảng cho các trạng thái như sau:

<tables>
  ...
  <table id="states_table">
    <column id="state" type="string"/>
    <column id="name" type="string"/>
    <column id="country" type="string">
      <value>US</value>
    </column>
    <column id="latitude" type="float"/>
    <column id="longitude" type="float"/>
    <data>
      <file format="csv" encoding="utf-8">states.csv</file>
    </data>
  </table>
  ...
</tables>

Cột quốc gia có giá trị không đổi cho tất cả các tiểu bang. Việc chỉ định giá trị đó trong DSPL sẽ tránh lặp lại giá trị đó cho mọi trạng thái trong dữ liệu. Ngoài ra, xin lưu ý rằng chúng tôi đã bao gồm các cột cho name, latitudelongitude vì trạng thái đã kế thừa các thuộc tính này từ geo:location. Mặt khác, một số thuộc tính kế thừa (ví dụ: description) không có cột; không có vấn đề gì – nếu một thuộc tính bị bỏ qua trong bảng định nghĩa khái niệm, thì giá trị của thuộc tính đó được giả định là không xác định đối với mọi trường hợp của khái niệm.

Tệp CSV sẽ có dạng như sau:

state, name,        latitude,  longitude
AL,    Alabama,     32.318231, -86.902298
AK,    Alaska,      63.588753, -154.493062
AR,    Arkansas,    35.20105,  -91.831833
AZ,    Arizona,     34.048928, -111.093731
CA,    California,  36.778261, -119.417932
CO,    Colorado,    39.550051, -105.782067
CT,    Connecticut, 41.603221, -73.087749
...

Do đã có các khái niệm về dân số và năm nên có thể sử dụng lại các khái niệm đó để xác định một phần mới cho dân số ở các tiểu bang.

<slices>
  <slice id="states_slice">
    <dimension concept="state"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="states_slice_table"/>
  </slice>
</slices>

Định nghĩa của bảng dữ liệu có dạng như sau:

<tables>
  ...
  <table id="states_slice_table">
    <column id="state" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <file format="csv" encoding="utf-8">state_slice.csv</file>
  </table>
  ...
</tables>

Và tệp CSV sẽ có dạng như sau:

state, year, population
AL,    1960, 9616353
AL,    1961, 9799379
AL,    1962, 9989846
AL,    1963, 10188299

Chờ đã, tại sao chúng ta lại tạo một lát cắt mới thay vì thêm một phương diện khác vào phương diện trước đó?

Một lát cắt có kích thước cho cả trạng thái và quốc gia sẽ không chính xác vì một số hàng sẽ dành cho dữ liệu quốc gia và một số hàng sẽ dành cho dữ liệu trạng thái. Bảng này sẽ chứa các "lỗ" cho một số phương diện. Do đó, bạn không được phép sử dụng (chỉ nên cho phép các giá trị bị thiếu đối với các chỉ số và không được phép sử dụng cho các phương diện).

Phương diện đóng vai trò là "khoá chính" cho lát cắt. Điều này có nghĩa là mỗi hàng dữ liệu phải có giá trị cho tất cả các phương diện và không có hai hàng dữ liệu nào có thể có cùng giá trị cho tất cả các phương diện.

Thêm chỉ số: Tỷ lệ thất nghiệp

Giờ chúng ta hãy thêm một chỉ số khác vào tập dữ liệu:

<concept id="unemployment_rate" extends="quantity:rate">
  <info>
    <name>
      <value>Unemployment rate</value>
    </name>
    <description>
      <value>The percent of the labor force that is unemployed.</value>
    </description>
    <url>
      <value>http://www.bls.gov/cps/cps_htgm.htm</value>
    </url>
  </info>
  <type ref="float/>
  <attribute id="is_percentage">
    <type ref="boolean"/>
    <value>true</value>
  </attribute>
</concept>

Mục info của chỉ số này có tên, nội dung mô tả và URL (liên kết đến Cục Thống kê Lao động Hoa Kỳ).

Khái niệm này cũng mở rộng khái niệm chính tắc quantity:rate. Tập dữ liệu về số lượng xác định các khái niệm chính để thể hiện số lượng. Trong tập dữ liệu, bạn nên tạo khái niệm dạng số bằng cách mở rộng khái niệm số lượng phù hợp. Do đó, về mặt kỹ thuật, khái niệm population được xác định ở trên nên được mở rộng từ quantity:amount.

Thuộc tính khái niệm

Khái niệm này cũng giới thiệu cấu trúc của thuộc tính. Trong ví dụ này, một thuộc tính được dùng để cho biết rằng unemployment_rate là tỷ lệ phần trăm. Thuộc tính is_percentage được kế thừa từ khái niệm quantity:rate mà khái niệm này mở rộng. Thông tin này được Trình khám phá dữ liệu công khai sử dụng để hiển thị ký hiệu phần trăm khi trực quan hoá dữ liệu.

Thuộc tính cung cấp một cơ chế chung để đính kèm các cặp khoá/giá trị vào một khái niệm (trái ngược với các thuộc tính liên kết thêm giá trị với bản sao của một khái niệm). Giống như khái niệm và thuộc tính, các thuộc tính có id, infotype. Giống như các thuộc tính, chúng có thể tham chiếu đến các khái niệm khác.

Thuộc tính không chỉ dành cho những mục chung được xác định trước, chẳng hạn như các thuộc tính dạng số. Bạn có thể xác định các thuộc tính riêng cho khái niệm của mình.

Thêm dữ liệu về tỷ lệ thất nghiệp ở Hoa Kỳ

Hiện chúng tôi đã sẵn sàng để thêm dữ liệu tỷ lệ thất nghiệp cho các tiểu bang của Hoa Kỳ. Vì tỷ lệ thất nghiệp là một chỉ số và chúng tôi đã có dữ liệu dân số cho các tiểu bang, nên chúng tôi chỉ có thể thêm vào tỷ lệ này vào phạm vi mà chúng tôi đã tạo cho các phương diện tiểu bang và năm:

<slices>
  ...
  <slice id="states_slice">
    <dimension concept="state"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <metric concept="unemployment_rate"/>
    <table ref="states_slice_table"/>
  </slice>
  ...
</slices>

... và thêm một cột khác vào định nghĩa bảng:

<tables>
  ...
  <table id="states_slice_table">
    <column id="state" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <column id="unemployment_rate" type="float"/>
    <data>
      <file format="csv" encoding="utf-8">state_slice.csv</file>
    </data>
  </table>
  ...
</tables>

... và vào tệp CSV:

state, year, population, unemployment_rate
AL,    1960, 9616353,    5.1
AL,    1961, 9799379,    5.2
AL,    1962, 9989846,    4.8
AL,    1963, 10188299,   6.9

Trước đây, chúng ta đã nói rằng đối với mỗi lát cắt, các phương diện sẽ tạo thành một khoá chính cho lát cắt. Ngoài ra, mỗi tập dữ liệu chỉ có thể chứa một phần cho một tổ hợp các phương diện cụ thể. Tất cả chỉ số có sẵn cho các phương diện này phải thuộc về cùng một phần.

Thêm phương diện: Phân tích dân số theo giới tính

Hãy làm phong phú thêm tập dữ liệu của chúng tôi bằng cách phân tích dân số theo giới tính tại các quốc gia. Bây giờ, bạn đã bắt đầu hiểu được bài tập... Trước tiên, chúng ta cần thêm một khái niệm về giới tính:

<concept id="gender" extends="entity:entity">
  <info>
    <name>
      <value>Gender</value>
    </name>
    <description>
      <value>Gender, Male or Female</value>
    </description>
    <pluralName>
      <value>Genders</value>
    </pluralName>
    <totalName>
      <value>Both genders</value>
    </totalName>
  </info>
  <type ref="string"/>
  <table ref="genders_table"/>
</concept>

Phần khái niệm giới tính info có một pluralName, trong đó cung cấp văn bản dùng để tham chiếu đến nhiều bản sao của khái niệm giới tính. Phần info cũng bao gồm totalName, cung cấp văn bản sẽ dùng để tham chiếu đến mọi thực thể của khái niệm giới tính nói chung. Cả hai công cụ này đều được Trình khám phá dữ liệu công khai sử dụng để hiển thị thông tin liên quan đến khái niệm giới tính. Nhìn chung, bạn nên cung cấp các khái niệm đó để có thể dùng làm kích thước.

Xin lưu ý rằng khái niệm giới tính cũng sẽ mở rộng từ entity:entity. Đây là một phương pháp hay đối với những khái niệm được dùng làm phương diện, vì bạn có thể thêm tên, URL và màu tuỳ chỉnh cho các thực thể khái niệm khác nhau.

Khái niệm giới tính đề cập đến bảng genders_table, trong đó có các giá trị có thể là giới tính và tên hiển thị của những giới tính đó (bị bỏ qua ở đây).

Để thêm dân số theo giới tính vào tập dữ liệu, chúng ta cần tạo một lát cắt mới (hãy nhớ: mỗi tổ hợp kích thước có sẵn tương ứng với một phần trong tập dữ liệu).

<slice id="countries_gender_slice">
  <dimension concept="country"/>
  <dimension concept="gender"/>
  <dimension concept="time:year"/>
  <metric concept="population"/>
  <table ref="countries_gender_slice_table"/>
</slice>

Định nghĩa của bảng cho lát cắt như sau:

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

Tệp CSV cho bảng trông giống như sau:

country, gender, year, population
AF,      M,      1960, 4808176
AF,      F,      1960, 4808177
AF,      M,      1961, 4899689
AF,      F,      1961, 4899690...

So với các quốc gia, dân số và tỷ lệ thất nghiệp trước đây, chỉ số này có một phương diện bổ sung; mỗi giá trị của chỉ số dân số không chỉ tương ứng với một quốc gia và năm cụ thể, mà còn tương ứng với một giới tính cụ thể.

Xin lưu ý rằng chúng tôi đã tạo tập dữ liệu "sparse" ( thưa thớt). Không phải tất cả chỉ số đều có sẵn cho mọi phương diện: dân số áp dụng cho các quốc gia và tiểu bang của Hoa Kỳ hằng năm, trong khi tỷ lệ thất nghiệp chỉ có sẵn cho các quốc gia. Thông tin chi tiết theo giới tính chỉ dành cho người dùng ở từng quốc gia; không áp dụng cho chỉ số tỷ lệ thất nghiệp và không áp dụng cho phương diện tiểu bang. Tình trạng khan hiếm cũng có thể tồn tại ở cấp dữ liệu, trong đó một số chỉ số không có giá trị nhất định, nhưng không được thể hiện trong DSPL.

Chủ đề

Tính năng cuối cùng của DSPL mà chúng ta sẽ sử dụng trong tập dữ liệu của mình là chủ đề. Chủ đề được dùng để phân loại các khái niệm theo cấp bậc và được các ứng dụng sử dụng để giúp người dùng di chuyển đến dữ liệu của bạn.

Trong tệp DSPL, các chủ đề sẽ xuất hiện ngay trước khái niệm. Sau đây là một hệ phân cấp chủ đề mẫu:

<dspl ... >
  ...
  <topics>
    <topic id="geography">
      <info>
        <name>
          <value>Geography</value>
        </name>
      </info>
    </topic>
    <topic id="social_indicators">
      <info>
        <name>
          <value>Social indicators</value>
        </name>
      </info>
    </topic>
    <topic id="population_indicators">
      <info>
        <name>
          <value>Population indicators</value>
        </name>
      </info>
    </topic>
    <topic id="poverty_and_income">
      <info>
        <name>
          <value>Poverty & income</value>
        </name>
      </info>
    </topic>
    <topic id="health">
      <info>
        <name>
          <value>Health</value>
        </name>
      </info>
    </topic>
  </topics>

Bạn có thể lồng ghép các chủ đề theo mức độ cần thiết.

Để sử dụng chủ đề, bạn chỉ cần tham chiếu chúng từ định nghĩa khái niệm như sau:

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

Một khái niệm có thể tham chiếu nhiều chủ đề.

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

Sau khi tạo tập dữ liệu, bước tiếp theo bạn cần làm là nén tệp này và tải tệp zip lên công cụ Google Public Data Explorer. Nếu bạn gặp vấn đề, hãy tham khảo phần Câu hỏi thường gặp, trong đó có nội dung thảo luận về các vấn đề thường gặp nhất khi tải lên.

Để tham khảo, bạn cũng có thể tải tệp XML hoàn chỉnhgói tập dữ liệu hoàn chỉnh liên kết với hướng dẫn này.

Địa điểm nên đến từ đây

Chúc mừng bạn đã tạo tập dữ liệu DSPL đầu tiên! Bây giờ, bạn đã nắm được những kiến thức cơ bản, sau đó đọc qua Hướng dẫn cho nhà phát triển. Tài liệu này trình bày các tính năng của DSPL "nâng cao" như hỗ trợ đa ngôn ngữ và các khái niệm có thể ánh xạ.

Bạn cũng nên xem xét một số tập dữ liệu mẫu khác.