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 -------------------- } %>