001/** 002 * Copyright (C) 2007 - 2016, Jens Lehmann 003 * 004 * This file is part of DL-Learner. 005 * 006 * DL-Learner is free software; you can redistribute it and/or modify 007 * it under the terms of the GNU General Public License as published by 008 * the Free Software Foundation; either version 3 of the License, or 009 * (at your option) any later version. 010 * 011 * DL-Learner is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 014 * GNU General Public License for more details. 015 * 016 * You should have received a copy of the GNU General Public License 017 * along with this program. If not, see <http://www.gnu.org/licenses/>. 018 */ 019package org.dllearner.kb.sparql; 020 021import com.google.common.collect.Lists; 022 023import java.net.MalformedURLException; 024import java.net.URL; 025import java.util.Collections; 026import java.util.LinkedList; 027import java.util.List; 028 029/** 030 * One sparql endpoint configuration, 031 * made to comply with Jena. 032 * 033 * @author Sebastian Hellmann 034 * 035 */ 036public class SparqlEndpoint { 037 URL url; 038 List<String> defaultGraphURIs; 039 List<String> namedGraphURIs; 040 041 //public HashMap<String, String> parameters = new HashMap<String, String>(); 042 043 public SparqlEndpoint(URL u) { 044 this.url = u; 045 this.defaultGraphURIs= new LinkedList<>(); 046 this.namedGraphURIs= new LinkedList<>(); 047 } 048 049 public SparqlEndpoint(URL u, List<String> defaultGraphURIs, List<String> namedGraphURIs) { 050 this.url = u; 051 this.defaultGraphURIs=defaultGraphURIs; 052 this.namedGraphURIs=namedGraphURIs; 053 } 054 055 public SparqlEndpoint(URL url, String defaultGraphURI) { 056 this(url, Collections.singletonList(defaultGraphURI), Collections.emptyList()); 057 } 058 059 public URL getURL() { 060 return this.url; 061 } 062 063 public static SparqlEndpoint create(String url, String defaultGraphURI) throws MalformedURLException { 064 return create(url, defaultGraphURI == null ? Collections.emptyList() : Lists.newArrayList(defaultGraphURI)); 065 } 066 067 public static SparqlEndpoint create(String url, List<String> defaultGraphURIs) throws MalformedURLException { 068 return create(url, defaultGraphURIs, Collections.emptyList()); 069 } 070 071 public static SparqlEndpoint create(String url, List<String> defaultGraphURIs, List<String> namedGraphURIs) throws MalformedURLException { 072 return new SparqlEndpoint(new URL(url), defaultGraphURIs, namedGraphURIs); 073 } 074 075 public String getHTTPRequest() { 076 String ret = this.url.toString()+"?"; 077 ret += (defaultGraphURIs.isEmpty())?"":"default-graph-uri="+defaultGraphURIs.get(0)+"&"; 078 ret += "query="; 079 return ret; 080 } 081 082 public List<String> getDefaultGraphURIs() { 083 return defaultGraphURIs; 084 } 085 086 public List<String> getNamedGraphURIs() { 087 return namedGraphURIs; 088 } 089 090 @Override 091 public String toString(){ 092 return getHTTPRequest(); 093 } 094 095 096 public static SparqlEndpoint getEndpointByName(String name) { 097 098 name = name.toUpperCase(); 099 100 switch (name) { 101 case "DBPEDIA": 102 return getEndpointDBpedia(); 103 case "GOVTRACK": 104 return getEndpointGovTrack(); 105 case "SPARQLETTE": 106 return getEndpointSparqlette(); 107 case "SWCONFERENCE": 108 return getEndpointSWConference(); 109 case "REVYU": 110 return getEndpointRevyu(); 111 case "MYOPENLINK": 112 return getEndpointMyOpenlink(); 113 case "MUSICBRAINZ": 114 return getEndpointMusicbrainz(); 115 default: 116 return null; 117 } 118 } 119 120 121 public static List<SparqlEndpoint> listEndpoints() { 122 LinkedList<SparqlEndpoint> ll = new LinkedList<>(); 123 ll.add(getEndpointDBpedia()); 124 ll.add(getEndpointDOAPspace()); 125 ll.add(getEndpointGovTrack()); 126 ll.add(getEndpointMusicbrainz()); 127 ll.add(getEndpointMyOpenlink()); 128 ll.add(getEndpointRevyu()); 129 ll.add(getEndpointSWConference()); 130 ll.add(getEndpointUSCensus()); 131 ll.add(getEndpointSparqlette()); 132 return ll; 133 } 134 135 public static SparqlEndpoint getEndpointDBpedia() { 136 URL u = null; 137 try { 138 u = new URL("http://dbpedia.org/sparql"); 139 } catch (Exception e) { 140 e.printStackTrace(); 141 } 142 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 143 defaultGraphURIs.add("http://dbpedia.org"); 144 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 145 } 146 147 public static SparqlEndpoint getEndpointDBpediaLiveAKSW() { 148 URL u = null; 149 try { 150// u = new URL("http://dbpedia.aksw.org:8899/sparql"); 151 u = new URL("http://live.dbpedia.org/sparql"); 152 } catch (Exception e) { 153 e.printStackTrace(); 154 } 155 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 156 defaultGraphURIs.add("http://dbpedia.org"); 157 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 158 } 159 160 public static SparqlEndpoint getEndpointDBpediaHanne() { 161 URL u = null; 162 try { 163 u = new URL("http://hanne.aksw.org:8892/sparql"); 164 } catch (Exception e) { 165 e.printStackTrace(); 166 } 167 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 168 defaultGraphURIs.add("http://dbpedia.org"); 169 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 170 } 171 172 public static SparqlEndpoint getEndpointDBpediaLiveOpenLink() { 173 URL u = null; 174 try { 175 u = new URL("http://dbpedia-live.openlinksw.com/sparql"); 176 } catch (Exception e) { 177 e.printStackTrace(); 178 } 179 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 180 defaultGraphURIs.add("http://dbpedia.org"); 181 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 182 } 183 184 public static SparqlEndpoint getEndpointLOD2Cloud() { 185 URL u = null; 186 try { 187 u = new URL("http://lod.openlinksw.com/sparql/"); 188 } catch (Exception e) { 189 e.printStackTrace(); 190 } 191 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 192// defaultGraphURIs.add("http://dbpedia.org"); 193 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 194 } 195 196 public static SparqlEndpoint getEndpointDBpediaLOD2Cloud() { 197 URL u = null; 198 try { 199 u = new URL("http://lod.openlinksw.com/sparql/"); 200 } catch (Exception e) { 201 e.printStackTrace(); 202 } 203 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 204 defaultGraphURIs.add("http://dbpedia.org"); 205 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 206 } 207 208 public static SparqlEndpoint getEndpointLinkedGeoData() { 209 URL u = null; 210 try { 211 u = new URL("http://linkedgeodata.org/sparql"); 212 } catch (Exception e) { 213 e.printStackTrace(); 214 } 215 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 216 //TODO defaultGraphURIs.add("http://geonames.org"); 217 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 218 } 219 220 public static SparqlEndpoint getEndpointLinkedMDB() { 221 URL u = null; 222 try { 223 u = new URL("http://www.linkedmdb.org/sparql"); 224 } catch (Exception e) { 225 e.printStackTrace(); 226 } 227 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 228 //TODO defaultGraphURIs.add("http://geonames.org"); 229 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 230 } 231 232 public static SparqlEndpoint getEndpointGovTrack() { 233 URL u = null; 234 try { 235 u = new URL("http://www.rdfabout.com/sparql"); 236 } catch (Exception e) { 237 e.printStackTrace(); 238 } 239 return new SparqlEndpoint(u, new LinkedList<>(), new LinkedList<>()); 240 } 241 242 public static SparqlEndpoint getEndpointRevyu() { 243 URL u = null; 244 try { 245 u = new URL("http://revyu.com/sparql"); 246 } catch (Exception e) { 247 e.printStackTrace(); 248 } 249 return new SparqlEndpoint(u, new LinkedList<>(), new LinkedList<>()); 250 } 251 252 public static SparqlEndpoint getEndpointMyOpenlink() { 253 URL u = null; 254 try { 255 u = new URL("http://myopenlink.net:8890/sparql/"); 256 } catch (Exception e) { 257 e.printStackTrace(); 258 } 259 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 260 defaultGraphURIs.add("http://myopenlink.net/dataspace"); 261 262 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 263 } 264 265 public static SparqlEndpoint getEndpointDOAPspace() { 266 URL u = null; 267 try { 268 u = new URL("http://doapspace.org/sparql"); 269 } catch (Exception e) { 270 e.printStackTrace(); 271 } 272 273 return new SparqlEndpoint(u); 274 } 275 276 public static SparqlEndpoint getEndpointSWConference() { 277 URL u = null; 278 try { 279 u = new URL("http://data.semanticweb.org:8080/openrdf-sesame/repositories/SWC"); 280 } catch (Exception e) { 281 e.printStackTrace(); 282 } 283 284 return new SparqlEndpoint(u); 285 } 286 287 public static SparqlEndpoint getEndpointMusicbrainz() { 288 URL u = null; 289 try { 290 u = new URL("http://dbtune.org/musicbrainz/sparql"); 291 } catch (Exception e) { 292 e.printStackTrace(); 293 } 294 return new SparqlEndpoint(u); 295 } 296 297 public static SparqlEndpoint getEndpointUSCensus() { 298 URL u = null; 299 try { 300 u = new URL("http://www.rdfabout.com/sparql"); 301 } catch (Exception e) { 302 e.printStackTrace(); 303 } 304 LinkedList<String> defaultGraphURIs= new LinkedList<>(); 305 defaultGraphURIs.add("http://www.rdfabout.com/rdf/schema/census/"); 306 307 return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<>()); 308 } 309 310 public static SparqlEndpoint getEndpointSparqlette() { 311 URL u = null; 312 try { 313 u = new URL("http://www.wasab.dk/morten/2005/04/sparqlette/"); 314 } catch (Exception e) { 315 e.printStackTrace(); 316 } 317 return new SparqlEndpoint(u); 318 } 319 320 @Override 321 public int hashCode() { 322 final int prime = 31; 323 int result = 1; 324 result = prime * result + ((defaultGraphURIs == null) ? 0 : defaultGraphURIs.hashCode()); 325 result = prime * result + ((namedGraphURIs == null) ? 0 : namedGraphURIs.hashCode()); 326 result = prime * result + ((url == null) ? 0 : url.hashCode()); 327 return result; 328 } 329 330 @Override 331 public boolean equals(Object obj) { 332 if (this == obj) 333 return true; 334 if (obj == null) 335 return false; 336 if (getClass() != obj.getClass()) 337 return false; 338 SparqlEndpoint other = (SparqlEndpoint) obj; 339 if (defaultGraphURIs == null) { 340 if (other.defaultGraphURIs != null) 341 return false; 342 } else if (!defaultGraphURIs.equals(other.defaultGraphURIs)) 343 return false; 344 if (namedGraphURIs == null) { 345 if (other.namedGraphURIs != null) 346 return false; 347 } else if (!namedGraphURIs.equals(other.namedGraphURIs)) 348 return false; 349 if (url == null) { 350 if (other.url != null) 351 return false; 352 } else if (!url.equals(other.url)) 353 return false; 354 return true; 355 } 356}