pelletwebspeciator.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 126 行

JAVA
126
字号
/*
 * 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");
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?