$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 ClassProperties extends SimpleTopLevelQuery { 00012 00013 public ClassProperties(DialogModule mod) { 00014 super(mod); 00015 } 00016 00017 @Override 00018 public String match(String q) { 00019 00020 Matcher matcher = Pattern.compile("([w|W]hat do you know about ([a-zA-Z0-9]*?)s\\?)").matcher(q); 00021 if(matcher.find()) { 00022 q=matcher.group(2); 00023 q=DialogModule.toProlog(q); 00024 dialog_module.setCurrentObject(q); 00025 00026 // TODO: update query 00027 String query = "rdf_has(ias_map:"+q+", P, O)"; 00028 00029 HashMap<String, Vector<PrologValue>> res = DialogModule.executeJSONPrologQuery(query); 00030 00031 Vector<PrologValue> prop = res.get("P"); 00032 Vector<PrologValue> obj = res.get("O"); 00033 00034 String r = q.substring(0,1).toUpperCase() + q.substring(1,q.length()) +" has "; 00035 for(int i=0;i<prop.size();i++) { 00036 00037 String pr=prop.get(i).toString(); 00038 String val=obj.get(i).toString(); 00039 00040 if(pr.contains("#")) { 00041 pr=DialogModule.removeSingleQuotes(pr).split("#")[1]; 00042 } 00043 00044 if(val.startsWith("literal(type('http://www.w3.org/2001/XMLSchema#float")) { 00045 val=DialogModule.removeSingleQuotes(val).substring(56, val.length()-3); 00046 } else if(val.contains("#")) { 00047 val=DialogModule.removeSingleQuotes(val).split("#")[1]; 00048 } 00049 r+= DialogModule.toEnglish(pr) +" "+ DialogModule.toEnglish(val); 00050 00051 if(i==prop.size()-2) { 00052 r+=", and "; 00053 } else if (i==prop.size()-1) { 00054 r+="."; 00055 } else { 00056 r+=", "; 00057 } 00058 } 00059 00060 return r+".\n"; 00061 } 00062 00063 00064 return null; 00065 } 00066 }