view OPPL/oppl.xml @ 8:40adbcb2a7cc

Added merge function and FaCT++ support. Improved OBO render
author Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
date Tue, 11 Oct 2011 11:09:52 +0200
parents 756f1f5798bf
children 14bfd77f8520
line wrap: on
line source

<tool id="oppl" name="Execute an OPPL file against an ontology" version="1.0.5">
	<description>It executes an OPPL script against the input ontology and generates a new ontology with the changes described in the OPPL script</description>

	<!-- The command execution of the conditional is tacky, I think, but it works! -->
	<!-- Galaxy is not happy with OPPL throwing info into stderr, and I have redirected stderr to /dev/null, which is a bad solution since OPPL galaxy does not inform properly when it fails -->
	<!-- More info on the stderr issue: http://wiki.g2.bx.psu.edu/Future/Job%20Failure%20When%20stderr -->
	

	<!-- For big ontologies I use -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 If that's too much for your machine simply delete or modify at will -->

	<command>
		#if $import_opts.imports_select==False #java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred NoImports $reasoner NoMerge > $output 2>/dev/null
		#else #java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred $imports $reasoner $merged > $output 2>/dev/null
		#end if
	</command> 
	
	
	<!-- If you are planning to use FaCT++ you have to uncomment bellow (And comment the one above) and replace the -Djava.library.path with the appropiate JNI library path for your platform:FaCT++-linux-v1.5.2/64bit, FaCT++-linux-v1.5.2/32bit, FaCT++-OSX-v1.5.2/64bit, ...... -->
	<!-- Using this setting doesn't upset the rest of the reasoners so you may as well leave it on if you plan to switch between FaCT++, Pellet and HermiT -->
	
	<!--<command>
		#if $import_opts.imports_select==False #java -Djava.library.path=${__tool_data_path__}/shared/jars/FaCT++-linux-v1.5.2/64bit -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred NoImports $reasoner NoMerge > $output 2>/dev/null
		#else #java -Djava.library.path=${__tool_data_path__}/shared/jars/FaCT++-linux-v1.5.2/64bit -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred $imports $reasoner $merged > $output 2>/dev/null
		#end if
	</command>-->
	
	
	<!-- For debugging simply remove 2>/dev/null Or uncomment bellow. It will fail always (Due to OPPL messages) but at least it will be informative -->
	
	<!--<command>
		#if $import_opts.imports_select==False #java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred NoImports $reasoner no_merge > $output
		#else #java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred $imports $reasoner $merged > $output 
		#end if
	</command>-->
	
		
	<!-- EXPERIMENTS AND HOUSE KEEPING-->
	<!--<command>java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred $imports $reasoner $merged > $output 2>/dev/null</command> -->
	<!--<command>
		#if $import_opts.imports_select==False #java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred NoImports $reasoner NoMerge > $output 2>/dev/null
		#else 
		  #if $merge_opts.merge_select==False #java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred NoImports $reasoner NoMerge > $output 2>/dev/null
		  #else #java -Xmx7000M -Xms250M -DentityExpansionLimit=1000000000 -jar ${__tool_data_path__}/shared/jars/oppl_galaxy_tool.jar $input $OPPL $format $inferred $imports $reasoner $merged > $output 2>/dev/null
		  #end if
		#end if
	</command>-->

	<inputs>
		<param format="text" name="input" type="data" label="Input ontology file"/>
		<param format="text" name="OPPL" type="data" label="OPPL file"/>
		<conditional name="import_opts">
			<param name="imports_select" type="boolean" value="False" truevalue="imports_yes" falsevalue="imports_no" label="Tick the box if the loaded ontology includes OWL imports"/>

			<!-- EXPERIMENTS AND HOUSE KEEPING-->
			<!--<when value="imports_no"/> -->
			<!--<when value="imports_no">
				<param type="hidden" name="merged" value="no_merge"/>
	    		</when>-->
			
			<when value="imports_yes">
				       		
				<param format="text" name="imports" type="data" label="OWL imports URI mapping file"/>
				
				<!-- EXPERIMENTS AND HOUSE KEEPING-->
				<!--<conditional name="merge_opts">
				    <param name="merge_select" type="boolean" value="False" truevalue="merge_yes" falsevalue="merge_no" label="Tick the box to merge ontologies"/>
				    <when value="merge_yes">
				      <param name="merged" type="text" size="100" value="http://oppl-galaxy/merged" label="Type an URI or use the default URI" />  
				    </when>
				</conditional>-->  
				<!--<param format="text" name="merged" type="data" label="OWL "/>-->
				
            		</when>
		</conditional>
		<param name="format" type="select" label="Choose ontology output format">
			<option value="OWL" selected="true">OWL</option>
			<option value="OBO">OBO</option>
		</param>
		<param name="inferred" type="boolean" value="False" truevalue="AddInferred" falsevalue="Gora_ni" label="Add inferred subsumption axioms to output ontology"/>
		<param name="merged" type="text" size="100" value="NoMerge" label="To merge the ontologies, type an URI for the new ontology (Leave NoMerge for not merging)" />
		<param name="reasoner" type="select" label="Choose reasoner">
			<option value="Pellet" selected="true">Pellet</option>
			<option value="HermiT">HermiT</option>
			<option value="FaCTPlusPlus">FaCT++</option>
		</param>

	</inputs>
	<outputs>
		<data format="text" name="output" />
	</outputs>
	<tests>
		<test>
			<param name="input" value="test.owl"/>
			<param name="OPPL" value="test.oppl"/>
			<param name="imports" value="NoImports"/>
			<param name="format" value="OWL"/>
			<param name="inferred" value="False"/>
			<param name="reasoner" value="Pellet"/>
			<param name="merged" value="no_merge"/>
			<output name="out_file" file="test_new.owl"/>	
		</test>
	</tests>
	<help>

