package edu.rpi.tw.twctwit;
import net.fortytwo.twitlogic.TwitLogic;
import net.fortytwo.twitlogic.persistence.TweetStore;
import net.fortytwo.twitlogic.persistence.TweetStoreException;
import net.fortytwo.twitlogic.util.properties.PropertyException;
import org.openrdf.model.URI;
import org.openrdf.model.impl.URIImpl;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.repository.RepositoryException;
import org.openrdf.rio.RDFFormat;
import org.openrdf.rio.RDFParseException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
/**
* @author Joshua Shinavier (http://fortytwo.net).
*/
public class LoadSWCData {
private static final String SWC_DIR = "edu.rpi.tw.twctwit.swcDir";
private static final URI SWC_GRAPH = new URIImpl("http://twitlogic.fortytwo.net/graph/swc");
public static void main(final String[] args) throws Exception {
try {
if (1 == args.length) {
File configFile = new File(args[0]);
Properties p = new Properties();
p.load(new FileInputStream(configFile));
TwitLogic.setConfiguration(p);
load();
} else {
printUsage();
System.exit(1);
}
} catch (Throwable t) {
t.printStackTrace();
System.exit(1);
}
}
private static void printUsage() {
System.out.println("Usage: LoadSWCData [configuration file]");
System.out.println("For more information, please see:\n"
+ " <URL:http://wiki.github.com/joshsh/twitlogic/configuring-and-running-twitlogic>.");
}
private static final void load() throws TweetStoreException, PropertyException, RepositoryException, IOException, RDFParseException {
System.out.println("Loading Semantic Web Conference Corpus data");
// Create a persistent store.
TweetStore store = new TweetStore();
store.initialize();
File dir = TwitLogic.getConfiguration().getFile(SWC_DIR);
try {
RepositoryConnection rc = store.getRepository().getConnection();
try {
rc.begin();
rc.clear(SWC_GRAPH);
rc.commit();
rc.begin();
loadFile(dir, rc);
rc.commit();
rc.begin();
} finally {
rc.rollback();
rc.close();
}
} finally {
store.shutDown();
}
System.out.println("done.");
}
private static final String BASE_URI = "http://example.org/bogoBaseURI#";
private static void loadFile(final File file,
final RepositoryConnection rc) throws RepositoryException, IOException, RDFParseException {
if (file.isDirectory()) {
for (File f : file.listFiles()) {
loadFile(f, rc);
}
} else if (file.getName().endsWith("rdf")) {
rc.add(file, BASE_URI, RDFFormat.RDFXML, SWC_GRAPH);
rc.commit();
rc.begin();
}
}
}