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 }