**About OPPL-Galaxy**

  OPPL-Galaxy can be used to execute an OPPL script against an ontology, generating a new ontology. OPPL (Ontology Pre Processor Language) is a high level scripting language, based in the Manchester OWL Syntax, to automate the manipulation of an ontology. An OPPL script (See test.oppl) defines a query to be performed against the ontology, and some actions (Adding or removing axioms) that affect the entities that will be retrieved. Those entities can be named or defined by a variable. OPPL is a powerful method for defining and executing modelling patterns that are repeated in an ontology, saving time and efforts.  

**Formats**

  OPPL-Galaxy uses the OWL API, and therefore it can load any ontology format that such API is able to load: OBO flat file, OWL (RDF/XML, OWL/XML, Functional, Manchester), turtle, and KRSS. The available output formats are OBO flat file and OWL (RDF/XML).

**Usage**

  An ontology and an OPPL file are needed (test.owl and test.oppl can be used as samples, both available in the bundle). Load both with Get Data >> Upload File from your computer. 

  Then execute the OPPL file against the OWL file with Ontology Pre Processor Language >> Execute an OPPL file against an OWL file. A new output ontology will be generated.

  In case the loaded ontology includes OWL imports, a file that maps the imported ontologies' URIs to actual physical URIs is needed. The file (See the file test_URI_mappings provided in the bundle) follows the convention URI-tab-physical URI:
  
  http://purl.obolibrary.org/obo/CHEBI_ONTOLOGY_chebi_ontology	/home/pik/UPM/OPPL_galaxy/oppl/OPPL/chebi.owl

  http://purl.obolibrary.org/obo/UBERON_uberon	/home/pik/UPM/OPPL_galaxy/oppl/OPPL/cell.owl

  The output ontology can be OBO or OWL (RDF/XML).
 
  The inferred subsumption axioms can be added to the output ontology as asserted axioms. 

  The reasoner can be Pellet, HermiT FaCT++. Sometimes, if an execution fails it can be fixed by using a different reasoner. 

  If OWL imports are used, all the ontologies (Main one and imported ones) can be merged in a single ontology for the output.

**More information**

  http://oppl.sf.net/

  http://owlapi.sourceforge.net/

  http://www.w3.org/TR/owl2-manchester-syntax/

  http://clarkparsia.com/pellet

  http://hermit-reasoner.com/
  
  http://code.google.com/p/factplusplus/
  
  http://code.google.com/p/oboformat/

**Contact**

  Please send any request or comment to mikel.egana.aranguren@gmail.com.

	</help>

</tool>