OWL2Parser.java revision 99558e375936c1252e72196dc94312c72ee19ad2
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport org.semanticweb.owlapi.apibinding.OWLManager;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport org.semanticweb.owlapi.model.OWLException;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport org.semanticweb.owlapi.model.OWLOntology;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport org.semanticweb.owlapi.model.OWLOntologyManager;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.util.OWLOntologyMerger;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport org.semanticweb.owlapi.model.IRI;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.model.OWLAxiom;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport org.semanticweb.owlapi.io.OWLRendererException;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxRenderer;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxObjectRenderer;
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiuimport org.coode.owlapi.owlxml.renderer.OWLXMLRenderer;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.BufferedReader;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.PrintWriter;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.OutputStreamWriter;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.File;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.Writer;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.BufferedWriter;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.FileWriter;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.FileOutputStream;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.IOException;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.io.InputStreamReader;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.net.URI;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport java.util.ArrayList;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport java.util.Set;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport java.util.HashSet;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport java.net.URLConnection;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport java.util.Iterator;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport java.util.HashMap;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiuimport java.util.Map;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiuimport java.util.*;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu@SuppressWarnings("unchecked")
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiupublic class OWL2Parser {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu private static ArrayList<OWLOntology> loadedImportsList = new ArrayList<OWLOntology>();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu private static ArrayList<IRI> importsIRI = new ArrayList<IRI>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu private static Map<OWLOntology,List<OWLOntology>> m = new HashMap<OWLOntology, List<OWLOntology>>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu private static Set<OWLOntology> s = new HashSet<OWLOntology>();
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu private static boolean OP;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu public static void main(String[] args) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu if (args.length < 1) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu System.out.println("Usage: processor <URI> [FILENAME]");
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu System.exit(1);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu String filename = "";
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu BufferedWriter out;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu // A simple example of how to load and save an ontology
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu try {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu IRI iri = IRI.create(args[0]);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (args.length == 3) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu filename = args[1];
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu out = new BufferedWriter(new FileWriter(filename));
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (args[2].equals("xml"))
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu OP = true;
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu else
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu OP = false;
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu } else {
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (args.length == 2) {
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (args[1].equals("xml"))
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu OP = true;
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu else
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu OP = false;
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu out = new BufferedWriter(openForFile(null));
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu /* Load an ontology from a physical IRI */
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu IRI physicalIRI = IRI.create(args[0]);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu // Now do the loading
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu OWLOntology ontology = manager.loadOntologyFromOntologyDocument(physicalIRI);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu getImportsList(ontology, manager);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu if(loadedImportsList.size() == 0)
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu {
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (OP)
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu parse2xml(ontology, out, manager);
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu else
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu parse(ontology,out);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu else {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu if(importsIRI.contains(ontology.getOntologyID().getOntologyIRI())) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu importsIRI.remove(importsIRI.lastIndexOf(ontology.getOntologyID().getOntologyIRI()));
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu if(loadedImportsList.contains(ontology))
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu {
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu OWLOntologyManager mng = OWLManager.createOWLOntologyManager();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu OWLOntologyMerger merger = new OWLOntologyMerger(manager);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu String str = ontology.getOntologyID().getOntologyIRI().toQuotedString();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu String notag = str.replaceAll("\\<","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu notag = notag.replaceAll("\\>","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu notag = notag.replaceAll("\\[.*?]","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu notag = notag.replaceAll("Ontology\\(","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu notag = notag.replaceAll(" ","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu notag = notag.replaceAll("\\)","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu loadedImportsList.remove(loadedImportsList.indexOf(ontology));
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Object aux[] = loadedImportsList.toArray();
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu String merged_name = "";
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu for (Object it : aux) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Object aux_ont = it;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu String mrg = aux_ont.toString();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu mrg = mrg.replaceAll("\\>","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu mrg = mrg.replaceAll("http:/","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu mrg = mrg.replaceAll("\\/.*?/","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu mrg = mrg.replaceAll(".*?/","");
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu mrg = mrg.replaceAll("\\[.*?]","");
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu mrg = mrg.replaceAll("\\)","");
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu mrg = mrg.replaceAll(" ","");
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu merged_name = merged_name + mrg;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu merged_name = notag + merged_name;
1bd5eca1a465ed51600073f631f9f7f4b83a5a52Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu IRI mergedOntologyIRI = IRI.create(merged_name);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu OWLOntology merged = merger.createMergedOntology(manager, mergedOntologyIRI);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu ManchesterOWLSyntaxRenderer rendi = new ManchesterOWLSyntaxRenderer (manager);
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (OP)
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu parse2xml(merged, out, manager);
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu else
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu rendi.render(merged,out);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu else
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu parseZeroImports(out);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu } catch (IOException e) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu System.err.println("Error: can not build file: " + filename);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu e.printStackTrace();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu } catch (Exception ex) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu System.err.println("OWL parse error: " + ex.getMessage());
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu ex.printStackTrace();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu private static void getImportsList(OWLOntology ontology,
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu OWLOntologyManager om) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu List<OWLOntology> empty = Collections.emptyList();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu List<OWLOntology> l = new ArrayList<OWLOntology>();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu ArrayList<OWLOntology> unSavedImports = new ArrayList<OWLOntology>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu try {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu if (om.getImports(ontology).isEmpty()) {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu m.put(ontology,empty);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu else {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu for (OWLOntology imported : om.getDirectImports(ontology)) {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu if (!importsIRI.contains(imported.getOntologyID().getOntologyIRI())) {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu unSavedImports.add(imported);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu loadedImportsList.add(imported);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu importsIRI.add(imported.getOntologyID().getOntologyIRI());
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu l.add(imported);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu m.put(ontology,l);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu for (OWLOntology onto : unSavedImports) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu getImportsList(onto, om);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu } catch (Exception e) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu System.err.println("Error getImportsList!");
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu e.printStackTrace();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu private static Writer openForFile(String fileName)
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu return new OutputStreamWriter(System.out);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu private synchronized static void parseZeroImports(BufferedWriter out)
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Set all = getKeysByValue();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Iterator it = all.iterator();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu while(it.hasNext())
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu OWLOntology onto = (OWLOntology)it.next();
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (OP)
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu parse2xml(onto, out, onto.getOWLOntologyManager());
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu else
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu parse(onto,out);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu s.add(onto);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu m.remove(onto);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu parseImports(out);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu public synchronized static void parseImports(BufferedWriter out)
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Iterator iter = m.entrySet().iterator();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu while((iter.hasNext()) && (!m.isEmpty())) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Map.Entry pairs = (Map.Entry)iter.next();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Set values = new HashSet<OWLOntology>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu List ls = new ArrayList<OWLOntology>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu ls.add(pairs.getValue());
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu List l = new ArrayList<OWLOntology>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu l = (List)ls.get(0);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu values = cnvrt(l);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if(checkset(values)) {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu OWLOntology onto = (OWLOntology)pairs.getKey();
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu if (OP)
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu parse2xml(onto, out, onto.getOWLOntologyManager());
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu else
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu parse(onto,out);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu s.add((OWLOntology)pairs.getKey());
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu m.remove(iter);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu parseImports(out);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu public static Set cnvrt(List lst)
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Set st = new HashSet<OWLOntology>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Iterator it = lst.iterator();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if (lst.size() == 0)
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu return st;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu while(it.hasNext())
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu OWLOntology aux_ont = (OWLOntology)it.next();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu st.add(aux_ont);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu return st;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu public static Boolean checkset(Collection it) {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if (it.isEmpty())
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu return false;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Set<OWLOntology> aux = new HashSet<OWLOntology>();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu aux.addAll(it);
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu return equalcollections(aux, s);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu public static Boolean equalcollections(Set l1, Set l2) {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Boolean eq = true;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if(l1.isEmpty() || l2.isEmpty())
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu return false;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Iterator itr = l1.iterator();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if(itr.next().toString().equals("[]"))
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu eq = false;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu while (itr.hasNext())
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu OWLOntology ont = (OWLOntology)itr.next();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if (!l2.contains(ont))
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu eq = false;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu Iterator it = l2.iterator();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if (it.next().toString().equals("[]"))
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu eq = false;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu while (it.hasNext())
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu {
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu OWLOntology on = (OWLOntology)it.next();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if(!l1.contains(on))
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu eq = false;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu return eq;
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu }
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu public static Set getKeysByValue() {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Set keys = new HashSet();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Iterator it = m.entrySet().iterator();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu while(it.hasNext()) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu Map.Entry pairs = (Map.Entry)it.next();
99558e375936c1252e72196dc94312c72ee19ad2Francisc Nicolae Bungiu if(pairs.getValue().toString().equals("[]")) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu keys.add(pairs.getKey());
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu return keys;
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu public static void parse(OWLOntology onto, BufferedWriter out) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu try {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu ManchesterOWLSyntaxRenderer rendi = new ManchesterOWLSyntaxRenderer (onto.getOWLOntologyManager());
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu rendi.render(onto,out);
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu } catch(OWLRendererException ex) {
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu System.err.println("Error by parse!");
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu ex.printStackTrace();
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
478b7abe044f6dcc5bb0db7cd9155ddc1730ed1bFrancisc Nicolae Bungiu }
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu public static void parse2xml(OWLOntology onto, BufferedWriter out,OWLOntologyManager mng) {
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu try {
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu OWLXMLRenderer ren = new OWLXMLRenderer(mng);
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu ren.render(onto,out);
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu } catch (OWLRendererException ex) {
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu System.err.println("Error by XMLParser!");
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu ex.printStackTrace();
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu }
4e9b833e3236453c591dc70c9e98748cf4458570Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu}
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu