$search
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 }