OWL2Parser.java revision 25f163f5755534f518718981c8b160fdf5097773
d25c69509848853b0b15b93e3cc180cab81047acChristian Maederimport org.coode.owlapi.owlxml.renderer.OWLXMLRenderer;
d25c69509848853b0b15b93e3cc180cab81047acChristian Maederimport org.coode.owlapi.rdf.rdfxml.RDFXMLRenderer;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport org.semanticweb.owlapi.apibinding.OWLManager;
d25c69509848853b0b15b93e3cc180cab81047acChristian Maederimport org.semanticweb.owlapi.io.OWLRendererException;
6f52b2f195d946649597c21e5888c70ccfeeb81eChristian Maederimport org.semanticweb.owlapi.io.StreamDocumentSource;
9a15a025b733a3913ea347ddabc837bb1a0a3b90Christian Maederimport org.semanticweb.owlapi.model.*;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.util.OWLOntologyMerger;
43f8464f7a29c9609509b9c58925f0432263803dSimon Ulbrichtimport org.semanticweb.owlapi.model.OWLOntologyLoaderConfiguration;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxRenderer;
43f8464f7a29c9609509b9c58925f0432263803dSimon Ulbrichtimport uk.ac.manchester.cs.owl.owlapi.OWLOntologyIRIMapperImpl;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
9a15a025b733a3913ea347ddabc837bb1a0a3b90Christian Maederimport java.io.*;
8890c291ae8120c275f8a88594ecd23f78b80013Christian Maederimport java.net.*;
91e24fc45834b35f2a3830d72565640251149bf3Christian Maederimport java.util.HashSet;
91e24fc45834b35f2a3830d72565640251149bf3Christian Maederimport java.util.Set;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiupublic class OWL2Parser {
25f163f5755534f518718981c8b160fdf5097773notanartist private static enum OPTION {OWL_XML, MANCHESTER, RDF_XML, OBO, TURTLE, DOL}
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist private static OPTION input_type;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist private static OPTION output_type;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist private static Boolean quick = false;
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder private static Boolean cyclic = false;
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder private static final Set<IRI> missingImports = new HashSet<IRI>();
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder private static Set<OWLOntology> ontologies;
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder private static final Set<OWLOntology> exported = new HashSet<OWLOntology>();
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben private static OWLOntologyManager manager = setupManagerWithMissingImportListener();
43f8464f7a29c9609509b9c58925f0432263803dSimon Ulbricht private static OWLOntologyIRIMapperImpl mapper = new OWLOntologyIRIMapperImpl();
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist private static String inp = "";
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist private static BufferedWriter wrt_out = null;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder public static void main(String[] args) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder // A simple example of how to load and save an ontology
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder try {
25f163f5755534f518718981c8b160fdf5097773notanartist if (!parseARGuments(args)) {
25f163f5755534f518718981c8b160fdf5097773notanartist showHelpScreen();
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist return;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist }
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist wrt_out.write("<Ontologies>\n");
8890c291ae8120c275f8a88594ecd23f78b80013Christian Maeder URI uri;
0628b83b5b7d142c07ff7d460f77f7f86e3ec33dChristian Maeder if (inp.startsWith("http:") || inp.startsWith("https:"))
7d9a0481d5d814e945e4b01599e177f79f69fd3dChristian Maeder uri = new URI(inp);
0628b83b5b7d142c07ff7d460f77f7f86e3ec33dChristian Maeder else uri = new File(inp).toURI();
a933696a057bd1ad025d2d8e6b7079cc8e979d6eChristian Maeder URLConnection con = uri.toURL().openConnection();
ebe1b5c42cea5468e66f088648362125cb3c2818Christian Maeder con.addRequestProperty("Accept", "text/plain");
47bae6b7cf4f66223e52d0e1fd547fd620b3209dChristian Maeder StreamDocumentSource sds = new StreamDocumentSource(con.getInputStream(), IRI.create(uri));
6f52b2f195d946649597c21e5888c70ccfeeb81eChristian Maeder OWLOntologyLoaderConfiguration config = new OWLOntologyLoaderConfiguration();
6f52b2f195d946649597c21e5888c70ccfeeb81eChristian Maeder config = config.setMissingImportHandlingStrategy(MissingImportHandlingStrategy.SILENT);
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht OWLOntology ontology = manager.loadOntologyFromOntologyDocument(sds, config);
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht if (!missingImports.isEmpty()) {
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht IRI ontohub = IRI.create("https://ontohub.org/external/");
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht for (IRI mi : missingImports) {
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht mapper.addMapping(mi, ontohub.resolve(mi.toURI().getHost() + mi.toURI().getPath()));
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht }
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben // reset the manager. clear out imports to avoid duplicates
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben manager = setupManagerWithMissingImportListener();
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht manager.addIRIMapper(mapper);
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht // collect and report missing imports again.
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht missingImports.clear();
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht ontology = manager.loadOntologyFromOntologyDocument(sds, config);
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht for (IRI mi : missingImports) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist wrt_out.write("<Missing>" + mi + "</Missing>\n");
c1cca90cf3d763a48705ddaeeffb3c2d82e9e37eSimon Ulbricht }
43f8464f7a29c9609509b9c58925f0432263803dSimon Ulbricht }
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder ontologies = getImports(ontology, new HashSet<OWLOntology>());
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder if (cyclic) {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder String str = ontology.getOntologyID().getOntologyIRI().toString();
7cfebf9e7fdb17e6977a47a593f5dae3bc3d15b0Christian Maeder String merged_name = str + ".merged.owl"; // we must make a new name!
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder // System.out.println("NAME: " + merged_name + "\n");
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder IRI mergedOntologyIRI = IRI.create(merged_name);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder // System.out.println("MERGED_IRI " + mergedOntologyIRI + "\n");
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder OWLOntology merged;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist // Axioms can be excluded when 'quick' Option selected
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist if (quick)
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder merged = manager.createOntology(mergedOntologyIRI);
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder else {
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder OWLOntologyMerger merger = new OWLOntologyMerger(manager);
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder merged = merger.createMergedOntology(manager, mergedOntologyIRI);
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder }
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist renderUsingOption(merged, wrt_out);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder } else {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder ontologies.add(ontology);
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist exportImports(wrt_out);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist wrt_out.write("\n</Ontologies>\n");
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist wrt_out.flush();
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist wrt_out.close();
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder } catch (Exception ex) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder System.err.println("OWL parse error: " + ex.getMessage());
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder ex.printStackTrace();
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder
25f163f5755534f518718981c8b160fdf5097773notanartist private static void showHelpScreen()
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist {
25f163f5755534f518718981c8b160fdf5097773notanartist String helpText =
25f163f5755534f518718981c8b160fdf5097773notanartist "Usage: processor [<options..>] <URI>\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + "_>_options_<______________\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + " | -o <tp> ..input type\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + " | -i <tp> ..output type\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + " - - - tp <- [owl xml omn rdf obo dol ttl]\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + " | -f <nm> ..write output file\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + " - - - nm <- name of output file\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + " | -qk ..internal(!) sets 'quick' option\n"
25f163f5755534f518718981c8b160fdf5097773notanartist + " | -h ..this helptext";
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist System.out.println( helpText );
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist }
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist // parse arguments according to option set
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist // return false for unknown stuff, or when IRI is not set
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist private static Boolean parseARGuments( String[] args )
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist throws Exception
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist if (args.length == 0) return false;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist input_type = OPTION.MANCHESTER;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist output_type = OPTION.MANCHESTER;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist String tmpFileName = "";
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist for (int i = 0; i < args.length; i++) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist String arg = args[i].toLowerCase();
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist if (arg.startsWith("-")) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist Boolean hasNext = i < args.length-1;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist if (arg.equals("-i") && hasNext) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist i += 1;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist input_type = parseOption(args[i]);
25f163f5755534f518718981c8b160fdf5097773notanartist } else if (arg.equals("-o") && hasNext) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist i += 1;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist output_type = parseOption(args[i]);
25f163f5755534f518718981c8b160fdf5097773notanartist } else if (arg.equals("-f") && hasNext) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist i += 1;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist tmpFileName = args[i];
25f163f5755534f518718981c8b160fdf5097773notanartist } else if (arg.equals("-qk") || arg.equals("-q")) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist quick = true;
25f163f5755534f518718981c8b160fdf5097773notanartist } else if (arg.equals("-h") || arg.equals("--help")) {
25f163f5755534f518718981c8b160fdf5097773notanartist showHelpScreen();
25f163f5755534f518718981c8b160fdf5097773notanartist } else
25f163f5755534f518718981c8b160fdf5097773notanartist return false;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist } else {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist // TODO: could test here if actually is an IRI
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist // .. and test if it's only set once.
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist inp = args[i]; // read again to avoid earlier 'toLowerCase'
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist } }
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist if (inp.equals("")) return false;
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist try {
25f163f5755534f518718981c8b160fdf5097773notanartist if (tmpFileName.equals("")) {
25f163f5755534f518718981c8b160fdf5097773notanartist wrt_out = new BufferedWriter(new OutputStreamWriter(System.out));
25f163f5755534f518718981c8b160fdf5097773notanartist } else wrt_out = new BufferedWriter(new FileWriter(tmpFileName));
25f163f5755534f518718981c8b160fdf5097773notanartist } catch (Exception e) { throw (e); }
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben return true;
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben }
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist
25f163f5755534f518718981c8b160fdf5097773notanartist private static OPTION parseOption (String opt) {
25f163f5755534f518718981c8b160fdf5097773notanartist opt = opt.toLowerCase();
25f163f5755534f518718981c8b160fdf5097773notanartist if(opt.equals("xml") || opt.equals("owl")) return OPTION.OWL_XML;
25f163f5755534f518718981c8b160fdf5097773notanartist else if(opt.equals("omn")) return OPTION.MANCHESTER;
25f163f5755534f518718981c8b160fdf5097773notanartist else if(opt.equals("rdf")) return OPTION.RDF_XML;
25f163f5755534f518718981c8b160fdf5097773notanartist else if(opt.equals("obo")) return OPTION.OBO;
25f163f5755534f518718981c8b160fdf5097773notanartist else if(opt.equals("dol")) return OPTION.DOL;
25f163f5755534f518718981c8b160fdf5097773notanartist else if(opt.equals("ttl")) return OPTION.TURTLE;
25f163f5755534f518718981c8b160fdf5097773notanartist return OPTION.MANCHESTER; // use omn as default
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist }
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben private static OWLOntologyManager setupManagerWithMissingImportListener () {
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben OWLOntologyManager mgr = OWLManager.createOWLOntologyManager();
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben mgr.addMissingImportListener(new HasMissingImports());
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben return mgr;
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben }
2e08f62eab7a9bd9becf08ce32871a39306e4798Szaben
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder private static class HasMissingImports implements MissingImportListener {
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder @Override
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder public void importMissing(MissingImportEvent event) {
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder missingImports.add(event.getImportedOntologyURI());
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder }
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder }
7ca6e1b0867fc982f00128017f530b433ea8a37fChristian Maeder
25f163f5755534f518718981c8b160fdf5097773notanartist private static Set<OWLOntology> getImports (OWLOntology ontology, Set<OWLOntology> stop) {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder Set<OWLOntology> s = new HashSet<OWLOntology>();
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder Set<OWLOntology> next = new HashSet<OWLOntology>(stop);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder next.add(ontology);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder for (OWLOntology imported : ontology.getDirectImports())
c50adef8a083be353c6f07af011359ed16a98d15Christian Maeder if (cyclic || next.contains(imported)) cyclic = true;
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder else if (!s.contains(imported)) {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder Set<OWLOntology> i = getImports(imported, next);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder s.add(imported);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder s.addAll(i);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder return s;
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder
25f163f5755534f518718981c8b160fdf5097773notanartist private static void exportImports (BufferedWriter out) {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder Boolean changed;
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder do {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder changed = false;
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder for (OWLOntology onto : ontologies)
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder if (exported.containsAll(onto.getDirectImports())) {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder if (!exported.contains(onto)) {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder changed = exported.add(onto);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder renderUsingOption(onto, out);
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder } while (changed);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder
25f163f5755534f518718981c8b160fdf5097773notanartist private static void renderUsingOption (OWLOntology onto, BufferedWriter out) {
c7d44bc923b7eb1a01abd095cd004030fee589eanotanartist switch (output_type) {
25f163f5755534f518718981c8b160fdf5097773notanartist case OWL_XML :
25f163f5755534f518718981c8b160fdf5097773notanartist renderAsXml(onto, out);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder break;
25f163f5755534f518718981c8b160fdf5097773notanartist case MANCHESTER :
8c67d928dcfe67b665392c4d52eab299f7fabfc6Christian Maeder renderAsOmn(onto, out);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder break;
25f163f5755534f518718981c8b160fdf5097773notanartist case RDF_XML :
8c67d928dcfe67b665392c4d52eab299f7fabfc6Christian Maeder renderAsRdf(onto, out);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder break;
25f163f5755534f518718981c8b160fdf5097773notanartist
25f163f5755534f518718981c8b160fdf5097773notanartist case OBO :
25f163f5755534f518718981c8b160fdf5097773notanartist renderAsXml(onto, out);
25f163f5755534f518718981c8b160fdf5097773notanartist break;
25f163f5755534f518718981c8b160fdf5097773notanartist case DOL :
25f163f5755534f518718981c8b160fdf5097773notanartist renderAsXml(onto, out);
25f163f5755534f518718981c8b160fdf5097773notanartist break;
25f163f5755534f518718981c8b160fdf5097773notanartist case TURTLE :
25f163f5755534f518718981c8b160fdf5097773notanartist renderAsXml(onto, out);
25f163f5755534f518718981c8b160fdf5097773notanartist break;
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder
25f163f5755534f518718981c8b160fdf5097773notanartist private static void renderAsOmn (OWLOntology onto, BufferedWriter out) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder try {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder ManchesterOWLSyntaxRenderer rendi = new ManchesterOWLSyntaxRenderer();
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder rendi.render(onto, out);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder } catch (OWLRendererException ex) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder System.err.println("Error by ManchesterParser!");
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder ex.printStackTrace();
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder
25f163f5755534f518718981c8b160fdf5097773notanartist private static void renderAsXml (OWLOntology onto, BufferedWriter out) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder try {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder OWLXMLRenderer ren = new OWLXMLRenderer();
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder File tempFile = File.createTempFile("owlTemp", ".xml");
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder FileWriter buf = new FileWriter(tempFile);
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder if (quick) {
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder onto.getOWLOntologyManager().removeAxioms(onto, onto.getAxioms());
91e24fc45834b35f2a3830d72565640251149bf3Christian Maeder }
4ba4ec250c14dcdee866a16eeabb61917f7cb028Christian Maeder ren.render(onto, buf);
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder buf.flush();
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder buf.close();
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder BufferedReader rBuf = new BufferedReader(new FileReader(tempFile));
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder rBuf.readLine(); // ignore the first line containing <?xml version="1.0"?>
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder while (rBuf.ready()) out.append(rBuf.readLine()).append("\n");
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder rBuf.close();
f792c718a71c2e62f9a22b6ed5e9146704fc08b9Christian Maeder tempFile.deleteOnExit();
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder out.append("<Loaded name=\"").append(manager.getOntologyDocumentIRI(onto));
8c67d928dcfe67b665392c4d52eab299f7fabfc6Christian Maeder out.append("\" ontiri=\"").append(onto.getOntologyID().getOntologyIRI()).append("\"/>\n");
b9a7827caf331ae5b7eb491455d7e647c83f1345Christian Maeder } catch (Exception ex) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder System.err.println("Error by XMLParser!");
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder ex.printStackTrace();
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder
25f163f5755534f518718981c8b160fdf5097773notanartist private static void renderAsRdf (OWLOntology onto, BufferedWriter out) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder try {
4efb09a1f46a0b322633b729c9a9fd50bf270125Christian Maeder RDFXMLRenderer rdfrend = new RDFXMLRenderer(onto, out);
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder rdfrend.render();
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder } catch (IOException ex) {
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder System.err.println("Error by RDFParser!");
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder ex.printStackTrace();
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
d25c69509848853b0b15b93e3cc180cab81047acChristian Maeder }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu}