annotate OPPL/Tool.java @ 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
1 /**
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
2 * Copyright (C) 2011, Mikel EgaƱa Aranguren
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
3 *
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
4 * This program is free software: you can redistribute it and/or modify
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
6 * the Free Software Foundation, either version 3 of the License, or
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
7 * (at your option) any later version.
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
8 *
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
12 * GNU General Public License for more details.
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
13 *
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
16 */
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
17
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
18 package es.upm.fi.dia.oeg.oppl.galaxy;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
19
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
20 import java.io.BufferedWriter;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
21 import java.io.File;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
22 //import java.io.PrintWriter;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
23 //import java.io.FileNotFoundException;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
24 import java.io.IOException;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
25 import java.io.OutputStreamWriter;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
26 import java.net.URISyntaxException;
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
27 import java.util.ArrayList;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
28 import java.util.List;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
29 import java.util.Scanner;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
30 //import java.util.logging.Level;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
31 import java.util.logging.Logger;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
32
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
33 import org.coode.oppl.ChangeExtractor;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
34 import org.coode.oppl.OPPLParser;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
35 import org.coode.oppl.OPPLScript;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
36 import org.coode.oppl.ParserFactory;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
37 import org.coode.oppl.exceptions.QuickFailRuntimeExceptionHandler;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
38 //import org.coode.oppl.log.Logging;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
39 import org.coode.owlapi.obo.parser.OBOOntologyFormat;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
40 import org.coode.parsers.ErrorListener;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
41 import org.coode.parsers.LoggerErrorListener;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
42 //import org.obolibrary.obo2owl.Owl2Obo;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
43 //import org.obolibrary.oboformat.model.OBODoc;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
44 //import org.obolibrary.oboformat.writer.OBOFormatWriter;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
45 import org.semanticweb.owlapi.apibinding.OWLManager;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
46 import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
47 import org.semanticweb.owlapi.io.SystemOutDocumentTarget;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
48 import org.semanticweb.owlapi.model.AddAxiom;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
49 import org.semanticweb.owlapi.model.IRI;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
50 import org.semanticweb.owlapi.model.OWLAnnotation;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
51 import org.semanticweb.owlapi.model.OWLAnnotationProperty;
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
52 import org.semanticweb.owlapi.model.OWLAxiom;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
53 import org.semanticweb.owlapi.model.OWLAxiomChange;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
54 import org.semanticweb.owlapi.model.OWLClass;
5
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
55 import org.semanticweb.owlapi.model.OWLDataFactory;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
56 import org.semanticweb.owlapi.model.OWLLiteral;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
57 //import org.semanticweb.owlapi.model.OWLObjectProperty;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
58 import org.semanticweb.owlapi.model.OWLOntology;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
59 import org.semanticweb.owlapi.model.OWLOntologyChange;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
60 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
5
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
61 import org.semanticweb.owlapi.model.OWLOntologyIRIMapper;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
62 import org.semanticweb.owlapi.model.OWLOntologyManager;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
63 import org.semanticweb.owlapi.model.OWLOntologyStorageException;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
64 //import org.semanticweb.owlapi.owllink.OWLlinkHTTPXMLReasonerFactory;
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
65 import org.semanticweb.owlapi.reasoner.InferenceType;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
66 import org.semanticweb.owlapi.reasoner.OWLReasoner;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
67 import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
68 import org.semanticweb.owlapi.util.InferredAxiomGenerator;
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
69 import org.semanticweb.owlapi.util.InferredOntologyGenerator;
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
70 import org.semanticweb.owlapi.util.InferredSubClassAxiomGenerator;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
71 import org.semanticweb.owlapi.util.OWLEntityRenamer;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
72 import org.semanticweb.owlapi.util.OWLOntologyMerger;
5
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
73 import org.semanticweb.owlapi.util.SimpleIRIMapper;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
74 import org.semanticweb.owlapi.vocab.OWL2Datatype;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
75 import org.semanticweb.owlapi.vocab.OWLRDFVocabulary;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
76
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
77 import uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasonerFactory;
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
78
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
79 import com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
80
6
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
81 import org.semanticweb.HermiT.Reasoner;
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
82
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
83 /**
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
84 * @author Mikel EgaƱa Aranguren
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
85 */
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
86 public class Tool {
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
87
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
88 /**
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
89 * @throws OWLOntologyCreationException
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
90 * @throws OWLOntologyStorageException
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
91 * @throws IOException
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
92 * @throws URISyntaxException
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
93 */
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
94 public static void main(String[] args) throws OWLOntologyCreationException, OWLOntologyStorageException, IOException, URISyntaxException {
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
95 // Get the arguments from command-line
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
96 String OWLFilePath = args [0];
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
97 String OPPL_script_file = args [1];
5
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
98 String Output_format = args [2]; // OWL|OBO
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
99 String Add_inferred = args [3]; // AddInferred|Whatever
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
100 String imports_file_path = args [4]; // NoImports|Flat tab delimited file: URI Document URI
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
101 String reasoner_type = args [5]; // Pellet|FaCTPlusPlus|HermiT
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
102 String merge_URI = args [6]; // NoMerge|URI for merged ontology
5
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
103
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
104 // Load the main ontology
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
105 File owl_file = new File(OWLFilePath);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
106 OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
107
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
108 // Load the imports if any
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
109 if(!imports_file_path.equals("NoImports")){
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
110 File imports_file = new File(imports_file_path);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
111 Scanner imports_input = new Scanner(imports_file);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
112 while(imports_input.hasNext()){
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
113 String nextLine = imports_input.nextLine();
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
114 if(!nextLine.startsWith("#")){
6
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
115 String [] URI_documentURI = nextLine.split("\t");
5
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
116 IRI ontology_IRI = IRI.create(URI_documentURI[0]);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
117 IRI document_IRI = IRI.create("file://" + URI_documentURI[1]);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
118 OWLOntologyIRIMapper iriMapper = new SimpleIRIMapper(ontology_IRI,document_IRI);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
119 manager.addIRIMapper(iriMapper);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
120 }
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
121 }
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
122 imports_input.close();
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
123 }
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
124 OWLOntology OWL_ontology = manager.loadOntologyFromOntologyDocument(owl_file);
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
125
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
126 // Reasoner
6
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
127 OWLReasonerFactory reasonerFactory = null;
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
128 OWLReasoner reasoner = null;
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
129
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
130 // Pellet
6
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
131 if(reasoner_type.equals("Pellet")){
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
132 reasonerFactory = new PelletReasonerFactory();
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
133 reasoner = reasonerFactory.createReasoner(OWL_ontology);
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
134 }
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
135 // FaCTPlusPlus
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
136 else if (reasoner_type.equals("FaCTPlusPlus")){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
137 reasonerFactory = new FaCTPlusPlusReasonerFactory();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
138 reasoner = reasonerFactory.createReasoner(OWL_ontology);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
139 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
140 // HermiT
6
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
141 else{
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
142 reasonerFactory = new Reasoner.ReasonerFactory();
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
143 reasoner = reasonerFactory.createReasoner(OWL_ontology);
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
144 }
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
145
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
146 // OWLLink: The problem is that Racer, for example, listens in 8080, the same port as Galaxy
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
147 // I have to change Racer settings and OWLLink settings
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
148 // OWLlinkHTTPXMLReasonerFactory factory = new OWLlinkHTTPXMLReasonerFactory();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
149 // reasoner = factory.createReasoner(OWL_ontology);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
150
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
151 // Load the flat file with script in memory
5
68935f90c2db Added OWL imports closure
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 4
diff changeset
152 String OPPL_script_source = "";
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
153 File file = new File(OPPL_script_file);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
154 Scanner input = new Scanner(file);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
155 while(input.hasNext()) {
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
156 String nextToken = input.next();
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
157 OPPL_script_source = OPPL_script_source + " " + nextToken;
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
158 }
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
159 input.close();
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
160
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
161 // Parse the OPPL script
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
162 ParserFactory parserFactory = new ParserFactory(manager, OWL_ontology, reasoner);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
163 Logger logger = Logger.getLogger(Tool.class.getName());
7
756f1f5798bf Added (Properly) reasoner option (Pellet or HermiT)
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 6
diff changeset
164 // Logging.getQueryLogger().setLevel(Level.OFF); // The normal messages are errors for galaxy (Fixed in Galaxy by 2 > /dev/null)
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
165 ErrorListener errorListener = (ErrorListener)new LoggerErrorListener(logger);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
166 OPPLParser opplparser = parserFactory.build(errorListener);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
167 OPPLScript OPPLscript = opplparser.parse(OPPL_script_source);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
168
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
169 // Execute the script
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
170 ChangeExtractor extractor = new ChangeExtractor(new QuickFailRuntimeExceptionHandler(), true);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
171 List<OWLAxiomChange> changes = extractor.visit(OPPLscript);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
172 manager.applyChanges(changes);
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
173
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
174 // Add the inferred axioms as asserted axioms to the original ontology
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
175 if(Add_inferred.equals("AddInferred")){
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
176 reasoner.precomputeInferences(InferenceType.CLASS_HIERARCHY);
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
177 List<InferredAxiomGenerator<? extends OWLAxiom>> gens = new ArrayList<InferredAxiomGenerator<? extends OWLAxiom>>();
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
178 gens.add(new InferredSubClassAxiomGenerator());
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
179 InferredOntologyGenerator iog = new InferredOntologyGenerator(reasoner, gens);
6
3740505b579c Added reasoner option: Pellet or HermiT
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 5
diff changeset
180 iog.fillOntology(manager, OWL_ontology);
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
181 }
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
182
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
183 // Print the ontology to the standard output so other galaxy tools can operate on it
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
184
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
185 // Do not merge ontologies
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
186 if(merge_URI.equals("NoMerge")){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
187 saveOntology(manager, OWL_ontology, Output_format);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
188 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
189 // Merge ontologies
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
190 else{
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
191 OWLOntologyMerger merger = new OWLOntologyMerger(manager);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
192 IRI mergedOntologyIRI = IRI.create(merge_URI);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
193 OWLOntology merged = merger.createMergedOntology(manager, mergedOntologyIRI);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
194 saveOntology(manager, merged, Output_format);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
195 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
196 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
197
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
198 private static void saveOntology (OWLOntologyManager manager, OWLOntology ontology, String Format) throws OWLOntologyStorageException, IOException, URISyntaxException {
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
199
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
200 // OBO format
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
201 if(Format.equals("OBO")){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
202
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
203 // OWL API generates bad OBO but OBOformat doesn't work either so I correct the OWL API problems (More predictable) in a temporary file
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
204 // Very inefficient but no time for another solution
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
205
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
206 OWLDataFactory factory = manager.getOWLDataFactory();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
207
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
208 OWLEntityRenamer renamer = new OWLEntityRenamer (manager, manager.getOntologies());
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
209 OWLAnnotationProperty label = factory.getOWLAnnotationProperty(OWLRDFVocabulary.RDFS_LABEL.getIRI());
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
210
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
211 for(OWLClass cls : ontology.getClassesInSignature()){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
212 // Remove annotations (OWL API generates bad OBO annotations)
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
213
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
214 // Keep rdfs:label
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
215 String class_name = null;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
216 for (OWLAnnotation annotation : cls.getAnnotations(ontology, label)) {
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
217 if (annotation.getValue() instanceof OWLLiteral) {
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
218 OWLLiteral val = (OWLLiteral) annotation.getValue();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
219 class_name = val.getLiteral();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
220 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
221 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
222
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
223 // I have to remove all the annotations cause I don't know which ones are rendered properly
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
224 manager.removeAxioms(ontology,ontology.getAnnotationAssertionAxioms(cls.getIRI()));
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
225
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
226 // Add rdfs:label again
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
227 OWLAnnotation labelAnno = factory.getOWLAnnotation(factory.getOWLAnnotationProperty(
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
228 OWLRDFVocabulary.RDFS_LABEL.getIRI()),factory.getOWLLiteral(class_name,OWL2Datatype.XSD_STRING));
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
229 OWLAxiom ax = factory.getOWLAnnotationAssertionAxiom(cls.getIRI(), labelAnno);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
230 manager.applyChange(new AddAxiom(ontology, ax));
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
231
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
232 // Rename entities
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
233 String cls_IRI = cls.getIRI().toString();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
234 String cls_proper_IRI = cls_IRI.replace("_", ":");
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
235 List<OWLOntologyChange> changes = renamer.changeIRI(cls, IRI.create(cls_proper_IRI));
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
236 manager.applyChanges(changes);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
237 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
238
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
239 File file = new File("tmp.obo");
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
240 manager.saveOntology(ontology, new OBOOntologyFormat(), IRI.create(file.toURI()));
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
241 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
242 Scanner input = new Scanner(file);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
243 String buffer = "";
4
4f60202c58d9 Added option to push inferred subsumption axioms into output ontology
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 3
diff changeset
244
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
245 while(input.hasNext()){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
246 String nextLine = input.nextLine();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
247 if(nextLine.contains("[Term]") || nextLine.contains("[Typedef]")){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
248 if(buffer.isEmpty()){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
249 bw.write(buffer);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
250 bw.newLine();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
251 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
252 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
253 if(!nextLine.contains("is_a: Thing") && !nextLine.contains("auto-generated-by:") && !nextLine.contains("id_space:") && !nextLine.contains("! ----")){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
254 if(!nextLine.isEmpty() && !buffer.contains("relationship:")){
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
255 bw.write(nextLine);
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
256 bw.newLine();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
257 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
258 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
259 buffer = nextLine;
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
260 }
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
261 input.close();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
262 bw.close();
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
263 file.delete();
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
264 }
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
265
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
266 //OWL format
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
267 else{
8
40adbcb2a7cc Added merge function and FaCT++ support. Improved OBO render
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents: 7
diff changeset
268 manager.saveOntology(ontology, new RDFXMLOntologyFormat(), new SystemOutDocumentTarget());
3
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
269 }
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
270 }
5255f1333cc4 Version 1.0.1
Mikel Egaña Aranguren <mikel-egana-aranguren@toolshed.g2.bx.psu.edu>
parents:
diff changeset
271 }