Tutorial DSPL

DSPL adalah singkatan dari Dataset Publishing Language. Set data yang dijelaskan dalam DSPL dapat diimpor ke Penjelajah Data Publik Google, alat yang memungkinkan eksplorasi data yang lengkap dan visual.

Catatan: Untuk mengupload data ke Google Public Data menggunakan alat upload Data Publik, Anda harus memiliki Akun Google.

Tutorial ini memberikan contoh langkah demi langkah tentang cara menyiapkan set data DSPL dasar.

Set data DSPL adalah paket yang berisi file XML dan serangkaian file CSV. File CSV adalah tabel sederhana yang berisi data set data. File XML menjelaskan metadata set data, termasuk metadata informasi seperti deskripsi tindakan, serta metadata struktural seperti referensi antar-tabel. Metadata memungkinkan pengguna non-ahli menjelajahi dan memvisualisasikan data Anda.

Satu-satunya prasyarat untuk memahami tutorial ini adalah tingkat pemahaman XML yang baik. Beberapa pemahaman tentang konsep database sederhana (misalnya, tabel, kunci utama) dapat membantu, tetapi tidak wajib. Sebagai referensi, file XML yang diselesaikan dan paket set data lengkap yang terkait dengan tutorial ini juga tersedia untuk ditinjau.

Ringkasan

Sebelum mulai membuat set data, berikut adalah ringkasan tingkat tinggi tentang isi set data DSPL:

  • Informasi umum: Tentang set data
  • Konsep: Definisi "hal" yang muncul dalam set data (misalnya, negara, tingkat pengangguran, gender, dll.)
  • Slice: Kombinasi konsep yang datanya ada
  • Tabel: Data untuk konsep dan irisan. Tabel konsep menyimpan enumerasi dan tabel slice menyimpan data statistik
  • Topik: Digunakan untuk mengatur konsep set data dalam hierarki yang bermakna melalui pelabelan

Untuk menggambarkan gagasan yang cukup abstrak ini, pertimbangkan set data (dengan data dummy) yang digunakan dalam tutorial ini: deret waktu statistik untuk populasi dan pengangguran, yang digabungkan menurut berbagai kombinasi negara, negara bagian AS, dan gender.

Contoh set data ini menentukan konsep berikut:

  • country
  • gender
  • populasi
  • status
  • tingkat pengangguran
  • tahun

Konsep yang bersifat kategoris, seperti status, akan dikaitkan dengan tabel konsep, yang menghitung semua kemungkinan nilainya (California, Arizona, dll.). Konsep mungkin memiliki kolom tambahan untuk properti seperti nama atau negara.

Slice menentukan setiap kombinasi konsep yang memiliki data statistik dalam set data. Slice berisi dimensi dan metrik. Dalam gambar di atas, dimensi berwarna biru dan metrik berwarna oranye. Dalam contoh ini, irisan gender_country_slice memiliki data untuk metrik population serta dimensi country, year dan gender. Potongan lain, yang disebut country_slice, memberikan jumlah populasi tahunan (metrik) total untuk negara.

Selain dimensi dan metrik, slice juga merujuk tabel, yang berisi data aktual.

Sekarang, mari kita ikuti langkah demi langkah pembuatan set data tersebut di DSPL.

Informasi Set Data

Untuk memulai, kita perlu membuat file XML untuk set data kita. Berikut adalah awal deskripsi DSPL untuk set data contoh kami:

<?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>

Deskripsi set data dimulai dengan elemen <dspl> level atas. Atribut targetNamespace berisi URI yang mengidentifikasi set data ini secara unik. Namespace set data sangat penting saat memublikasikan set data, karena akan menjadi ID global set data Anda, dan sarana bagi orang lain untuk merujuknya.

Perhatikan bahwa atribut targetNamespace mungkin dihilangkan. Dalam hal ini, namespace unik akan otomatis dibuat saat set data diimpor.

Menggunakan informasi dari set data lain

Set data dapat menggunakan kembali definisi dan data dari set data lain dengan mengimpor set data tersebut. Setiap elemen <import> menentukan namespace dari set data lain yang akan direferensikan oleh set data ini.

Dalam contoh set data, kita memerlukan beberapa definisi dari http://www.google.com/publicdata/dataset/google/quantity (set data yang dibuat oleh Google yang berisi konsep yang berguna untuk menentukan kuantitas numerik), dan dari set data waktu, entitas, dan geo, yang memberikan definisi terkait waktu, entitas, dan geografi.

