package edu.unc.ils.mrc.hive.converter.tgn;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Hashtable;
import java.util.List;
import java.util.Set;
public class TGNThesaurus
{
private Hashtable<String, TGNRecord> records;
public TGNThesaurus() {
this.records = new Hashtable<String, TGNRecord>();
}
public boolean contains(String key) {
if(this.records.get(key) != null)
return true;
else
return false;
}
public TGNRecord getRecord(String key) {
return this.records.get(key);
}
public void setRecord(TGNRecord record) {
this.records.put(record.getSubjectID(), record);
}
public Set<String> getKeySet() {
return this.records.keySet();
}
public void printSKOSThesaurus(String path) throws FileNotFoundException {
File out = new File(path);
PrintWriter pr = new PrintWriter(out);
pr.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
pr.println("<rdf:RDF");
pr.println("xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"");
pr.println("xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" >");
int n = 0;
for (String s : this.records.keySet()) {
TGNRecord re = this.records.get(s);
n++;
String uri = re.getUri();
pr.println("<rdf:Description rdf:about=\"" + uri + "\">");
pr.println("\t<rdf:type rdf:resource=\"http://www.w3.org/2004/02/skos/core#Concept\"/>");
pr.println("\t<skos:inScheme rdf:resource=\"" + re.getURIBASE() + "\"/>");
pr.println("\t<skos:prefLabel>" + re.getPreferredTerm() + "</skos:prefLabel>");
List<String> altLabels = re.getAltTerm();
if(altLabels.size()>0) {
for(String alt : altLabels)
pr.println("\t<skos:altLabel>" + alt + "</skos:altLabel>");
}
List<String> broaders = re.getBroderTerms();
if(broaders.size()>0) {
for(String bro : broaders)
pr.println("\t<skos:broader rdf:resource=\"" + bro + "\"/>");
}
List<String> narrowers = re.getNarrowerTerms();
if(narrowers.size()>0) {
for(String narrow : narrowers)
pr.println("\t<skos:narrower rdf:resource=\"" + narrow + "\"/>");
}
List<String> relateds = re.getRelatedTerms();
if(relateds.size()>0) {
for(String rel : relateds)
pr.println("\t<skos:related rdf:resource=\"" + rel + "\"/>");
}
String scopeNote = re.getScopeNote();
if(scopeNote.length()>0)
pr.println("\t<skos:scopeNote>" + scopeNote + "</skos:scopeNote>");
pr.println("</rdf:Description>");
}
pr.println("</rdf:RDF>");
pr.close();
System.out.println(n + " concepts printed");
}
}