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