Elemen <dspl> atas menyediakan deklarasi awalan namespace (misalnya, xmlns:time="http://...") untuk setiap set data yang diimpor. Deklarasi awalan diperlukan untuk mereferensikan elemen dari set data lain dengan cara yang ringkas. Misalnya, time:year merujuk pada definisi year dalam set data yang diimpor yang namespace-nya dikaitkan dengan awalan time.

Info set data dan penyedia

Elemen <info> berisi informasi umum tentang set data: nama, deskripsi, dan URL tempat informasi selengkapnya dapat ditemukan.

Elemen <provider> berisi informasi tentang penyedia set data: nama dan URL tempat informasi selengkapnya dapat ditemukan (umumnya halaman beranda penyedia data).

Menentukan Konsep

Setelah memberikan beberapa informasi umum tentang set data, kita siap untuk mulai menentukan kontennya. Sasaran kami berikutnya adalah menambahkan statistik populasi untuk negara-negara selama 50 tahun terakhir.

Hal pertama yang perlu kita lakukan adalah memberikan beberapa definisi untuk konsep populasi, negara, dan tahun. Dalam DSPL, definisi ini disebut konsep.

Konsep adalah definisi jenis data yang muncul dalam set data. Nilai data yang sesuai dengan konsep tertentu disebut instance untuk konsep tersebut.

Populasi

Mari kita mulai dengan menentukan konsep populasi. Dalam dokumen DSPL, konsep ditentukan dalam elemen <concepts> yang muncul tepat setelah informasi set data dan penyedia.

Berikut adalah konsep populasi dengan hanya informasi minimal yang diperlukan untuk setiap konsep: id (ID unik), name, dan type.

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

Berikut adalah cara kerja contoh ini:

  • Setiap konsep harus menyediakan id yang secara unik mengidentifikasi konsep dalam set data. Ini berarti tidak ada dua konsep yang ditentukan dalam set data yang sama yang dapat memiliki ID yang sama.
  • Sama seperti set data dan penyedianya, elemen <info> memberikan informasi tekstual tentang konsep, seperti nama dan deskripsinya.
  • Elemen <type> menentukan jenis data untuk instance konsep (dengan kata lain, "nilainya"). Dalam contoh ini, jenis population adalah integer. DSPL mendukung jenis data berikut:
    • string
    • integer
    • float
    • boolean
    • date

Negara

Sekarang mari kita tulis definisi konsep negara:

<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>

Definisi konsep negara dimulai seperti sebelumnya, dengan id, info, dan type.

Nilai konsep

Konsep kategoris seperti negara memiliki enumerasi dari semua kemungkinan instance. Dengan kata lain, Anda dapat mencantumkan semua negara yang dapat direferensikan. Namun, untuk melakukannya, setiap negara memerlukan ID unik. Contoh ini menggunakan kode negara ISO untuk mengidentifikasi negara; kode ini adalah jenis string.

Dalam contoh ini, Anda tidak perlu menggunakan kode ISO; Anda juga dapat menggunakan nama negara. Namun, nama berbeda menurut bahasa, dapat berubah seiring waktu, dan tidak selalu konsisten digunakan di seluruh set data. Untuk negara, dan untuk konsep kategori secara umum, sebaiknya pilih, pendek, stabil, umum digunakan, dan ID independen bahasa (jika ada).

Properti konsep

Selain id, konsep negara memiliki elemen <property> yang menentukan nama negara. Dengan kata lain, nama negara ("Irlandia") adalah properti negara yang memiliki id IE. Properti adalah cara DSPL memberikan informasi terstruktur tambahan tentang instance konsep.

Sama seperti konsep itu sendiri, properti memiliki id, info, dan type.

Data konsep

Terakhir, konsep negara memiliki elemen <table>. Elemen ini merujuk ke tabel yang menghitung daftar semua negara.

Penggunaan tabel masuk akal untuk beberapa konsep, tetapi tidak untuk yang lain. Misalnya, tidak masuk akal untuk menghitung semua kemungkinan nilai untuk populasi konsep. Namun, jika Anda mereferensikan tabel untuk suatu konsep, tabel tersebut harus berisi semua instance konsep tersebut. Misalnya, tabel harus mencantumkan setiap negara, bukan hanya beberapa contoh.

Set data menentukan tabel countries_table sebagai berikut:

...
<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>

