Luthfi Idris Cerita Linux, Jerman Wirausaha dan Hidup Sederhana

Belajar Semantic MediaWiki

Daftar isi:

Intro

Belakangan ini saya sibuk belajar mediawiki. Bagi yang gak tau mediawiki, mediawiki adalah backend dari wikipedia. Project kali ini yang diminta adalah MEMBUAT mediawiki menjadi software project management. Dimana nanti akan ada group-group kecil yang mengerjakan tugas-tugas kecil. Kemudian ada fitur meeting, submit subproject yang sudah selesai dan terakhir adalah display kegiatan yang sedang berlangsung dengan Gannt chart.

Yang menarik dari projek ini adalah menggunakan fitur semantic yang ada pada mediawiki. Semantic adalah proses menjadikan data mendapatkan sebuah meaning/arti. Contohnya adalah kata Jakarta, apabila kita membuat semantic dari kata Jakarta. Maka kalimat yang benar adalah Jakarta adalah ibukota Indonesia. Di sini berlaku kalimat bahasa formal yaitu Subjek(S), Predikat(P), Objek(O). Jakarta adalah objek, Indonesia adalah subjek dan adalah ibukota adalah predikat.

Semantic MediaWiki

Kebetulan pada mediawiki sudah ada extension/plugin/addon untuk semantic. Namanya Semantic Media Wiki(SMW). Sudah ada komunitasnya sendiri ada di website Semantic MediaWiki. Untuk instalasinya bisa dibaca sendiri di sini. Bagaimana cara kerja SMW? Pada dasarnya tiap semantic butuh yang namanya Property dan Value. Properti ini adalah predikat seperti di paragraf atas. Sedangkan value adalah objeknya. Properti harus punya tipe data sehingga nanti dikenal oleh SMW. Misal, Properti adalah ibukota dengan tipe data string karena objeknya pasti kata bukan angka.

[[Adalah ibukota::Jakarta]]

Tenang aja, valuenya bisa lebih dari satu kok. Misal propertinya kota-kota di Indonesia. Nanti valuenya bisa lebih dari satu. Sekarang, gimana caranya untuk menampilkan value yang sudah kita masukkan dari properti dan value atau mau mengolahnya sehingga value tersebut bisa digunakan juga di halaman lain. Ada 2 cara yaitu #show untuk satu output saja dan #ask untuk query yang menghasilkan beberapa output.

