InstanceProperties.java
Go to the documentation of this file.
00001 package edu.tum.cs.ias.knowrob.mod_dialog.queries;
00002 
00003 import java.util.HashMap;
00004 import java.util.Vector;
00005 import java.util.regex.Matcher;
00006 import java.util.regex.Pattern;
00007 
00008 import edu.tum.cs.ias.knowrob.json_prolog.PrologValue;
00009 import edu.tum.cs.ias.knowrob.mod_dialog.DialogModule;
00010 
00011 public class InstanceProperties extends SimpleTopLevelQuery {
00012 
00013         public InstanceProperties(DialogModule mod) {
00014                 super(mod);
00015         }
00016 
00017         @Override
00018         public String match(String q) {
00019                 
00020 
00021                 Matcher matcher = Pattern.compile("([w|W]hat do you know about it\\?)").matcher(q);
00022                 if(matcher.find()) {
00023                         
00024                         q=this.dialog_module.getCurrentObject();
00025                         
00026                         String query = "(rdf_has("+q+", P, O); (rdf_has("+q+", rdf:type, T), rdf_has(T, P, O)))";
00027                         System.err.println(query);
00028                         
00029                         HashMap<String, Vector<PrologValue>> res = DialogModule.executeJSONPrologQuery(query);
00030 
00031                         
00032                         if(res!=null && res.containsKey("P") && res.containsKey("O")) {
00033                                 
00034                                 Vector<PrologValue> prop = res.get("P");
00035                                 Vector<PrologValue> obj  = res.get("O");
00036 
00037                                 q=DialogModule.toEnglish(q);
00038                                 String r = q.substring(0,1).toUpperCase() + q.substring(1,q.length()) +" ";
00039                                 for(int i=0;i<prop.size();i++) {
00040                                 
00041                                         if(prop.get(i)==null || obj.get(i)==null)
00042                                                 continue;
00043                                         
00044                                         String pr=prop.get(i).toString();
00045                                         String val=obj.get(i).toString();
00046                                         
00047                                         if(pr.contains("#")) {
00048                                                 pr=DialogModule.removeSingleQuotes(pr).split("#")[1];
00049                                         }
00050                                         
00051                                         if(val.startsWith("literal(type('http://www.w3.org/2001/XMLSchema#float")) {
00052                                                 val=DialogModule.removeSingleQuotes(val).substring(56, val.length()-3);
00053                                         } else if(val.contains("#")) {
00054                                                 val=DialogModule.removeSingleQuotes(val).split("#")[1];
00055                                         }
00056                                         r+= DialogModule.toEnglish(pr) +" "+ DialogModule.toEnglish(val);
00057         
00058                                         if(i==prop.size()-2) {
00059                                                 r+=", and ";
00060                                         } else if (i==prop.size()-1) {
00061                                                 r+=".";
00062                                         } else { 
00063                                                 r+=", ";
00064                                         }
00065                                 }
00066                                 return r+"\n";
00067                         } 
00068                 }
00069                         
00070                 matcher = Pattern.compile("([w|W]hat do you know about ([a-zA-Z0-9]*?)\\?)").matcher(q);
00071                 if(matcher.find()) {
00072                         
00073                         q=matcher.group(2);
00074                         dialog_module.setCurrentObject(DialogModule.toProlog(q));
00075                         
00076                         String query = "rdf_has("+DialogModule.toProlog(q)+", P, O)";
00077                         
00078                         HashMap<String, Vector<PrologValue>> res = DialogModule.executeJSONPrologQuery(query);
00079 
00080                         
00081                         if(res!=null && res.containsKey("P") && res.containsKey("O")) {
00082                                 
00083                                 Vector<PrologValue> prop = res.get("P");
00084                                 Vector<PrologValue> obj  = res.get("O");
00085 
00086                                 q=DialogModule.toEnglish(q);
00087                                 String r = q.substring(0,1).toUpperCase() + q.substring(1,q.length()) +" ";
00088                                 for(int i=0;i<prop.size();i++) {
00089                                 
00090                                         if(prop.get(i)==null || obj.get(i)==null)
00091                                                 continue;
00092                                         
00093                                         String pr=prop.get(i).toString();
00094                                         String val=obj.get(i).toString();
00095                                         
00096                                         if(pr.contains("#")) {
00097                                                 pr=DialogModule.removeSingleQuotes(pr).split("#")[1];
00098                                         }
00099                                         
00100                                         if(val.startsWith("literal(type('http://www.w3.org/2001/XMLSchema#float")) {
00101                                                 val=DialogModule.removeSingleQuotes(val).substring(56, val.length()-3);
00102                                         } else if(val.contains("#")) {
00103                                                 val=DialogModule.removeSingleQuotes(val).split("#")[1];
00104                                         }
00105                                         r+= DialogModule.toEnglish(pr) +" "+ DialogModule.toEnglish(val);
00106         
00107                                         if(i==prop.size()-2) {
00108                                                 r+=", and ";
00109                                         } else if (i==prop.size()-1) {
00110                                                 r+=".";
00111                                         } else { 
00112                                                 r+=", ";
00113                                         }
00114                                 }
00115                                 return r+"\n";
00116                         } 
00117                 }
00118 
00119                 
00120                 return null;
00121         }
00122 
00123 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Friends


mod_dialog
Author(s): Moritz Tenorth
autogenerated on Tue Apr 16 2013 00:38:25