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