Kode program modul QP (qproc.jsp)
LAMPIRAN 6 Kode program modul QP (qproc.jsp)
//-------------------- MENGAMBIL NILAI PARAMETER --------------------
pertanyaan = request.getParameter("pertanyaan"); pertanyaan = pertanyaan.toLowerCase(); out.println("<b>Pertanyaan Anda : </b>"+pertanyaan+"<br><br>");
//-------------------- MODUL QUESTION PROCESSING --------------------
//-------------------- MENHILANGKAN STOPWORD --------------------
querystring = "SELECT DISTINCT ?kt WHERE { ?Qproc <"+NS+"hassw> ?kt}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ; for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; kt = soln.getLiteral("kt").getString(); kt = kt+" ";
pertanyaan = pertanyaan.replaceAll(kt,""); } } catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
//-------------------- PROSES PARSING KALIMAT -------------------- i = 1; StringTokenizer st = new StringTokenizer(pertanyaan); while (st.hasMoreTokens()) {
kata[i] = st.nextToken(); //out.print(kata[i]+"<br>"); i++; } //jmkata = i - 1;
// out.print("jumlah kata : "+jmkata+"<br>");
//-------------------- MENGECEK KATA TANYA -------------------- i=1; querystring =
"SELECT DISTINCT ?kt "+ "WHERE { ?Qproc <"+NS+"hasqw> ?kt."+ "filter regex ('"+kata[i]+"',?kt,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ; for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; kt = soln.getLiteral("kt").getString();
} } catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
pola = ""; if (kt != "") {
//out.print("Kata tanya : "+kt+"<br>"); pola = pola + "KT"; //out.print("Pola : "+pola+"<br>"); hapus = kt+ " "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print("pertanyaan : "+pertanyaan+"<br>");
//-------------------------------------------------------
if (kt.equalsIgnoreCase("siapa")) { i++; //--------- CEK DP1 --------------------------------------- if (kt.equalsIgnoreCase("siapa")) { i++; //--------- CEK DP1 ---------------------------------------
"SELECT DISTINCT ?dp1 "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+ "?Qp <"+NS+"dp1> ?dp."+ "?dp <"+NS+"hasdp> ?dp1."+ "filter regex ('"+kata[i]+"',?dp1,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ; for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ;
dp1 = soln.getLiteral("dp1").getString();
} } catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (dp1 != "") { pola = pola +"DP1"; i++; //out.print("DP1 : "+dp1+"<br>"); //out.print("Pola : "+pola+"<br>");
hapus = dp1+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
//------------- CEK OP ------------------------------- querystring =
"SELECT DISTINCT ?op "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+
"?Qp <"+NS+"op> ?opx."+ "?opx <"+NS+"hasop> ?op."+
"filter regex (?op,'"+kata[i]+"','i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ;
op = soln.getLiteral("op").getString(); }
} catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (op != "") { pola = pola +"OP"; i++; //out.print("OP : "+op+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = op+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
//------------ CEK DP2 ----------------------
querystring =
"SELECT DISTINCT ?dp2 "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+ "?Qp <"+NS+"dp2> ?dp."+ "?dp <"+NS+"hasdp> ?dp2."+ "filter regex
('"+kata[i]+"',?dp2,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; dp2 = soln.getLiteral("dp2").getString();
} } catch (Exception e) {out.print("maaf ada kesalahan "+e);} } } catch (Exception e) {out.print("maaf ada kesalahan "+e);}
pola = pola +"DP2"; i++; //out.print("DP2 : "+dp2+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = dp2+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
else { //------------- CEK OP ------------------------------- querystring =
"SELECT DISTINCT ?op "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+
"?Qp <"+NS+"op> ?opx."+ "?opx <"+NS+"hasop> ?op."+
"filter regex (?op,'"+kata[i]+"','i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ;
op = soln.getLiteral("op").getString(); }
} catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (op != "") { pola = pola +"OP"; i++; //out.print("OP : "+op+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = op+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
//------------ CEK DP2 ----------------------
querystring =
"SELECT DISTINCT ?dp2 "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+ "?Qp <"+NS+"dp2> ?dp."+ "?dp <"+NS+"hasdp> ?dp2."+ "filter regex
('"+kata[i]+"',?dp2,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; dp2 = soln.getLiteral("dp2").getString();
} } catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (dp2 != "") {
pola = pola +"DP2"; i++; //out.print("DP2 : "+dp2+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = dp2+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>"); pola = pola +"DP2"; i++; //out.print("DP2 : "+dp2+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = dp2+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
"SELECT DISTINCT ?dp1 "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+ "?Qp <"+NS+"dp1> ?dp."+ "?dp <"+NS+"hasdp> ?dp1."+ "filter regex ('"+kata[i]+"',?dp1,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ; for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ;
dp1 = soln.getLiteral("dp1").getString();
} } catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (dp1 != "") { pola = pola +"DP1"; i++; //out.print("DP1 : "+dp1+"<br>"); //out.print("Pola : "+pola+"<br>");
hapus = dp1+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
//------------- CEK OP ------------------------------- querystring =
"SELECT DISTINCT ?op "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+
"?Qp <"+NS+"op> ?opx."+ "?opx <"+NS+"hasop> ?op."+
"filter regex (?op,'"+kata[i]+"','i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ;
op = soln.getLiteral("op").getString(); }
} catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (op != "") { pola = pola +"OP"; i++; //out.print("OP : "+op+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = op+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
//------------ CEK DP2 ----------------------
querystring =
"SELECT DISTINCT ?dp2 "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+ "?Qp <"+NS+"dp2> ?dp."+
"?dp <"+NS+"hasdp> ?dp2."+ "filter regex
('"+kata[i]+"',?dp2,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; dp2 = soln.getLiteral("dp2").getString();
} catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (dp2 != "") {
pola = pola +"DP2"; i++; //out.print("DP2 : "+dp2+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = dp2+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
if (kt.equalsIgnoreCase("bagaimana") || kt.equalsIgnoreCase("bagaimanakah") || kt.equalsIgnoreCase("kapan") || kt.equalsIgnoreCase("kapankah") || kt.equalsIgnoreCase("dimana") || kt.equalsIgnoreCase("dimanakah") || kt.equalsIgnoreCase("berapa") || kt.equalsIgnoreCase("berapakah")) {
i++; //--------- CEK DP1 --------------------------------------- querystring =
"SELECT DISTINCT ?dp1 "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+
"?Qp <"+NS+"dp1> ?dp."+ "?dp <"+NS+"hasdp> ?dp1."+
"filter regex ('"+kata[i]+"',?dp1,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ; for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ;
dp1 = soln.getLiteral("dp1").getString();
} } catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (dp1 != "") { pola = pola +"DP1"; i++; //out.print("DP1 : "+dp1+"<br>"); //out.print("Pola : "+pola+"<br>");
hapus = dp1+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
//------------ CEK DP2 ---------------------- querystring =
"SELECT DISTINCT ?dp2 "+
"WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qp <"+NS+"kt> ?Qw."+ "?Qp <"+NS+"dp2> ?dp."+
"?dp <"+NS+"hasdp> ?dp2."+ "filter regex ('"+kata[i]+"',?dp2,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ;
dp2 = soln.getLiteral("dp2").getString(); }
} catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close() ; }
if (dp2 != "") { pola = pola +"DP2"; i++; //out.print("DP2 : "+dp2+"<br>"); //out.print("Pola : "+pola+"<br>"); hapus = dp2+" "; pertanyaan = pertanyaan.replaceFirst(hapus,""); //out.print(pertanyaan+"<br>");
//----------- CEK VALIDITAS POLA KALIMAT ------------------------
querystring = "SELECT DISTINCT ?pattern "+ "WHERE { ?Qw <"+NS+"hasqw> '"+kt+"'."+ "?Qw <"+NS+"pattern> ?pattern."+ "filter regex ('"+pola+"',?pattern)}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; pattern = soln.getLiteral("pattern").getString();
} catch (Exception e) {out.print("maaf ada kesalahan "+e);} finally { qexec.close(); }
if (pattern != "") {valid = true;} else {valid = false;} if (valid==true){out.print("Kalimat Valid <br>");}
else { out.print("Maaf pertanyaan yang anda ajukkan tidak dapat diproses. "); out.print("Kalimat pertanyaan anda tidak valid. <br>");}
//----------- PENAMBAHAN KATA KUNCI --------------------------------- if (valid==true) {
if (pola.equals("KTOP")) { dp1 = "nama"; if (op.equalsIgnoreCase("pemeran")|| op.equalsIgnoreCase("memerankan") || op.equalsIgnoreCase("berperan")) { dp2 = "tokoh";} else {dp2="judul";} } if (pola.equals("KTOPDP2")) { dp1 = "nama"; } if (pola.equals("KTDP1")) { dp2 = "judul"; } if (pola.equals("KTDP1OP")) { if (op.equalsIgnoreCase("terdapat")) {dp2 = "judul";} else if (op.equalsIgnoreCase("diperankan")) {dp2 = "nama";} else if (op.equalsIgnoreCase("meraih") || op.equalsIgnoreCase("memenangkan")
|| op.equalsIgnoreCase("mendapat") || op.equalsIgnoreCase("memperoleh") ||
op.equalsIgnoreCase("peraih") || op.equalsIgnoreCase("pemenang")){
dp2 = "penghargaan";} else if (op.equalsIgnoreCase("disutradarai") || op.equalsIgnoreCase("ditulis") || op.equalsIgnoreCase("diproduseri") || op.equalsIgnoreCase("dibintangi")|| op.equalsIgnoreCase("dimainkan")) {dp2 = "nama"; } else if (op.equalsIgnoreCase("pemeran")|| op.equalsIgnoreCase("memerankan") || op.equalsIgnoreCase("berperan")) { dp2 = "tokoh";} else {dp2 = "judul";} }
out.print("Kata tanya : "+kt+"<br>"); out.print("Kata DP1 : "+dp1+"<br>"); out.print("Kata OP : "+op+"<br>"); out.print("Kata DP2 : "+dp2+"<br>");
//-------------------- AKHIR MODUL QUESTION PROCESSING -------------------- %>
LAMPIRAN 7
Kode program modul QR (qret.jsp)
<% if(valid) { //---------------- MENENTUKAN VARIABEL QUERY 1 ------------------------------------
querystring = "SELECT ?qvar "+ "WHERE { ?Qproc <"+NS+"dpobj> ?qvar."+ "?Qproc <"+NS+"hasdp> '"+dp1+"'}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; qvar1 = soln.getLiteral("qvar").getString();
} finally { qexec.close() ; } out.print("<b>Variabel Query 1 : </b>"+qvar1+"<br>");
//---------------- MENENTUKAN VARIABEL QUERY 2 ------------------------------------ querystring = "SELECT ?qvar "+ "WHERE { ?Qproc <"+NS+"dpobj> ?qvar."+ "?Qproc <"+NS+"hasdp> '"+dp2+"'}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ) {
soln = results.nextSolution() ; qvar2 = soln.getLiteral("qvar").getString();
} finally { qexec.close() ; } out.print("<b>Variabel Query 2 : </b>"+qvar2+"<br>");
//----------- MENENTUKAN STATEMENT QUERY ------------------------------------------ //if (kt.equalsIgnoreCase("apakah") || kt.equalsIgnoreCase("siapa")) { querystring = "SELECT DISTINCT ?dtpsubject ?dtppredicate ?dtpobject "+
"WHERE { ?dtp <"+NS+"dpsub> ?dtpsubject."+ "?dtp <"+NS+"dppre> ?dtppredicate."+ "?dtp <"+NS+"dpobj> ?dtpobject."+ "?dtp <"+NS+"hasdp> ?dp."+ "filter regex ('"+dp1+"
"+dp2+"',?dp,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ){
soln = results.nextSolution() ; statsubject = soln.getLiteral("dtpsubject").getString(); statpredicate = soln.getLiteral("dtppredicate").getString(); statobject = soln.getLiteral("dtpobject").getString(); statement = statsubject+" <"+NS+statpredicate+">
"+statobject;
querystat = querystat+statement+"."; out.print("<b>Statement : </b>"+statsubject+"
<\n"+statpredicate+"> \n"+statobject+"<br>");
} finally { qexec.close() ; }
//} //else {
querystring = "SELECT DISTINCT ?dtpsubject ?dtppredicate ?dtpobject "+ "WHERE { ?dtp <"+NS+"opsub> ?dtpsubject."+ "?dtp <"+NS+"oppre> ?dtppredicate."+
"?dtp <"+NS+"hasop> ?dp."+ "filter regex ('"+op+"',?dp,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ){
soln = results.nextSolution() ; statsubject = soln.getLiteral("dtpsubject").getString(); statpredicate = soln.getLiteral("dtppredicate").getString(); statobject = soln.getLiteral("dtpobject").getString(); statement = statsubject+" <"+NS+statpredicate+">
"+statobject;
querystat = querystat+statement+"."; //out.print("<b>Statement : </b>"+statsubject+"
<\n"+statpredicate+"> \n"+statobject+"<br>");
} finally { qexec.close() ; }
//------------------------- MENENTUKAN FILTER REGEX VP ----------------------------- querystring = "SELECT DISTINCT ?dtpsubject ?dtppredicate ?dtpobject "+
"WHERE { ?dtp <"+NS+"dpsub> ?dtpsubject."+ "?dtp <"+NS+"dppre> ?dtppredicate."+ "?dtp <"+NS+"dpobj> ?dtpobject."+ "?dtp <"+NS+"hasdp> ?dp."+ "filter regex ('"+dp2+"',?dp,'i')}";
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ){
soln = results.nextSolution() ; statsubject = soln.getLiteral("dtpsubject").getString(); statpredicate = soln.getLiteral("dtppredicate").getString(); statobject = soln.getLiteral("dtpobject").getString(); statement = statsubject+" <"+NS+statpredicate+">
"+statobject;
//querystat = querystat+statement+"."; //out.print("<b>Statement : </b>"+statsubject+"
<\n"+statpredicate+"> \n"+statobject+"<br>");
} finally { qexec.close() ; }
i = 1; StringTokenizer st1 = new StringTokenizer(pertanyaan); while (st1.hasMoreTokens()) { kata[i] = st1.nextToken(); //out.print(kata[i]+"<br>");
i++;
} jmkata = i - 1; //out.print("jumlah kata : "+jmkata+"<br>");
queryfilter = "{ "+statement + ". filter regex ("+qvar2+",'"+kata[1]+"','i') }"; queryfilterall = queryfilterall + queryfilter;
if (jmkata > 1) { for(i=2;i<=jmkata;i++) { queryfilter = "UNION { "+statement + ". filter regex ("+qvar2+",'"+kata[i]+"','i') }"; queryfilterall = queryfilterall + queryfilter;
out.print("Filter : "+queryfilterall+"<br>");
//-------------------- MELAKUKAN QUERY JAWABAN -------------------- querystring = "SELECT DISTINCT "+qvar1+" "+qvar2+" WHERE {"+querystat+queryfilterall+"}";
//out.print(querystring);
query = QueryFactory.create(querystring) ; qexec = QueryExecutionFactory.create (query,m);
try { results = qexec.execSelect() ;
for ( ; results.hasNext() ; ){
soln = results.nextSolution();
answer1 = soln.getLiteral(qvar1).getString(); answer2 = soln.getLiteral(qvar2).getString();
if (qvar1.equalsIgnoreCase("?mtitle")) { answer1 = "<a href='moviedetail.jsp?answerdetail="+answer1+"'>"+answer1 + "</a>";
if (qvar2.equalsIgnoreCase("?mtitle")) { answer2 = "<a href='moviedetail.jsp?answerdetail="+answer2+"'>"+answer2 + "</a>";
if (qvar1.equalsIgnoreCase("?pname")) { answer1 = "<a href='persondetail.jsp?answerdetail="+answer1+"'>"+answer1 + "</a>";
if (qvar2.equalsIgnoreCase("?pname")) { answer2 = "<a href='persondetail.jsp?answerdetail="+answer2+"'>"+answer2 + "</a>";
if (kt.equalsIgnoreCase("apakah") || kt.equalsIgnoreCase("siapa")) { allanswer = allanswer + "<b>" + answer1 +"</b> "+op+"<b> "+answer2+ "</b><br>";
else { allanswer = allanswer + dp1+" <b>" + answer2 +": </b> "+answer1+ "<br>";
} } finally { qexec.close() ; }
//-------------------- MENAMPILKAN JAWABAN -------------------- if ((answer1 != "") && (answer2 !="")){ out.print("<br><b>Jawaban yang ditemukan : </b><br><br>"); out.print(allanswer); } else { out.print("<br><b>Maaf tidak ada jawaban yang ditemukan</b>"); }
//-------------------- MODUL QUERY RETRIEVAL --------------------
//-------------------- AKHIR MODUL QUERY RETRIEVAL -------------------- } %>