package tbx2rdf.datasets.iate;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFFormat;
/**
* The package tbx2rdf.iate gathers some specificities of the IATE dataset
* The purpose of this class is to upload the subject fields as independent resources
* http://tbx2rdf.lider-project.eu/data/iate/subjectField/406003
*
* @author Victor
*/
public class SubjectFields {
public static Map<String, String> mapa = new HashMap();
public static Map<String, SubjectField> mapauris = new HashMap();
public static void main(String[] args) {
System.out.println("Subject Fields");
SubjectFields sf= new SubjectFields();
List<SubjectField> lsf=sf.readInternalFile();
Model model = generateSubjectFields();
StringWriter sw = new StringWriter();
RDFDataMgr.write(sw, model, RDFFormat.NTRIPLES);
String str = sw.toString();
System.out.println(str);
}
/**
* Loads and generates resources for the subject fields
* @return A Jena model
*/
public static Model generateSubjectFields()
{
SubjectFields sfs= new SubjectFields();
List<SubjectField> subjectFields=sfs.readInternalFile();
Model model = ModelFactory.createDefaultModel();
for(SubjectField sf : subjectFields)
{
sf.toRDF(model, null);
}
return model;
}
/**
* Reads the list of subject fields
*/
public List<SubjectField> readInternalFile()
{
List<SubjectField> lsf = new ArrayList();
try{
InputStream in = this.getClass().getResourceAsStream("subjectFields.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String str="";
while ((str = br.readLine()) != null) {
StringTokenizer tokens=new StringTokenizer(str, ",");
if (tokens.countTokens()!=2)
continue;
String s1=tokens.nextToken();
String s2=tokens.nextToken();
mapa.put(s1,s2);
SubjectField sf=new SubjectField(s1,s2);
mapauris.put(s1,sf);
lsf.add(sf);
}
}catch(Exception e)
{
e.printStackTrace();
return lsf;
}
return lsf;
}
}