| 102 |  | private Path convertJ2Path(String jpath){ | 
                        | 103 |  | return null; | 
                        | 104 |  | } | 
                      
                        |  | 121 | private Path convertJ2Path(String jpath) throws JSONException{ | 
                        |  | 122 |  | 
                        |  | 123 | JSONObject object = new JSONObject(jpath); | 
                        |  | 124 | String startClass = object.getJSONObject("startClassURI").toString(); | 
                        |  | 125 | int width = Integer.parseInt(object.getJSONObject("width").toString()); | 
                        |  | 126 | JSONArray classLinks = object.getJSONArray("classLinks"); | 
                        |  | 127 | JSONObject jsonObject; | 
                        |  | 128 | List <ClassLink> list = null; | 
                        |  | 129 |  | 
                        |  | 130 | for (int i=0;i<classLinks.length();i++) | 
                        |  | 131 | { | 
                        |  | 132 | jsonObject = classLinks.getJSONObject(i); | 
                        |  | 133 | String propertyURI = jsonObject.getJSONObject("propertyURI").toString(); | 
                        |  | 134 | String linkedClassURI = jsonObject.getJSONObject("linkedClassURI").toString(); | 
                        |  | 135 | String linkedLiteralDatatypeURI = jsonObject.getJSONObject("linkedLiteralDatatypeURI").toString(); | 
                        |  | 136 | int numOfLinks = Integer.parseInt(jsonObject.getJSONObject("numOfLinks").toString()); | 
                        |  | 137 | int numOfLinkedInstances = Integer.parseInt(jsonObject.getJSONObject("numOfLinkedInstances").toString()); | 
                        |  | 138 | int numOfOriginInstances = Integer.parseInt(jsonObject.getJSONObject("numOfOriginInstances").toString()); | 
                        |  | 139 | int numOfOriginClassInstances = Integer.parseInt(jsonObject.getJSONObject("numOfOriginInstances").toString()); | 
                        |  | 140 | int numOfLinkedClassInstances = Integer.parseInt(jsonObject.getJSONObject("numOfLinkedClassInstances").toString()); | 
                        |  | 141 |  | 
                        |  | 142 | ClassLink classLink =new ClassLink(propertyURI, linkedClassURI, linkedLiteralDatatypeURI, null, | 
                        |  | 143 | numOfLinks,  numOfOriginInstances,  numOfLinkedInstances, | 
                        |  | 144 | numOfOriginClassInstances,  numOfLinkedClassInstances, | 
                        |  | 145 | false, false); | 
                        |  | 146 | list.add(classLink); | 
                        |  | 147 | } | 
                        |  | 148 | Path path = new Path(startClass,  list,  width); | 
                        |  | 149 | return path; | 
                        |  | 150 | } | 
                        |  | 151 |  | 
                        |  | 152 | private String convertPath2SPARQL(Path path) throws Exception{ | 
                        |  | 153 | if( path == null ){ | 
                        |  | 154 | throw new Exception("Path is null."); | 
                        |  | 155 | } | 
                        |  | 156 | String startClass = path.getStartClass(); | 
                        |  | 157 | List<ClassLink> classLinks = path.getClassLinks(); | 
                        |  | 158 |  | 
                        |  | 159 | StringBuffer queryStr = new StringBuffer(); | 
                        |  | 160 | StringBuffer selStr = new StringBuffer(); | 
                        |  | 161 | StringBuffer whereStr = new StringBuffer(); | 
                        |  | 162 | //      if(num==0){ | 
                        |  | 163 | int num = classLinks.size(); | 
                        |  | 164 | //      } | 
                        |  | 165 |  | 
                        |  | 166 | queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"); | 
                        |  | 167 | queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"); | 
                        |  | 168 |  | 
                        |  | 169 | selStr.append("SELECT "); | 
                        |  | 170 | whereStr.append("WHERE { \n"); | 
                        |  | 171 |  | 
                        |  | 172 | String properties = null; | 
                        |  | 173 | String objectClasses = null; | 
                        |  | 174 | String subjectClasses = null; | 
                        |  | 175 | Direction direction = null; | 
                        |  | 176 | int i = 0; | 
                        |  | 177 | int k = 0; | 
                        |  | 178 | for (ClassLink link :classLinks ) | 
                        |  | 179 | { | 
                        |  | 180 | properties = link.getPropertyURI(); | 
                        |  | 181 | objectClasses = link.getLinkedClassURI(); | 
                        |  | 182 | direction = link.getDirection(); | 
                        |  | 183 |  | 
                        |  | 184 | if (i==0) | 
                        |  | 185 | subjectClasses = startClass; | 
                        |  | 186 |  | 
                        |  | 187 | selStr.append("?c").append(i).append(" "); | 
                        |  | 188 | selStr.append("?l").append(i).append(" "); | 
                        |  | 189 |  | 
                        |  | 190 | if(i == classLinks.size()) | 
                        |  | 191 | selStr.append("\n"); | 
                        |  | 192 |  | 
                        |  | 193 |  | 
                        |  | 194 | whereStr.append("?c").append(i). | 
                        |  | 195 | append(" rdf:type "). | 
                        |  | 196 | append("<"). | 
                        |  | 197 | append(subjectClasses). | 
                        |  | 198 | append(">"). | 
                        |  | 199 | append(".\n"); | 
                        |  | 200 |  | 
                        |  | 201 | whereStr.append("OPTIONAL{\n?c"+i+" rdfs:label ?l"+i+".}\n"); | 
                        |  | 202 |  | 
                        |  | 203 |  | 
                        |  | 204 | if(direction == Direction.forward) | 
                        |  | 205 | { | 
                        |  | 206 | whereStr.append("?c").append(i).append(" "); | 
                        |  | 207 | whereStr.append("<").append(properties).append("> "); | 
                        |  | 208 | whereStr.append("?c").append(i+1).append(".\n"); | 
                        |  | 209 | } | 
                        |  | 210 | else | 
                        |  | 211 | { | 
                        |  | 212 | whereStr.append("?c").append(i+1).append(" "); | 
                        |  | 213 | whereStr.append("<").append(properties).append("> "); | 
                        |  | 214 | whereStr.append("?c").append(i).append(".\n"); | 
                        |  | 215 | } | 
                        |  | 216 |  | 
                        |  | 217 | subjectClasses = objectClasses; | 
                        |  | 218 | i++; | 
                        |  | 219 | k++; | 
                        |  | 220 | if(k>=num){ | 
                        |  | 221 | break; | 
                        |  | 222 | } | 
                        |  | 223 | } | 
                        |  | 224 |  | 
                        |  | 225 | selStr.append("?c").append(i).append(" \n"); | 
                        |  | 226 | selStr.append("?l").append(i).append(" \n"); | 
                        |  | 227 | whereStr.append("?c").append(i).append(" rdf:type "). | 
                        |  | 228 | append("<"). | 
                        |  | 229 | append(subjectClasses). | 
                        |  | 230 | append(">"). | 
                        |  | 231 | append(".\n"); | 
                        |  | 232 | whereStr.append("OPTIONAL{\n?c"+i+" rdfs:label ?l"+i+".}\n"); | 
                        |  | 233 |  | 
                        |  | 234 |  | 
                        |  | 235 | queryStr.append(selStr).append(whereStr); | 
                        |  | 236 |  | 
                        |  | 237 | queryStr.append("}"); | 
                        |  | 238 | //OPTIONAL | 
                        |  | 239 | queryStr.append("LIMIT 100\n");; | 
                        |  | 240 |  | 
                        |  | 241 | //System.out.println(queryStr); | 
                        |  | 242 | return queryStr.toString(); | 
                        |  | 243 |  |