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
htmlbukanHTML,cssbukanCSS,jsataujavascriptbukanJavaScript. Ini mencegah kebingungan singkatan yang kadang memiliki varian huruf besar/kecil (contoh:perldanPerldanPERL). - 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:
provincebukanprov, ~), kecuali jika singkatan sudah lazim/sering dipakai dan relatif tidak ambigu. Contoh yang bisa disingkat:induntuk bahasa dan wilayah Indonesia,enguntuk english (keduanya amat sering dipakai).orguntuk organization (juga sering, amat mempersingkat).struntuk string,lenuntuk 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_lendan 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_provinceberisi daftar provinsi di Indonesia, sementaraprovincesaja 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_namemenyatakan 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_engdapat digunakan sebagai padanannya. - Nama file: selalu gunakan akhiran (ekstensi) file yang mencerminkan isi file.
Contoh:
changes.txtdan bukanchangessaja. 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:
namebukannama). Ejaan American english lebih disukai daripada British (contoh:colorbukancolour,centerbukancentre,organizationbukanorganisation). 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
countryberisi 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
..._listataulist_of_...(atau aliasnyadaftar_) karena redundan. Contoh:countrydannegara, tidak perlucountry_listataudaftar_negara;ind_districtdankecamatan_ind, tidak perlulist_of_ind_districtataudaftar_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
TODOuntuk 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