LANDASAN TEOR
5.4 Implementasi Fungsi Penyajian Informasi 1 Halaman daftar artis
5.4.2 Halaman kategori artis
Halaman kategori artis ini mirip dengan halaman daftar artis, hanya saja tiap artis yang ada dikelompokkan berdasarkan jenis masing-masing artis, seperti artis komedi, aktor Amerika, aktris yang juga sekaligus model, dan masih banyak lagi. Pengguna dapat memilih kategori artis yang dikehendaki dengan memilih sekumpulan kategori yang tertera dalam combo-box, lalu mengklik button pilih. Selanjutnya sistem akan menampilkan daftar artis sesuai dengan kategori yang dipilih oleh pengguna. Tampilan dari halaman ini ditunjukkan pada Gambar 5.15.
Gambar 5.15 Tampilan halaman kategori artis
Adapun cuplikan kode untuk menampilkan daftar artis berdasarkan kategori tertentu dapat dilihat pada Gambar 5.16.
public ArrayList<DaftarArtis> getListArtistWithCategory(String uri_kategori){
if(model == null)
{model = getModelFromJenaDatabase(Settings.getSetting("main model"));
data = new ArrayList<DaftarArtis>(); ListStatementRelatedWithURI getIt = new ListStatementRelatedWithURI();
int x = offset * Integer.valueOf(Settings.getSetting("limit result"));
query = Prefix.getPrefix(new String[]{"rdf", "rdfs", "skos", "dbpp", "dbpo"});
query+= "select distinct ?artis ?nama where {" + " ?artis rdf:type dbpo:Person. " + " ?artis rdfs:label ?nama. " +
" ?artis skos:subject <"+uri_kategori+">. "+ " FILTER(lang(?nama) = 'en'). "+
Query _query = QueryFactory.create(query);
QueryExecution qexec = QueryExecutionFactory.create(_query, model);
try {
ResultSet results = qexec.execSelect(); while ( results.hasNext()) {
QuerySolution soln = results.nextSolution(); ... } } catch(Exception e){ e.getMessage(); e.printStackTrace(); } finally {qexec.close(); } return data; }
Gambar 5.16 Cuplikan kode untuk daftar artis per kategori 5.4.3 Halaman daftar film
Tampilan dari halaman daftar film ini mirip dengan tampilan pada halaman daftar artis. Sejumlah film ditampilkan maksimal 20 judul film per halaman dan diurutkan berdasarkan tanggal rilis film tersebut. Disediakan pula link previous dan next apabila pengguna hendak melihat daftar fim sebelum atau sesudahnya. Tampilan halaman daftar film ini dapat dilihat pada Gambar 5.17.
Gambar 5.17 Tampilan halaman daftar film
Adapun cuplikan kode untuk me-retrieve data-data film dapat dilihat pada Gambar 5.18.
private void arrangeQuery(){
query = Prefix.getPrefix(new String[]{"rdf","rdfs","dbpp", "dbpo", "xsd"});
if(filter.isEmpty()){ query += "" +
"select distinct ?any ?title where{" + "?any rdf:type dbpo:Film." +
"?any rdfs:label ?title." +
"?any dbpo:releaseDate ?rilis." + "FILTER( lang(?title) = 'en' )." + "} " ;
query_total = query; } else {
query += "" +
"select distinct ?any ?title where{" + "?any rdf:type dbpo:Film." +
"?any rdfs:label ?title." +
"?any dbpo:releaseDate ?rilis." + "FILTER( lang(?title) = 'en' )." +
"FILTER regex(str(?title), \""+filter+"\", \"i\")" + "} " ; query_total = query; } String _ob = ""; if(order.compareToIgnoreCase("DESC") == 0){ query+="ORDER BY DESC("+_ob+") ";
} else query+="ORDER BY "+_ob+" "; int x = Integer.valueOf(offset) *
Integer.valueOf(Settings.getSetting("limit result")); query+="OFFSET "+x+" LIMIT "+Settings.getSetting("limit result");
log.info("The query to display list film is: \n"+query); }
Gambar 5.18 Cuplikan kode untuk menampilkan daftar film 5.4.4 Halaman kategori film
Halaman ini mengelompokkan daftar film yang hendak ditampilkan berdasarkan kategori film tersebut. Pertama kali ditampilkan, halaman ini memuat daftar kategori dari film ke dalam combo-box. Selanjutnya pengguna memilih salah satu dari daftar kategori tersebut dan mengklik button pilih untuk menampilkan sejumlah film berdasarkan kategori yang dipilih. Daftar film yang ditampilkan dibatasi maksimal 20 film per halaman. Tampilan halaman kategori film dapat dilihat pada Gambar 5.19.
Gambar 5.19 Tampilan halaman kategori film
Adapun cuplikan kode untuk menampilkan daftar film berdasarkan kategori dapat dilihat pada Gambar 5.20.
public ArrayList<DaftarFilm> getListFilmWithCategory(String uri_kategori){
if(model == null){
model = getModelFromJenaDatabase(Settings.getSetting("main model"));
}
data = new ArrayList<DaftarFilm>(); ListStatementRelatedWithURI getIt = new ListStatementRelatedWithURI();
int x = offset * Integer.valueOf(Settings.getSetting("limit result"));
String query = Prefix.getPrefix(new String[]{"rdf", "rdfs", "skos", "dbpp", "dbpo"});
query+= "select distinct ?film ?judul where {" + " ?film rdf:type dbpo:Film." +
" ?film rdfs:label ?judul. " +
" ?film skos:subject <"+uri_kategori+">. " + " FILTER(lang(?judul) = 'en'). "+
"} order by ?film offset "+x+" limit "+Settings.getSetting("limit result");
log.info(query);
Query _query = QueryFactory.create(query);
QueryExecution qexec = QueryExecutionFactory.create(_query, model);
try {
ResultSet results = qexec.execSelect(); while ( results.hasNext()) {
QuerySolution soln = results.nextSolution(); ...
} } catch(Exception e){ e.getMessage(); e.printStackTrace(); } finally { qexec.close(); } return data; }
Gambar 5.20 Cuplikan kode untuk daftar film per kategori 5.4.5 Form pembuatan berita
Dengan form ini administrator dapat membuat berita tambahan terkait film atau artis yang tidak tersajikan pada halaman daftar film atau daftar artis. Disini administrator memilih instance model yang dijadikan target beserta query
SPARQL untuk menampilkan berita yang diinginkan. Input yang diberikan nantinya disimpan ke dalam sistem dan pada halaman depan ditampilkan link daftar berita yang dibuat. Apabila ada pengunjung yang mengklik link tersebut, maka query SPARQL yang terkait akan dieksekusi dan menghasilkan berita yang diminta. Tampilan form ini dapat dilihat pada Gambar 5.21.
Adapun cuplikan kode untuk menyimpan input data pada form pembuatan berita dapat dilihat pada Gambar 5.22.
Public boolean AddBerita(String model, String judul, String deskripsi, String query){
DataConnection _dc = new DataConnection(); Connection _con = _dc.createConnection(); if(!isModelAlreadyExist(model))
{ return false; }
String sql = “insert into berita set no = null, judul = ‘”+judul+”’, nama_graf_sumber = ‘”+model+”’ , query_sparql = ‘”+query+”’, deskripsi = ‘”+deskripsi+”’ “;
log.info(“Eksekusi query berupa: “+sql); try{
Statement _stat = _con.createStatement(); _stat.executeUpdate(sql); }catch(Exception e){ e.getMessage(); e.printStackTrace(); return false; } return true; }
Gambar 5.22 Cuplikan kode untuk menyimpan input pada form pembuatan berita
Pada method AddBerita(), terdapat sejumlah parameter yang menampung nilai dari input yang diberikan seperti String model, String
judul, String deskripsi, dan String query . Selanjutnya parameter
tersebut disertakan ke dalam variabel sql untuk membentuk perintah query SQL berupa insert data. Nantinya query ini dieksekusi menggunakan perintah
_stat.executeUpdate(sql) dan apabila berhasil akan menghasilkan nilai
Setelah serangkaian fungsi pada sistem berhasil diimplementasikan, langkah selanjutnya menguji apakah fungsi tersebut berjalan sesuai dengan rancangan yang telah ditetapkan sebelumnya. Pada fungsi penarikan data, pengujian dilakukan dengan melakukan request langsung ke DBPedia melalui form yang disediakan, fungsi reasoning dilakukan dengan memasukkan input berupa file ontologi atau string rule, fungsi pembuatan halaman berita dengan memasukkan sejumlah input seperti string SPARQL ke dalam form pembuatan berita, dan terakhir fungsi pencarian dengan memasukkan sejumlah input terhadap atribut-atribut tertentu untuk memperoleh hasil pencarian yang spesifik.