gudangdata.org [0] adalah situs yang berisi gudang data referensi terbuka+gratis. Fokus cakupan adalah data-data yang berkaitan dengan Indonesia dan/atau untuk keperluan aplikasi berbahasa Indonesia, mis: daftar provinsi di Indonesia, daftar negara dengan nama Inggris dan Indonesia, dsb.
Sumber data dari berbagai situs, misalnya: Wikipedia Indonesia [1], situs-situs pemerintah, dll.
Data di situs ini diusahakan akurat, terkini, lengkap, disimpan dalam format standar, menghindari duplikasi (mis: memanfaatkan konsep foreign ID seperti di database relasional).
Repositori ini berisi seluruh data yang ada di gudangdata.org.
Mayoritas data (terletak di direktori table/
) disimpan dalam format CSV dan
dapat dengan mudah dimuat ke program spreadsheet, diimpor ke database
relasional, diparse oleh skrip, dll. Akan disediakan juga skrip (di bin/
)
untuk mengimpor ke database SQL, mengupdate data di database SQL, dll.
Silakan baca dokumen ini secara keseluruhan. Jika Anda masih memiliki pertanyaan mengenai cara pemakaian, dapat menghubungi [4]. Silakan lihat juga effort serupa seperti [3].
Creative Commons Attribution (BY).
Untuk detilnya, lihat: http://en.wikipedia.org/wiki/Creative_Commons_licenses
- Baca dokumen ini hingga selesai.
- Mendaftar ke github [6] jika belum.
- Fork proyek ini [7].
- Kirimkan patch (pull request) atau laporkan isu lewat github.
- Jika Anda berminat ikut menjadi editor, silakan hubungi [4]. Tugas editor adalah mengecek akurasi data/perubahan data.
Untuk saat ini, silakan lihat Panduan bagi pengguna.
Mayoritas data ada dalam bentuk tabel 2 dimensi. Data tabel ditaruh di direktori
table/
. Di bawah direktori table/
, setiap tabel ditaruh di subdirektori
masing-masing. Data tabel umumnya disimpan dalam file data.csv
karena format
CSV cukup universal dan memudahkan impor ke aplikasi spreadsheet atau yang
lainnya. Terdapat readme.txt
di setiap subdirektori tabel yang memperkenalkan
sekilas tentang isi tabel, sejarah, isu, dll. Enkoding data adalah UTF-8,
kecuali disebutkan lainnya di file readme.txt
. Metadata disimpan dalam file
meta.yaml
(atau meta.json
).
Metadata ditulis dalam bahasa schema Sah [8] untuk memudahkan validasi
Schema untuk metadata tabel mengikuti table_spec yang didefinisikan oleh modul
Perl Perinci::Sub::Gen::AccessTable [9]. Untuk contohnya, lihat meta.yaml
pada
salah satu tabel yang memilikinya.
Schema untuk metadata kolom belum ditulis, untuk saat ini silakan mengintip
dokumentasi modul Perl Perinci::Sub::Gen::AccessTable [9]. Untuk contohnya,
lihat meta.yaml
pada salah satu tabel yang memilikinya.
- Nama file, tabel, kolom menggunakan huruf kecil. Alasan: agar tidak
bermasalah dengan filesystem yang case-insensitive, kita menghindari
permainan huruf besar/kecil.
Ini juga termasuk akronim, contoh
html
bukanHTML
,css
bukanCSS
,js
ataujavascript
bukanJavaScript
. Ini mencegah kebingungan singkatan yang kadang memiliki varian huruf besar/kecil (contoh:perl
danPerl
danPERL
). - Hanya gunakan huruf di karakter pertama dan huruf/garis bawah (
_
)/angka di karakter selanjutnya. Alasan: ini paling aman karena membuat nama bisa langsung dipakai sebagai nama kolom di database, nama variabel di bahasa pemrograman, dll. Catatan: metadata memuat juga nama alias bahasa Indonesia. - Gunakan kata penuh dan bukan singkatan (contoh:
province
bukanprov
, ~), kecuali jika singkatan sudah lazim/sering dipakai dan relatif tidak ambigu. Contoh yang bisa disingkat:ind
untuk bahasa dan wilayah Indonesia,eng
untuk english (keduanya amat sering dipakai).org
untuk organization (juga sering, amat mempersingkat).str
untuk string,len
untuk length, dll.Jika ragu mengenai penyingkatan, hubungi editor [4].
Daftar lainnya:
- min untuk minimum, minimal
- max untuk maximum, maximal
- Jika nama terdiri dari dua atau lebih kata, pisahkan tiap kata dengan garis
bawah (
_
), contoh:paper_size
. Jangan menyatukan kata (papersize
) atau menggunakan camel case (paperSize
). Alasan: pemisahan dengan_
membuat kata majemuk lebih mudah dibaca terutama untuk pembaca nonnatif.Ini juga termasuk kata-kata yang disingkat (contoh:
str_len
dan bukanstrlen
), kecuali beberapa perkecualian yang amat jarang. Alasan: lebih konsisten.Perkecualian: nama skrip (di direktori
bin/
) menggunakan setrip-
sebagai pemisahnya. Ini hanya masalah gaya saja, saya merasakan-
lebih umum digunakan untuk skrip dan lebih mudah diketik. - Berikan prefiks
idn_
(kode negara ISO 3-huruf untuk Indonesia) untuk entiti yang berisi data spesifik untuk bahasa/wilayah Indonesia (contoh: tabelidn_province
berisi daftar provinsi di Indonesia, sementaraprovince
saja mencerminkan tabel berisi daftar provinsi di seluruh duniaBerikan prefiks
ind_
(kode bahasa ISO 3-huruf untuk bahasa Indonesia) untuk kolom yang berisi teks bahasa Indonesia. Contoh:ind_name
menyatakan kolom berisi nama Indonesia. Sebaliknya, gunakan prefiks kolomeng_
untuk data yang berisi bahasa Inggris, walaupun ini tidak wajib dan umumnya hanya perlu jika ada kolom Indonesia-nya.Pada nama alias bahasa Indonesia, akhiran
_idn
,_ind
, dan_eng
dapat digunakan sebagai padanannya. - Nama file: selalu gunakan akhiran (ekstensi) file yang mencerminkan isi file.
Contoh:
changes.txt
dan bukanchanges
saja. Alasan: Ini membantu skimming dan juga membantu saat bekerja di sistem operasi yang mengandalkan ekstensi file (seperti Windows). Perkecualian: dokumen berformat Org disimpan ke file berakhiran.txt
. - Gunakan bahasa Inggris (contoh:
name
bukannama
). Ejaan American english lebih disukai daripada British (contoh:color
bukancolour
,center
bukancentre
,organization
bukanorganisation
). Alasan: Di bahasa pemrograman bahasa Inggris (terutama dialek American) sangat dominan, tidak perduli apakah program tersebut dikembangkan oleh orang Indonesia atau luar. Ini memudahkan nama yang kita pilih dipakai langsung sebagai nama variabel, modul, dsb di bahasa pemrograman.Penggunaan bahasa Inggris juga akan memudahkan pertukaran data dengan Wikipedia bahasa Inggris misalnya.
- Gunakan bentuk kata tunggal (singular) dan bukan jamak (plural). Alasan:
lebih sederhana dan menghindari aturan penjamakan bahasa Inggris (mis: apple
-> apples tapi leaf -> leaves, sheep -> sheep, dsb). Perkecualian: kolom yang
selalu berisi array/list, contoh
eng_tags
. - Untuk tabel yang berisi nama (mis: tabel
country
berisi data nama negara), usahakan selalu memberikan nama Inggris maupun nama Indonesia, dan jika applicable, nama natif. Ini berguna bagi aplikasi-aplikasi bilingual. - Hindari pemberian nama tabel
..._list
ataulist_of_...
(atau aliasnyadaftar_
) karena redundan. Contoh:country
dannegara
, tidak perlucountry_list
ataudaftar_negara
;ind_district
dankecamatan_ind
, tidak perlulist_of_ind_district
ataudaftar_kecamatan_ind
.Sekali lagi, jika ragu tentang penamaan, harap hubungi editor. Konsistensi penamaan amat penting bagi saya.
- Gunakan format Org [5] untuk dokumen readme. Untuk memudahkan, Anda dapat menyunting file menggunakan Emacs (org-mode) atau vim (menggunakan salah satu plugin untuk TODO)
- Gunakan marjin kanan 80 kolom. Alasan: 80 kolom adalah marjin umum yang aman di semua terminal.
- Gunakan
TODO
untuk menandai bagian TODO (yang akan ditulis nanti).
- Gunakan format Org.
- Satu item list untuk satu perubahan. Berikan tanggal.
- Entri perubahan dapat ditulis dalam bahasa Indonesia atau Inggris.
- Ini sebetulnya panduan umum, tapi: usahakan untuk menghasilkan diff yang minimal, dengan kata lain jangan melakukan perubahan yang tidak perlu. Contoh: jika Anda menyunting tabel CSV di Excel, jangan mengubah urutan sorting, menambahkan/membuang kutip. Jangan mengubah line ending dari Unix ke DOS. Jika hanya satu record yang ditambahkan ke tabel, seharusnya diff hanya satu baris.
- Boleh dalam bahasa Indonesia atau Inggris (saya memperkirakan semua kontributor rata-rata adalah orang Indonesia atau mereka yang kenal bahasa Indonesia).
- Ikuti panduan pesan commit git yang baik di: TODO
Karena saya penggemar Emacs :-) Org mudah dibaca secara verbatim. Selain markup teks, Org juga mendukung tabel, formula, struktur hirarkis. Cocok untuk membuat dokumen terstruktur. Jika Anda mengalami kesulitan memahami format ini, jangan ragu menghubungi penulis [4].
Saat ini saya merasakan data di proyek GDI belum bisa langsung saya pakai untuk menjadi sumber bagi modul-modul Perl, misalnya karena belum ada standardisasi format, beberapa kolom yang saya perlukan belum ada, dll. Tujuan ke depan memang merge ke GDI (jika bisa), agar tidak ada duplicated efforts.
[0] http://gudangdata.org/ [1] http://id.wikipedia.org/ [2] http://www.cpan.org/ [3] http://gdi.id-php.org/ [4] mailto:stevenharyanto@gmail.com [5] http://orgmode.org/ [6] https://github.com/ [7] https://github.com/sharyanto/gudangdata [8] http://metacpan.org/module/Data::Sah [9] http://metacpan.org/module/Perinci::Sub::Gen::AccessTable