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, jenispopulation
adalahinteger
. 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 propertiid
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
danyear
) tidak boleh kosong. Nilai untuk kolom metrik (sepertipopulation
) 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 konsepcountry
. - 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 menurutdimension1
, laludimension2
, laludate
, tetapi tidak dengandate
, 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.