/*
* Created on Feb 9, 2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.mindswap.swoop.automation;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Vector;
/**
* @author Dave Wang
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class PelletWebSpeciator
{
public static String PELLET_CHECKER_PREFIX = "http://www.mindswap.org/cgi-bin/2003/pellet/pelletGet.cgi?inputFile=";
public static String PELLET_CHECKER_OPTIONS = "&inputFormat=RDF%2FXML&inputString=&Species=true&classifyFormat=NONE&queryFile=&queryFormat=SPARQL&queryString=";
public static String ERROR = "Error";
public static void speciate( String input, String output, int num_skipped )
{
try
{
// read uris in
BufferedReader reader = new BufferedReader( new FileReader( input ) );
Vector uris = new Vector();
String rline = "";
int counter = 1;
while ( ( rline = reader.readLine()) != null )
{
if ( counter < num_skipped ) // skipping the first num_skipped lines
{
counter++;
continue;
}
rline = rline.trim();
uris.addElement( rline );
}
// send each uri to Pellet and output/log
BufferedWriter logger = new BufferedWriter( new FileWriter("PelletSpeciatorLog.txt"));
BufferedWriter writer = new BufferedWriter( new FileWriter(output) );
for (int i = 0; i < uris.size(); i++)
{
long startTime = System.currentTimeMillis();
String uri = (String)uris.elementAt( i );
String originalURI = uri.toString();
logger.write( "Pellet Checking: ["+ (i+counter) + "] " + originalURI );
logger.newLine();
System.out.println("Pellet Checking: ["+ (i+counter) + "] " + originalURI );
uri = uri.replaceAll(":", "%3A");
uri = uri.replaceAll("/", "%2F");
uri = uri.replaceAll("\\?", "%3F");
uri = uri.replaceAll(",", "%2C");
uri = uri.replaceAll("=", "%3D");
uri = uri.replaceAll("\\+", "%2B");
String status = ERROR;
try
{
URL url = new URL(PELLET_CHECKER_PREFIX + uri + PELLET_CHECKER_OPTIONS);
System.out.println( url );
URLConnection myConnection = url.openConnection();
BufferedReader myReader = new BufferedReader( new InputStreamReader(myConnection.getInputStream()) );
String line = "";
String species = ERROR;
while ( (line = myReader.readLine() ) != null )
{
if ( line.startsWith("<b>OWL Species:"))
{
int sindex = line.indexOf("</b>");
int eindex = line.indexOf("<br>");
species = line.substring( sindex + 4, eindex );
break;
}
}
System.out.println( "!! " + species + " !!");
writer.write( originalURI + "\t" + species );
writer.newLine();
writer.flush();
logger.write( " - " + originalURI + " is " + species);
logger.newLine();
logger.flush();
}
catch ( Exception e)
{
logger.write( e.toString() );
logger.newLine();
}
finally
{
long stopTime = System.currentTimeMillis();
double duration = (stopTime - startTime)/10000d;
logger.write("took " + duration + " seconds ");
logger.newLine();
logger.flush();
}
}
}
catch ( Exception e )
{ e.printStackTrace(); }
}
public static void main( String [] args )
{
System.out.println("Starting...");
PelletWebSpeciator.speciate( "list.txt", "species.txt", 482);
System.out.println("done");
}
}