Mercurial > repos > mikel-egana-aranguren > oppl
diff OPPL/src/OWLQueryGalaxy.java @ 13:7e6604a5ee55
New query tool added
author | Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu> |
---|---|
date | Thu, 29 Mar 2012 14:49:22 +0200 |
parents | |
children | d3616fac4ca5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OPPL/src/OWLQueryGalaxy.java Thu Mar 29 14:49:22 2012 +0200 @@ -0,0 +1,119 @@ +package es.upm.fi.dia.oeg.oppl.galaxy; + +import java.util.Set; + +import org.semanticweb.owlapi.expression.ParserException; +import org.semanticweb.owlapi.model.IRI; +import org.semanticweb.owlapi.model.OWLClass; +import org.semanticweb.owlapi.model.OWLClassExpression; +import org.semanticweb.owlapi.model.OWLNamedIndividual; +import org.semanticweb.owlapi.model.OWLOntologyCreationException; + +public class OWLQueryGalaxy { + + /** + * @param args + * @throws OWLOntologyCreationException + * @throws ParserException + */ + public static void main(String[] args) throws OWLOntologyCreationException, ParserException { + // Get the arguments from command-line + String OWLFilePath = args [0]; // /home/pik/UPM/Paper/SWAT4LS_2011/JBS/Workflows_JBS/GO_module_transitive/go_no_trans.owl + String reasoner_type = args [1]; // Pellet|FaCTPlusPlus|HermiT + + String Answer_type = args [2]; // Individuals|EquivalentClasses|DirectSuperClasses|Ancestors|DirectSubClasses|Descendants + String Answer_render = args [3]; // URI|URIfragment|URIfragment2OBO + String MOS_query = args [4]; // GO_0007049 or part_of some GO_0007049 + + // Create the manager + GalaxyOWLAPI galaxyowlapi = new GalaxyOWLAPI(); + + // Load the main ontology and hope for the imported URIs to be resolvable + 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(); + } + + // Parse the expression to an OWLexpression + OWLClassExpression class_expr = galaxyowlapi.parseMOSClassExpression(MOS_query); + + // Execute query and print results + if(Answer_type.equals("Individuals")){ + Set<OWLNamedIndividual> inds = galaxyowlapi.getIndividuals(class_expr); + for(OWLNamedIndividual ind : inds){ + print_result_entity(ind.getIRI(), Answer_render); + } + } + else if (Answer_type.equals("EquivalentClasses")) { + Set<OWLClass> answer_classes = galaxyowlapi.getEquivalentClasses(class_expr); + for(OWLClass cls : answer_classes){ + print_result_entity(cls.getIRI(), Answer_render); + } + } + else if (Answer_type.equals("DirectSuperClasses")) { + Set<OWLClass> answer_classes = galaxyowlapi.getDirectSuperClasses(class_expr); + for(OWLClass cls : answer_classes){ + print_result_entity(cls.getIRI(), Answer_render); + } + } + else if (Answer_type.equals("Ancestors")) { + Set<OWLClass> answer_classes = galaxyowlapi.getAncestors(class_expr); + for(OWLClass cls : answer_classes){ + print_result_entity(cls.getIRI(), Answer_render); + } + } + else if (Answer_type.equals("DirectSubClasses")) { + Set<OWLClass> answer_classes = galaxyowlapi.getDirectSubClasses(class_expr); + for(OWLClass cls : answer_classes){ + print_result_entity(cls.getIRI(), Answer_render); + } + } + // Descendants + else { + Set<OWLClass> answer_classes = galaxyowlapi.getDescendants(class_expr); + for(OWLClass cls : answer_classes){ + print_result_entity(cls.getIRI(), Answer_render); + } + } + } + + //URI|URIfragment|URIfragment2OBO + private static void print_result_entity (IRI iri, String Answer_render){ + if(Answer_render.equals("URI")){ + System.out.println(iri); + } + + // Weird bug: in eclipse it can print out the IRIs of every entity, but in Galaxy it can't! + // done manually + else if(Answer_render.equals("URIfragment")){ + if(iri.toString().contains("#")){ + System.out.println(iri.getFragment()); + } + else{ + String [] iri_tokens = iri.toString().split("/"); + System.out.println(iri_tokens[iri_tokens.length-1]); + } + } + else{ + if(iri.toString().contains("#")){ + System.out.println((iri.getFragment()).replace("_", ":")); + } + else{ + String [] iri_tokens = iri.toString().split("/"); + System.out.println((iri_tokens[iri_tokens.length-1]).replace("_", ":")); + } + } + } +}