{{#show: main_page |?Adalah ibukota}}
{{#ask: [[Categori:Kota]] |?Adalah ibukota}}

Page Forms

Okeh, kita sekarang sudah tahu gimana caranya bikin semantic data dan query/browse datanya. Masalahnya cara itu harus kita lakukan satu-satu dan berulang-ulang. Gak efisien. Oleh karena itu ada cara yang lebih mudah tanpa tahu kode-kode mediawiki yaitu dengan Form. Kita bisa entri data semantic dengan Form dan mengolahnya dengan cara semantic. Untuk instalasi lihat di sini.

Untuk membuat semantic form ada 2 cara. Cara pertama pake wizard yaitu create a class. Cara kedua buat satu-satu komponennya. Urutan membuat komponen-komponennya adalah :

  1. Create property. Di sini kita membuat properti, tipe data dan mungkin value-value yang boleh ada.
  2. Create template. Template ini seperti cara untuk membuat
  3. Create form.
  4. Create category.

Setelah membuat form beserta komponennya maka kita bisa menggunakan form tersebut untuk membuat halaman yang berisi data semantic. Untuk mengakses form tersebut ada 2 cara :

  1. Tidak langsung. Diharuskan membuat nama halamannya terlebih dahulu
  2. Langsung. Nama halaman sama dengan isian yang ada dalam form tersebut.

Ada yang menarik dari Page Forms di Semantic MediaWiki ini. Jadi gini, misal kita punya halaman pada satu template dimana ada 2 property yang saling berhubungan. Organisasi dengan anggota misalnya. Dengan menambahkan value dependent on=NamaTemplate[NamaField] kita bisa filter pada combobox kedua field pada form. Apabila dipilih pada field organisasi, maka pada field anggota hanya akan muncul anggota yang sesuai dengan organisasi sebelumnya.

Semantic Form Upload

Kadang kita perlu juga upload file di mediawiki. Caranya gampang banget, untuk aktifin hanya user yang bisa upload, edit file LocalSettings.php

$wgEnableUploads = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";

Selanjutnya kita pengen form yang ada fitur upload filenya. Berikut contoh caranya, tambahkan uploadable pada field yang akan gunakan sebagai upload.

| {{{field|Upload File|uploadable}}}

Adakalanya kita pengen upload lebih dari satu file, tapi trik ini tambahin di template ya bukan di form. Form tetap seperti di atas.

! Upload file
|{{#arraymap:{{{Upload file|}}} | , | x1010x | [[Image:x1010x]] [[Has uploadFile::x1010x| ]] }}

Semantic Maps

Nama extensionnya sekarang sudah berubah, bukan semantic maps lagi tetapi MAPS saja. Semantic Maps digunakan untuk menampilkan peta/lokasi suatu tempat. Contohnya dalam sebuah properti dengan tipe Geographic Coordinate. Kita bisa menyimpan data dengan tipe tersebut lalu menampilkan dalam format peta. Berikut ada contoh field dalam form yang menggunakan layanan google maps.

! Location:
| {{{field|Location|input type=googlemaps|height=350|width=350}}}

Di sini kita menggunakan input type=googlemaps. Untuk contoh templatenya sebagai berikut:

{{#display_map:coordinates={{{Location|}}}|width=400|height=200}}

Baris di atas akan menampilkan peta dari google maps berdasarkan data dari field Location pada form. Untuk instalasi Maps, silahkan ke link berikut.

Semantic Compound Queries

Udah tau kan kita bisa query ke data yang udah kita input lewat semantic form. Nah, sayangnya query tersebut cuma bisa untuk satu kategori misalnya. Padahal ini berguna banget untuk misalnya menampilkan kalender dari beberapa kategori. Contoh tanggal dari kategori meeting, deliverable dan activity. Untuk itu dibutuhkan Semantic Compounds Queries. Berikut ada contoh compound queries untuk menampilkan kalender dari tiga kategori.

{{#compound_query:
[[Category:Meeting]]
[[Has meeting start::>{{#calendarstartdate:}}]] [[Has meeting end::<{{#calendarenddate:}}]]
;?Has meeting start=Start
;?Has meeting end=End;color=blue
|[[Category:Deliverable]]
[[Has deliverable deliveryDueDate::+]]
;?Has deliverable deliveryDueDate;color=orange
|[[Category:Activity]]
[[Has activity start::>{{#calendarstartdate:}}]] [[Has activity end::<{{#calendarenddate:}}]]
;?Has activity start=Start
;?Has activity end=End;color=green
|format=calendar
}}

Akan ada tiga warna pada kalender untuk membedakan berasal dari kategori mana berasal. Biru untuk kategori meeting, hijau untuk kategori deliverable dan hijau untuk kategori activity. Masing-masing kategori punya satu property yang bertipe tanggal yang akan ditampilkan dalam kalender. Untuk instalasi semantic compound queries silahkan ke link berikut.

Magic Words & NOCACHE

Pada mediawiki ada namanya magic words, ini contohnya kayak gini . SUBPAGENAME akan mengeluarkan output nama terakhir dari URL mediawiki. Misalnya kita punya url http://wikipedia.com/w/Title:halaman. Maka kalau kita nulis yang keluar cuma kata halaman. Kalau outputnya jadi Title:halaman. Untuk lebih lengkapnya coba klik link ini

NOCACHE adalah salah satu dari magic words juga, tetapi gak termasuk ke dalam defaultnya mediawiki. Kita diharuskan install extension lagi namanya MagicNoCache. NOCACHE ini berguna agar tiap query yang dilakukan selalu update. Contohnya, kita melakukan perubahan pada template atau nambah entri baru. Nanti kalau gak pake NOCACHE, entri baru pada tabelnya masih pake yang ada di cache. Jadi datanya itu-itu aja, gak update. Kalau pake NOCACHE, data yang ada pada halaman itu bakalan selalu diambil dari database bukan cache. Untuk cara pakenya gampang, tinggal tambahin __NOCACHE__ di akhir dari halaman yang akan diberikan.

Backup mediawiki, sqlbackup dan scp

Setelah edit mediawiki kesana kemari, sayang banget kalau tiba-tiba filenya terhapus atau terformat atau databasenya error. Buat menghindari hal-hal seperti itu maka kita lakukan backup terlebih dahulu. Sebelum melakukan backup ada baiknya kita bikin mediawikinya Read Only. Jadi kalau ada yang lagi pakai wiki dia gak bisa ngerubah databasenya. Caranya setting di LocalSettings.php parameter $wgReadOnly = "Maintenance Mode";. Pertama backup databasenya dulu baru kemudian backup file-filenya. Untuk backup database, kita lakukan dengan nge-dump databasenya ke dalam sebuah file.

 mysqldump -h localhost -u user -p --default-character-set=binary dbname > backup.sql

keterangan:

  • -h : host
  • -u : user
  • -p : password

perintah di atas akan membuat backup.sql sebagai file hasil dump. File tersebut bisa digunakan untuk menrestore mediawiki. Nah, sekarang giliran filenya. Kita pengen salin semua file dari server ke komputer lokal. Kita pake program scp. Perintah ini dilakukan dari komputer lokal ya, bukan dari server.

scp -r user@server:/path/ke/instalasi/mediawiki/ /home/user/backup/mediawiki/

Update.php

Kadang ada extension yang membutuhkan kita supaya mengupdate database struktur. Ini dikarenakan ada perubahan/penambahan dalam struktur database yang dibutuhkan oleh extension tersebut. Kadang untuk upgrade mediawiki juga butuh menjalankan update.php. Caranya tinggal ikutin instruksi di halaman ini.

Kesimpulan

Mediawiki ditambah dengan semantic menghasilkan wiki yang bukan hanya cuma menyimpan tulisan, gambar atau suara. Tetapi bisa merupakan database dimana data yang berbentuk kata atau gambar bisa kita query dan tampilkan ke dalam berbentuk macam format. Menggunakan form juga sangat memudahkan untuk menginput data dan menghindari dari segala kesalahan apabila ditulis manual.

Banyak hal yang saya tulis berasal dari buku yang saya baca. Penting bagi yang ingin mempelajari sesuatu, carilah buku yang bagus tentang itu. Karenanya kita akan belajar lebih mendalam dan luas tentang itu. Buku yang saya gunakan adalah “Working with MediaWiki” ditulis oleh Yaron Koren.

« Pos Sebelumnya Pos Sesudahnya »