diff OPPL/src/InferenceGalaxy.java @ 11:6ca67b155e32

Imports simplified, new tool for inference added
author Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
date Fri, 09 Mar 2012 16:15:27 +0100
parents
children d3616fac4ca5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OPPL/src/InferenceGalaxy.java	Fri Mar 09 16:15:27 2012 +0100
@@ -0,0 +1,105 @@
+/**
+ * 
+ */
+package es.upm.fi.dia.oeg.oppl.galaxy;
+
+
+import java.io.IOException;
+
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.semanticweb.owlapi.model.OWLOntologyStorageException;
+
+
+/**
+ * @author Mikel EgaƱa Aranguren
+ *
+ */
+public class InferenceGalaxy {
+
+	/**
+	 * @param args
+	 * @throws IOException 
+	 * @throws OWLOntologyCreationException 
+	 * @throws OWLOntologyStorageException 
+	 */
+	public static void main(String[] args) throws OWLOntologyStorageException, OWLOntologyCreationException, IOException {
+		// Get the arguments from command-line
+		String OWLFilePath = args [0];
+		String reasoner_type = args [1]; // Pellet|FaCTPlusPlus|HermiT
+		String axioms_to_inject = args [2]; // CLASS_ASSERTIONS,CLASS_HIERARCHY,DATA_PROPERTY_ASSERTIONS 
+				
+//		CLASS_ASSERTIONS Denotes the computation of the direct types of individuals for each individual in the signature of the imports closure of the root ontology.
+//		CLASS_HIERARCHY Denotes the computation of the class hierarchy.
+//		DATA_PROPERTY_ASSERTIONS Denotes the computation of relationships between individuals and data property values for each individual in the signature of the imports closure of the root ontology.
+//		DATA_PROPERTY_HIERARCHY Denotes the computation of the data property hierarchy.
+//		DIFFERENT_INDIVIDUALS Denotes the computation of sets of individuals that are different from each individual in the signature of the imports closure of the root ontology.
+//		DISJOINT_CLASSES Denotes the computation of sets of classes that are disjoint for each class in the signature of the imports closure of the root ontology.
+//		OBJECT_PROPERTY_ASSERTIONS Denotes the computation of relationships between individuals in the signature of the imports closure of the root ontology.
+//		OBJECT_PROPERTY_HIERARCHY Denotes the computation of the object property hierarchy.
+//		SAME_INDIVIDUAL Denotes the computation of individuals that are interpreted as the same object for each individual in the imports closure of the root ontology.
+				
+		// Create the manager
+		GalaxyOWLAPI galaxyowlapi = new GalaxyOWLAPI();
+						
+		// Load the main ontology		
+		galaxyowlapi.loadMainOntology(OWLFilePath);
+						
+		// Set the reasoner
+				
+		// Pellet
+		if(reasoner_type.equals("Pellet")){
+			galaxyowlapi.setReasonerPellet();
+		}
+		// FaCTPlusPlus
+		else if (reasoner_type.equals("FaCTPlusPlus")){
+			galaxyowlapi.setReasonerFaCT();
+		}
+		// HermiT
+		else{
+			galaxyowlapi.setReasonerHermit();
+		}
+		
+		// Add the inferred axioms as asserted axioms to the original ontology
+		
+		if(axioms_to_inject.contains(",")){
+			String[] axioms = axioms_to_inject.split(",");
+			for(int i =0; i < axioms.length ; i++)
+				injectAxiom (axioms[i], galaxyowlapi);
+		}
+		else{
+			injectAxiom (axioms_to_inject, galaxyowlapi);
+		}
+		
+		// Merge imported ontologies if requested
+//		if(merge.equals("Merge")){
+//			galaxyowlapi.merge();
+//		}		
+		
+		// Save the ontology in OWL
+		galaxyowlapi.saveOntology(true);
+		
+	}
+
+	static void injectAxiom (String axiom_to_inject, GalaxyOWLAPI galaxyowlapi){
+		if(axiom_to_inject.equals("CLASS_HIERARCHY")){
+			galaxyowlapi.addCLASS_HIERARCHY();
+//			System.out.println("CLASS_HIERARCHY");
+		}
+		if(axiom_to_inject.equals("CLASS_ASSERTIONS")){
+			galaxyowlapi.addCLASS_ASSERTIONS();
+//			System.out.println("CLASS_ASSERTIONS");
+		}
+		if(axiom_to_inject.equals("DATA_PROPERTY_HIERARCHY")){
+			galaxyowlapi.addDATA_PROPERTY_HIERARCHY();
+//			System.out.println("DATA_PROPERTY_HIERARCHY");
+		}
+		if(axiom_to_inject.equals("DISJOINT_CLASSES")){
+			galaxyowlapi.addDISJOINT_CLASSES();
+//			System.out.println("DISJOINT_CLASSES");
+		}
+		if(axiom_to_inject.equals("OBJECT_PROPERTY_HIERARCHY")){
+			galaxyowlapi.addOBJECT_PROPERTY_HIERARCHY();
+//			System.out.println("OBJECT_PROPERTY_HIERARCHY");
+		}
+	}
+}