1
|
package eu.dnetlib.data.mapreduce.hbase.lodImport.utils;
|
2
|
import java.io.InputStream;
|
3
|
|
4
|
import org.apache.log4j.Logger;
|
5
|
|
6
|
import com.hp.hpl.jena.query.QueryExecution;
|
7
|
import com.hp.hpl.jena.query.QueryExecutionFactory;
|
8
|
import com.hp.hpl.jena.query.QuerySolution;
|
9
|
import com.hp.hpl.jena.query.ResultSet;
|
10
|
import com.hp.hpl.jena.rdf.model.Model;
|
11
|
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
12
|
|
13
|
/**
|
14
|
* Method: getCoutryURI
|
15
|
*
|
16
|
* @author Giorgos Alexiou
|
17
|
*
|
18
|
*/
|
19
|
|
20
|
public class MapCountries {
|
21
|
|
22
|
/**
|
23
|
* This Method takes ISO ISO_3166_1 codes for Countries as input and returns the respective URI from dbpedia.org as output.
|
24
|
* For example iso639_3 for Germany is "DE" and the respective URI from dbpedia.org is <http://dbpedia.org/resource/Germany>
|
25
|
*
|
26
|
* @param iso_3166_1_Code
|
27
|
* @return country URI <String>
|
28
|
*/
|
29
|
|
30
|
public MapCountries(){
|
31
|
|
32
|
}
|
33
|
|
34
|
private Logger log = Logger.getLogger(this.getClass());
|
35
|
public String getCountryURI(String iso_3166_1_Code){
|
36
|
String countryURI="";
|
37
|
try{
|
38
|
iso_3166_1_Code = iso_3166_1_Code.trim();
|
39
|
|
40
|
if(iso_3166_1_Code.equals("UK") || iso_3166_1_Code.equals("GB")) return "http://dbpedia.org/resource/United_Kingdom";
|
41
|
|
42
|
Model dbpediaCountries = ModelFactory.createDefaultModel();
|
43
|
// URL file = MapCountries.class.getClassLoader().getResource("rdfData/dbpedia_Countries.rdf");
|
44
|
// InputStream is = new FileInputStream(path);
|
45
|
// InputStream is = this.getClass().getResourceAsStream("lodImport/dbpedia_Countries.rdf");
|
46
|
InputStream is = ClassLoader.getSystemResourceAsStream("eu/dnetlib/data/mapreduce/hbase/lodImport/dbpedia_Countries.rdf");
|
47
|
dbpediaCountries.read(is, "RDF/XML");
|
48
|
String isoURI = "http://dbpedia.org/resource/ISO_3166-1:"+iso_3166_1_Code;
|
49
|
String query = "PREFIX dbpedia-owl:<http://dbpedia.org/ontology/> select distinct ?s ?r where {<"+isoURI+"> dbpedia-owl:wikiPageRedirects ?s}";
|
50
|
// System.out.println(query);
|
51
|
QueryExecution queryExecution = QueryExecutionFactory.create(query,dbpediaCountries);
|
52
|
ResultSet resultSet = queryExecution.execSelect();
|
53
|
|
54
|
while (resultSet.hasNext()) {
|
55
|
QuerySolution qs = resultSet.next();
|
56
|
String uriString = qs.getResource("s").toString().trim();
|
57
|
countryURI=uriString;
|
58
|
}
|
59
|
}catch(Exception e){
|
60
|
|
61
|
log.error("MapCountries error"+e.toString(),e);
|
62
|
}
|
63
|
return countryURI;
|
64
|
|
65
|
}
|
66
|
|
67
|
}
|