Tabel negara menentukan kolom tabel dan jenisnya, serta mereferensikan file CSV yang berisi data. CSV ini dapat dipaketkan dan diupload dengan XML set data atau diakses dari jarak jauh melalui HTTP, HTTPS, atau FTP. Pada kasus terakhir, Anda akan mengganti countries.csv dengan URL, misalnya http://www.myserver.com/mydata/countries.csv.

Di mana pun file tersebut disimpan, file CSV akan terlihat seperti ini:

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

Baris pertama tabel mencantumkan ID kolom, seperti yang ditentukan dalam definisi table DSPL. Setiap baris berikut sesuai dengan satu instance konsep negara. Jika konsep memiliki tabel, maka tabel harus berisi semua instance konsep - dalam hal ini, tabel harus mencantumkan semua negara.

Kolom dipetakan ke konsep negara dan propertinya berdasarkan ID-nya. ID kolom pertama, country, cocok dengan ID konsep. Artinya, kolom ini berisi ID negara unik yang ditentukan oleh konsep negara. Kolom berikutnya sesuai dengan properti name konsep negara. Nilai di kolom ini cocok dengan nilai properti name.

Ada beberapa persyaratan data CSV untuk tabel konsep:

  • Judul kolom di baris pertama file data harus sama persis dengan konsep id dan properti id konsep yang terkait dengan data (meskipun urutannya dapat bervariasi).
  • Setiap baris harus memiliki jumlah elemen yang sama persis dengan jumlah properti pada konsep (meskipun nilainya kosong).
  • Setiap nilai untuk kolom id konsep (di sini, kode negara) harus unik dan tidak kosong (kolom kosong adalah nilai yang berisi karakter kosong atau hanya spasi kosong).
  • Nilai untuk properti yang mereferensikan konsep lain harus kosong atau merupakan nilai yang valid dari konsep yang direferensikan.
  • Nilai yang berisi koma, tanda kutip ganda, atau karakter baris baru harus diapit sepenuhnya dalam tanda kutip ganda.
  • Setiap karakter kutipan ganda literal di dalam nilai harus segera didahului dengan tanda kutip ganda lainnya.

Tahun

Konsep terakhir yang kita perlukan untuk data populasi negara adalah konsep yang mewakili tahun. Daripada menentukan konsep baru, kita akan menggunakan konsep tahun dari salah satu set data yang kita impor: "http://www.google.com/publicdata/dataset/google/time". Untuk melakukannya, kita harus mereferensikannya sebagai time:year, dengan time merepresentasikan set data yang direferensikan, dan year mengidentifikasi konsepnya.

Konsep kanonis

time:year adalah bagian dari serangkaian kecil konsep kanonis yang ditentukan oleh Google. Konsep kanonis memberikan definisi dasar untuk waktu, geografi, kuantitas numerik, unit, dll.

Faktanya, konsep negara yang ditentukan di atas ada sebagai konsep kanonis. Kami hanya membuatnya di sini untuk tujuan ilustrasi. Jika memungkinkan, Anda harus menggunakan konsep kanonis dalam set data, baik secara langsung maupun dengan memperluasnya (lebih lanjut tentang ekstensi di bawah). Konsep kanonis membuat data Anda sebanding dengan set data lainnya, dan mengaktifkan fitur untuk set data Anda di Penjelajah Data Publik. Misalnya, menganimasikan data dari waktu ke waktu atau menampilkan data geografis pada peta masing-masing bergantung pada konsep kanonis time dan geo.

Slice Pertama

Setelah memiliki konsep untuk populasi, negara, dan tahun, kini saatnya untuk menyatukannya.

Untuk itu, kita perlu membuat slice yang menggabungkannya. Di DSPL, slice adalah kombinasi konsep yang datanya ada.

Mengapa tidak membuat tabel dengan kolom yang tepat saja? Karena slice menangkap informasi set data dalam hal konsepnya. Ini akan menjadi lebih jelas saat kita membuat lebih banyak bagian set data.

Slice muncul dalam file DSPL di bawah elemen <slices>, yang harus muncul tepat setelah bagian concepts.

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

Sama seperti konsep, setiap bagian memiliki id (countries_slice) yang mengidentifikasi bagian tersebut secara unik dalam set data.

Slice berisi dua jenis referensi konsep: Dimensi dan metrik. Nilai metrik bervariasi dengan nilai dimensi. Di sini, nilai population (metrik) bervariasi menurut dimensi country dan year.

