diff OPPL/Tool.java @ 3:5255f1333cc4

Version 1.0.1 Added output choice: OBO or OWL(RDF/XML)
author Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
date Wed, 07 Sep 2011 10:46:29 +0200
parents
children 4f60202c58d9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OPPL/Tool.java	Wed Sep 07 10:46:29 2011 +0200
@@ -0,0 +1,121 @@
+/**
+ * Copyright (C) 2011, Mikel Egaña Aranguren
+ *
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package es.upm.fi.dia.oeg.oppl.galaxy;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FilterOutputStream;
+import java.io.OutputStream;
+import java.io.PipedOutputStream;
+import java.io.PrintStream;
+import java.util.List;
+import java.util.Scanner;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.coode.oppl.ChangeExtractor;
+import org.coode.oppl.OPPLParser;
+import org.coode.oppl.OPPLScript;
+import org.coode.oppl.ParserFactory;
+import org.coode.oppl.exceptions.QuickFailRuntimeExceptionHandler;
+import org.coode.oppl.log.Logging;
+import org.coode.owlapi.obo.parser.OBOOntologyFormat;
+import org.coode.parsers.ErrorListener;
+import org.coode.parsers.LoggerErrorListener;
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.io.OWLOntologyDocumentTarget;
+import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
+import org.semanticweb.owlapi.io.SystemOutDocumentTarget;
+import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLAxiomChange;
+import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
+import org.semanticweb.owlapi.model.OWLOntologyStorageException;
+import org.semanticweb.owlapi.reasoner.OWLReasoner;
+import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
+
+import com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory;
+
+
+/**
+ * @author Mikel Egaña Aranguren
+ *
+ */
+public class Tool {
+
+	/**
+	 * @param OWL file 
+	 * @param OPPL script 
+	 * @throws FileNotFoundException 
+	 * @throws OWLOntologyCreationException 
+	 * @throws OWLOntologyStorageException 
+	 */
+	public static void main(String[] args) throws FileNotFoundException, OWLOntologyCreationException, OWLOntologyStorageException {
+		 		
+		// Get the arguments from command-line
+		String OWLFilePath = args [0]; 
+		String OPPL_script_file = args [1];
+		String Output_format = args [2];
+		String OPPL_script_source = "";
+		
+		// Load the flat file with script in memory
+		File file = new File(OPPL_script_file);
+		Scanner input = new Scanner(file);
+		while(input.hasNext()) {
+		    String nextToken = input.next();
+		    OPPL_script_source = OPPL_script_source + " " + nextToken;
+		}
+		input.close();
+		
+		// Load the OWL ontology		
+		File owl_file = new File(OWLFilePath);
+		OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
+		OWLOntology OWL_ontology = manager.loadOntologyFromOntologyDocument(owl_file);
+		
+		// Sync reasoner and check consistency
+		OWLReasonerFactory reasonerFactory = new PelletReasonerFactory(); 
+		OWLReasoner reasoner = reasonerFactory.createReasoner(OWL_ontology);
+	
+		// Parse the OPPL script
+		ParserFactory parserFactory = new ParserFactory(manager, OWL_ontology, reasoner); 
+		Logger logger = Logger.getLogger(Tool.class.getName());
+		Logging.getQueryLogger().setLevel(Level.OFF); // The normal messages are errors for galaxy
+		ErrorListener errorListener = (ErrorListener)new LoggerErrorListener(logger);
+		OPPLParser opplparser = parserFactory.build(errorListener);
+		OPPLScript OPPLscript = opplparser.parse(OPPL_script_source);
+			
+		// Execute the script
+		ChangeExtractor extractor = new ChangeExtractor(new QuickFailRuntimeExceptionHandler(), true);
+		List<OWLAxiomChange> changes = extractor.visit(OPPLscript);
+		manager.applyChanges(changes);
+		
+		// Print the ontology to the standard output so other galaxy tools can operate on the output
+		OWLOntologyDocumentTarget documentTarget = new SystemOutDocumentTarget();
+		
+		if(Output_format.equals("OBO")){
+			manager.saveOntology(OWL_ontology, new OBOOntologyFormat(), new SystemOutDocumentTarget());
+		}
+		else{
+			manager.saveOntology(OWL_ontology, new RDFXMLOntologyFormat(), new SystemOutDocumentTarget());
+		}
+
+	}
+}