OWL2Parser.java revision 2578a6d217296401d347302c9104fee179bd0470
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;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport org.semanticweb.owlapi.model.IRI;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxRenderer;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiuimport uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxObjectRenderer;
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;
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiupublic class OWL2Parser {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu private static ArrayList<OWLOntology> loadedImportsList = new ArrayList<OWLOntology>();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu static private ArrayList<IRI> importsURI = new ArrayList<IRI>();
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;
2578a6d217296401d347302c9104fee179bd0470Francisc 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();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu if (args.length == 2) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu filename = args[1];
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu out = new BufferedWriter(new FileWriter(filename));
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu } else {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu out = new BufferedWriter(openForFile(null));
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu /* Load an ontology from a physical IRI */
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu IRI physicalIRI = IRI.create(args[0]);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu //System.out.println("Loading : " + args[0]);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu // Now do the loading
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu OWLOntology ontology = manager.loadOntologyFromOntologyDocument(physicalIRI);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu //System.out.println(ontology);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu // get all ontology which are imported from this ontology.
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu getImportsList(ontology, manager);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu //System.out.println("LoadedImportsList: " + loadedImportsList);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu //System.out.println();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu if(loadedImportsList.size() == 0)
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu loadedImportsList.add(ontology);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu importsURI.add(manager.getOntologyDocumentIRI(ontology));
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu for (OWLOntology onto : loadedImportsList) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu //System.out.println("parsing OWL: " + onto.getOntologyID().getOntologyIRI() + " ...");
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu ManchesterOWLSyntaxRenderer rendi = new ManchesterOWLSyntaxRenderer (onto.getOWLOntologyManager());
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu rendi.render(onto,out);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu //System.out.println("OWL parsing done!\n");
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
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu ArrayList<OWLOntology> unSavedImports = new ArrayList<OWLOntology>();
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu try {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu for (OWLOntology imported : om.getImports(ontology)) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu if (!importsURI.contains(imported.getOntologyID().getOntologyIRI())) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu //System.out.println("IMPORTED: " + imported + "\n");
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu unSavedImports.add(imported);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu loadedImportsList.add(imported);
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu importsURI.add(imported.getOntologyID().getOntologyIRI());
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
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) {
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu System.err.println("Error!");
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 }
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu}
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu
2578a6d217296401d347302c9104fee179bd0470Francisc Nicolae Bungiu