Sama seperti konsep, slice menyertakan referensi ke tabel yang berisi data slice. Tabel yang direferensikan harus memiliki satu kolom untuk setiap dimensi dan metrik irisan. Sama seperti konsep, dimensi dan metrik slice dipetakan ke kolom tabel dengan ID yang sama.

Tabel Slice

Tabel untuk slice populasi kita muncul di bagian tables pada file 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>

Perhatikan bahwa kolom year dilengkapi dengan atribut format yang menentukan cara tahun diformat. Format tanggal yang didukung adalah format yang ditentukan oleh format DateTime Joda.

Tabel countries_slice menentukan kolom tabel dan jenisnya, serta mengarah ke file CSV yang berisi data. File CSV terlihat seperti ini:

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

Setiap baris tabel data berisi kombinasi unik dimensi country dan year, beserta nilai metrik population yang sesuai (misalnya populasi - metrik - Afganistan pada 1960 - dimensi).

Perhatikan bahwa nilai di kolom country cocok dengan nilai/ID konsep country, yang merupakan kode 2 huruf ISO 3166 negara.

Data CSV untuk bagian harus memenuhi batasan berikut:

  • Setiap nilai kolom dimensi (seperti country dan year) tidak boleh kosong. Nilai untuk kolom metrik (seperti population) boleh kosong. Nilai kosong tidak diwakili oleh karakter apa pun.
  • Setiap nilai kolom dimensi yang mereferensikan konsep harus ada dalam data konsep tersebut. Misalnya, nilai AF harus ada dalam tabel data konsep country.
  • Setiap kombinasi unik dari nilai dimensi, misalnya AF, 2000, hanya dapat terjadi sekali.
  • Data harus diurutkan berdasarkan kolom dimensi non-waktu (dalam urutan apa pun), lalu, secara opsional, berdasarkan kolom lainnya. Jadi, misalnya, dalam tabel dengan kolom [date, dimension1, dimension2, metric1, metric2], Anda dapat mengurutkan menurut dimension1, lalu dimension2, lalu date, tetapi tidak dengan date, kemudian dimensi.

Ringkasan

Pada tahap ini, kita memiliki cukup DSPL untuk mendeskripsikan data populasi negara. Ringkasnya, yang harus kita lakukan adalah:

  • Buat header DSPL dan deskripsi set data serta penyedianya
  • Buat satu konsep untuk populasi dan konsep lainnya untuk negara, dengan file csv yang menghitung semua negara dan namanya.
  • Buat bagian dengan jumlah populasi kita untuk negara dari waktu ke waktu, yang merujuk pada konsep tahun yang sudah ditentukan dalam set data waktu yang diimpor dari Google.

Dalam tutorial ini, kita akan memperkaya set data dengan menambahkan lebih banyak dimensi dalam lebih banyak bagian, serta lebih banyak metrik yang dikelompokkan menurut topik.

Menambahkan Dimensi: Negara Bagian AS

Sekarang, mari kita memperkaya set data dengan menambahkan data populasi untuk negara bagian di Amerika Serikat. Pertama-tama, kita harus menentukan konsep untuk status. Ini sangat mirip dengan konsep negara yang kami tentukan sebelumnya.

<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>

Referensi properti dan ekstensi konsep

Konsep status memperkenalkan beberapa fitur baru DSPL.

Pertama, status memperluas konsep lain, geo:location (ditentukan dalam set data geografis eksternal yang kita impor di awal set data kita). Secara semantik, ini berarti state adalah jenis geo:location. Konsekuensinya adalah elemen ini mewarisi semua atribut dan properti geo:location. Secara khusus, lokasi menentukan properti untuk latitude dan longitude; dengan memperluas konsep sebelumnya, properti ini juga diterapkan ke status. Selain itu, karena lokasi mewarisi entity:entity, status juga mendapatkan semua properti yang terakhir, termasuk name, description, dan info_url.

Catatan: Konsep negara yang didefinisikan sebelumnya secara teknis seharusnya juga diperluas dari geo:location. Titik ini dihilangkan sebelumnya agar lebih mudah; kami telah menyertakan lokasi ke pewarisan negara, namun, dalam file XML final.

Catatan: Anda dapat menggunakan konstruksi extends di set data Anda sendiri untuk menggunakan kembali informasi yang ditentukan oleh set data lain. Untuk menggunakan extends, semua instance konsep Anda adalah instance valid dari konsep yang akan Anda perluas. Ekstensi memungkinkan Anda menambahkan properti dan atribut tambahan, serta membatasi kumpulan instance untuk sebagian instance dari konsep yang diperluas.

Selain pewarisan, properti status juga memperkenalkan ide referensi konsep. Secara khusus, konsep status memiliki properti yang disebut country, yang mereferensikan konsep negara yang kita buat di atas. Hal ini dilakukan dengan menggunakan atribut concept. Perhatikan bahwa properti ini tidak memberikan ID, hanya referensi konsep. Ini sama dengan membuat ID dengan nilai yang sama dengan ID konsep yang direferensikan (yaitu, country dalam contoh ini). Hubungan hierarkis antara negara bagian dan wilayah ditangkap dengan memiliki atribut isParent="true" pada referensinya. Secara umum, dimensi dengan hubungan hierarkis, seperti geografi, harus direpresentasikan dengan cara ini, dengan konsep turunan yang memiliki properti yang mereferensikan konsep induk menggunakan atribut isParent.

Definisi tabel untuk status terlihat seperti ini:

<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>

Kolom negara memiliki nilai konstan untuk semua negara bagian. Menentukannya dalam DSPL menghindari pengulangan nilai tersebut untuk setiap status dalam data. Perhatikan juga bahwa kami telah menyertakan kolom untuk name, latitude, dan longitude karena status telah mewarisi properti ini dari geo:location. Di sisi lain, beberapa properti yang diwarisi (misalnya, description) tidak memiliki kolom; tidak masalah jika properti dihilangkan dari tabel definisi konsep, maka nilainya diasumsikan tidak ditentukan untuk setiap instance konsep.

File CSV akan terlihat seperti ini:

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
...

Karena kita telah memiliki konsep untuk populasi dan tahun, kita dapat menggunakannya kembali untuk menentukan bagian baru untuk populasi negara bagian.

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

Definisi tabel data terlihat seperti ini:

<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>

Dan file CSV akan terlihat seperti ini:

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

Tunggu, mengapa kami membuat potongan baru, bukan menambahkan dimensi lain ke yang sebelumnya?

Slice dengan dimensi untuk status dan negara tidak akan benar, karena beberapa baris akan ditujukan untuk data negara dan beberapa baris akan ditujukan untuk data negara bagian. Tabel akan memiliki "lubang" untuk beberapa dimensi, yang tidak diizinkan (ingat bahwa nilai yang tidak ada hanya diizinkan untuk metrik dan bukan dimensi).

Dimensi bertindak sebagai "kunci utama" untuk bagian. Artinya, setiap baris data harus memiliki nilai untuk semua dimensi dan tidak ada dua baris data yang dapat memiliki nilai yang sama persis untuk semua dimensi.

Menambahkan Metrik: Tingkat Pengangguran

Sekarang, mari kita tambahkan metrik lain ke set data:

<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>

Bagian info dari metrik ini memiliki nama, deskripsi, dan URL (menautkan ke Biro Statistik Tenaga Kerja AS).

Konsep ini juga memperluas konsep kanonis quantity:rate. Set data kuantitas menentukan konsep inti untuk mewakili kuantitas numerik. Dalam set data, Anda harus membuat konsep numerik dengan memperluas konsep kuantitas yang sesuai. Dengan demikian, konsep population yang ditentukan di atas, secara teknis, harus diperluas dari quantity:amount.

Atribut konsep

Konsep ini juga memperkenalkan konstruksi atribut. Dalam contoh ini, atribut digunakan untuk menyatakan bahwa unemployment_rate adalah persentase. Atribut is_percentage diwarisi dari konsep quantity:rate yang diperluas oleh konsep ini. Informasi ini digunakan oleh Penjelajah Data Publik untuk menunjukkan tanda persen saat memvisualisasikan data.

Atribut menyediakan mekanisme umum untuk melampirkan key-value pair ke konsep (berlawanan dengan properti, yang mengaitkan nilai tambahan dengan instance konsep). Sama seperti konsep dan properti, atribut memiliki id, info, dan type. Seperti halnya properti, properti ini dapat mereferensikan konsep lain.

Atribut bukan hanya untuk hal umum yang sudah ditetapkan, seperti properti numerik. Anda dapat menentukan atribut sendiri untuk konsep.

Menambahkan Data Tingkat Pengangguran untuk Negara Bagian AS

Sekarang kami siap menambahkan data tingkat pengangguran untuk negara bagian AS. Karena tingkat pengangguran adalah metrik dan kita sudah memiliki data populasi untuk negara bagian, kita bisa menambahkannya ke bagian yang sudah dibuat untuk dimensi negara bagian dan tahun:

<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>

... dan tambahkan kolom lain ke definisi tabel:

<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>

... dan ke file 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

Kami mengatakan sebelumnya bahwa untuk setiap irisan, dimensi membentuk kunci utama untuk irisan tersebut. Selain itu, setiap set data hanya dapat berisi satu bagian untuk kombinasi dimensi tertentu. Semua metrik yang tersedia untuk dimensi ini harus berasal dari bagian yang sama.

Dimensi Lainnya: Pengelompokan Populasi berdasarkan Gender

Mari kita perkaya set data dengan perincian populasi berdasarkan gender untuk negara. Sekarang, Anda mulai mengenal latihan... Pertama-tama, kita perlu menambahkan konsep untuk gender:

<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>

Bagian info konsep gender memiliki pluralName, yang menyediakan teks yang akan digunakan untuk merujuk ke beberapa instance konsep gender. Bagian info juga menyertakan totalName, yang menyediakan teks yang akan digunakan untuk merujuk ke semua instance konsep gender secara keseluruhan. Keduanya digunakan oleh Penjelajah Data Publik untuk menampilkan informasi yang terkait dengan konsep gender. Secara umum, Anda harus menyediakannya untuk konsep yang dapat digunakan sebagai dimensi.

Perhatikan bahwa konsep gender juga diperluas dari entity:entity. Ini adalah praktik yang baik untuk konsep yang digunakan sebagai dimensi, karena memungkinkan Anda menambahkan nama, URL, dan warna kustom untuk berbagai instance konsep.

Konsep gender merujuk pada tabel genders_table, yang berisi kemungkinan nilai untuk gender dan nama tampilannya (dihilangkan di sini).

Untuk menambahkan populasi berdasarkan gender ke set data, kita perlu membuat bagian baru (ingat: setiap kombinasi dimensi yang tersedia sesuai dengan bagian dalam set data).

<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>

Definisi tabel untuk potongan tersebut terlihat seperti ini:

<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>

File CSV untuk tabel akan terlihat seperti ini:

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

Dibandingkan dengan negara, populasi, dan bagian pengangguran sebelumnya, bagian ini memiliki dimensi tambahan; setiap nilai metrik populasi tidak hanya sesuai dengan negara dan tahun tertentu, tetapi juga gender tertentu.

Perhatikan bahwa kita telah membuat set data "sparse". Tidak semua metrik tersedia untuk semua dimensi: populasi tersedia untuk negara dan negara bagian AS, setiap tahun, sementara tingkat pengangguran hanya tersedia untuk negara. Pengelompokan berdasarkan gender hanya tersedia untuk populasi menurut negara; tidak tersedia untuk metrik tingkat pengangguran, dan bukan untuk dimensi negara bagian. Ketersebaran juga dapat terjadi pada tingkat data, dengan metrik tertentu tidak memiliki nilai untuk nilai dimensi tertentu, namun tidak direpresentasikan dalam DSPL.

Topik

Fitur terakhir DSPL yang akan kita gunakan di set data adalah topik. Topik digunakan untuk mengklasifikasikan konsep secara hierarkis, dan digunakan oleh aplikasi untuk membantu pengguna membuka data Anda.

Dalam file DSPL, topik muncul tepat sebelum konsep. Berikut adalah contoh hierarki topik:

<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>

Anda dapat menyarangkan topik sedalam yang diperlukan.

Untuk menggunakan topik, Anda hanya perlu mereferensikannya dari definisi konsep, seperti berikut:

<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>

Konsep dapat mereferensikan lebih dari satu topik.

Mengirimkan Set Data

Setelah Anda membuat set data, langkah berikutnya adalah membuat zip dan mengupload file zip ke alat Google Public Data Explorer. Jika Anda mengalami masalah, lihat FAQ, yang mencakup diskusi tentang masalah upload yang paling umum.

Sebagai referensi, Anda juga dapat mendownload file XML lengkap dan paket set data lengkap yang terkait dengan tutorial ini.

Langkah Selanjutnya

Selamat atas pembuatan set data DSPL pertama Anda! Setelah memahami dasar-dasarnya, sebaiknya Anda membaca Panduan Developer, yang antara lain mendokumentasikan fitur DSPL "lanjutan" seperti dukungan multibahasa dan konsep yang dapat dipetakan.

Anda juga dapat melihat beberapa contoh set data lainnya.