From d51ed8d2f20263acbb204d1187ae343f3dfe6529 Mon Sep 17 00:00:00 2001 From: josch Date: Tue, 15 Feb 2011 00:26:52 +0100 Subject: [PATCH] make exporting work --- .../informatik/hets/model/Actuals.java | 6 +++ .../informatik/hets/model/Basicspec.java | 24 +++++++--- .../informatik/hets/model/HetFile.java | 17 ++----- .../unibremen/informatik/hets/model/Spec.java | 4 +- .../informatik/hets/model/SpecDefn.java | 21 ++++----- .../informatik/hets/model/Union.java | 4 +- .../hets/protege/CGIImportHetsAction.java | 4 +- .../hets/protege/ExportHetsAction.java | 46 ++++++++++--------- .../hets/protege/HetCASLOntologyStorer.java | 2 +- .../HetCASLRenderingViewComponent.java | 19 +++++--- .../hets/protege/ImportedHetFile.java | 22 +++++++++ src/de/unibremen/informatik/owl/OWLUtils.java | 28 ++++++++++- 12 files changed, 134 insertions(+), 63 deletions(-) create mode 100644 src/de/unibremen/informatik/hets/protege/ImportedHetFile.java diff --git a/src/de/unibremen/informatik/hets/model/Actuals.java b/src/de/unibremen/informatik/hets/model/Actuals.java index 25723b2..463d8b0 100644 --- a/src/de/unibremen/informatik/hets/model/Actuals.java +++ b/src/de/unibremen/informatik/hets/model/Actuals.java @@ -1,5 +1,7 @@ package de.unibremen.informatik.hets.model; +import org.semanticweb.owlapi.model.OWLOntologyManager; + public class Actuals extends Spec { public Actuals(String cont, String anno) { super(cont, anno); @@ -9,6 +11,10 @@ public class Actuals extends Spec { return content; } + public String toString(OWLOntologyManager ontologymanager) { + return content + "\n"; + } + public String toString() { return content + "\n"; } diff --git a/src/de/unibremen/informatik/hets/model/Basicspec.java b/src/de/unibremen/informatik/hets/model/Basicspec.java index 3f2a3f4..b9b2c35 100644 --- a/src/de/unibremen/informatik/hets/model/Basicspec.java +++ b/src/de/unibremen/informatik/hets/model/Basicspec.java @@ -3,25 +3,37 @@ package de.unibremen.informatik.hets.model; import de.unibremen.informatik.owl.OWLUtils; import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.model.OWLOntologyManager; +import org.semanticweb.owlapi.model.IRI; import org.protege.editor.owl.model.OWLModelManager; public class Basicspec extends Spec { - OWLOntology ontology; + String ontname; public Basicspec(String cont, String anno) { super(cont, anno); } - public OWLOntology getOntology() { - return ontology; + public String getOntologyName() { + return ontname; } public void displayOntology(OWLModelManager owlmodelmanager, String iri) { - ontology = OWLUtils.displayOntology(owlmodelmanager, content, iri); + OWLUtils.displayOntology(owlmodelmanager, content, iri); + ontname = iri; } - public void displayOntology(OWLModelManager owlmodelmanager, String iri, OWLOntology parent_ont, String parent_iri) { - ontology = OWLUtils.displayOntology(owlmodelmanager, content, parent_ont, iri, parent_iri); + public void displayOntology(OWLModelManager owlmodelmanager, String iri, String parent_iri) { + OWLUtils.displayOntology(owlmodelmanager, content, iri, parent_iri); + ontname = iri; + } + + public String toString(OWLOntologyManager ontologymanager) { + return OWLUtils.dumpOntologyToString(ontologymanager, ontname); + } + + public String toString() { + return content; } } diff --git a/src/de/unibremen/informatik/hets/model/HetFile.java b/src/de/unibremen/informatik/hets/model/HetFile.java index a648f5a..52ede7a 100644 --- a/src/de/unibremen/informatik/hets/model/HetFile.java +++ b/src/de/unibremen/informatik/hets/model/HetFile.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Iterator; import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.model.OWLOntologyManager; import org.protege.editor.owl.model.OWLModelManager; @@ -20,7 +21,7 @@ public class HetFile { specdefns.add(specdefn); } - public String toString() { + public String toString(OWLOntologyManager ontologymanager) { StringBuilder builder = new StringBuilder(); builder.append("library "); @@ -38,24 +39,16 @@ public class HetFile { builder.append("\n\n"); } - builder.append(specdefn.toString()); + builder.append(specdefn.toString(ontologymanager)); builder.append("\n"); } return builder.toString(); } - public OWLOntology getOntologyByName(String name) { - for (SpecDefn specdefn : specdefns) { - if (specdefn.getLogic().equals("OWL") && specdefn.getName().equals(name)) { - return specdefn.getOntology(); - } - } - return null; - } - public void displayOntologies(OWLModelManager manager) { // TODO: this yet only supports basicspec and simple extension blocks + // needs heavy fixing.. for (SpecDefn specdefn : specdefns) { if (specdefn.getLogic().equals("OWL")) { @@ -67,7 +60,7 @@ public class HetFile { Spec spec = it.next(); if (spec instanceof Basicspec) { if (parent_iri != "") { - ((Basicspec)spec).displayOntology(manager, specdefn.getName(), getOntologyByName(parent_iri), parent_iri); + ((Basicspec)spec).displayOntology(manager, specdefn.getName(), parent_iri); } else { ((Basicspec)spec).displayOntology(manager, specdefn.getName()); } diff --git a/src/de/unibremen/informatik/hets/model/Spec.java b/src/de/unibremen/informatik/hets/model/Spec.java index 173b0af..dbedb18 100644 --- a/src/de/unibremen/informatik/hets/model/Spec.java +++ b/src/de/unibremen/informatik/hets/model/Spec.java @@ -1,5 +1,7 @@ package de.unibremen.informatik.hets.model; +import org.semanticweb.owlapi.model.OWLOntologyManager; + public class Spec { protected String annotation; protected String content; @@ -19,7 +21,7 @@ public class Spec { annotation = null; } - public String toString() { + public String toString(OWLOntologyManager ontologymanager) { return content; } diff --git a/src/de/unibremen/informatik/hets/model/SpecDefn.java b/src/de/unibremen/informatik/hets/model/SpecDefn.java index 2847644..fbc8305 100644 --- a/src/de/unibremen/informatik/hets/model/SpecDefn.java +++ b/src/de/unibremen/informatik/hets/model/SpecDefn.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Iterator; import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.model.OWLOntologyManager; public class SpecDefn { private ArrayList specs; @@ -34,17 +35,7 @@ public class SpecDefn { return specs.iterator(); } - // just return the first Basicspec for now - public OWLOntology getOntology() { - for (Spec spec : specs) { - if (spec instanceof Basicspec) { - return ((Basicspec)spec).getOntology(); - } - } - return null; - } - - public String toString() { + public String toString(OWLOntologyManager ontologymanager) { StringBuilder builder = new StringBuilder(); if (annotation != null && annotation != "") { @@ -68,7 +59,13 @@ public class SpecDefn { if (!(spec instanceof Union)) { builder.append("\n"); } - builder.append(spec.toString()); + + // only use the manchester renderer on OWL basicspecs + if (logic.equals("OWL")) { + builder.append(spec.toString(ontologymanager)); + } else { + builder.append(spec.toString()); + } if (it.hasNext()) { builder.append("then"); diff --git a/src/de/unibremen/informatik/hets/model/Union.java b/src/de/unibremen/informatik/hets/model/Union.java index 16d1565..f7c43f7 100644 --- a/src/de/unibremen/informatik/hets/model/Union.java +++ b/src/de/unibremen/informatik/hets/model/Union.java @@ -3,6 +3,8 @@ package de.unibremen.informatik.hets.model; import java.util.ArrayList; import java.util.Iterator; +import org.semanticweb.owlapi.model.OWLOntologyManager; + public class Union extends Spec { private ArrayList specs; @@ -18,7 +20,7 @@ public class Union extends Spec { } } - public String toString() { + public String toString(OWLOntologyManager ontologymanager) { StringBuilder builder = new StringBuilder(); Iterator it = specs.iterator(); diff --git a/src/de/unibremen/informatik/hets/protege/CGIImportHetsAction.java b/src/de/unibremen/informatik/hets/protege/CGIImportHetsAction.java index 51df329..598a3a8 100644 --- a/src/de/unibremen/informatik/hets/protege/CGIImportHetsAction.java +++ b/src/de/unibremen/informatik/hets/protege/CGIImportHetsAction.java @@ -83,8 +83,10 @@ public class CGIImportHetsAction extends ProtegeOWLAction { e.printStackTrace(); } - System.out.println(hetfile.toString()); + //System.out.println(hetfile.toString()); hetfile.displayOntologies(this.getOWLModelManager()); + + ImportedHetFile.setHetFile(hetfile); } } diff --git a/src/de/unibremen/informatik/hets/protege/ExportHetsAction.java b/src/de/unibremen/informatik/hets/protege/ExportHetsAction.java index 4c07be5..fe1462c 100644 --- a/src/de/unibremen/informatik/hets/protege/ExportHetsAction.java +++ b/src/de/unibremen/informatik/hets/protege/ExportHetsAction.java @@ -18,6 +18,7 @@ import org.semanticweb.owlapi.io.StreamDocumentTarget; import org.semanticweb.owlapi.model.OWLOntology; import de.unibremen.informatik.hets.protege.ImportHetsAction; +import de.unibremen.informatik.hets.model.HetFile; import org.semanticweb.owlapi.model.IRI; public class ExportHetsAction extends ProtegeOWLAction { @@ -41,27 +42,6 @@ public class ExportHetsAction extends ProtegeOWLAction { public void dispose() throws Exception { // TODO Auto-generated method stub } - - String dumpOntologyToString(String name) { - String result; - - OWLOntologyManager ontologymanager = this.getOWLModelManager().getOWLOntologyManager(); - ByteArrayOutputStream outputstream = new ByteArrayOutputStream(); - - try { - ontologymanager.saveOntology(ontologymanager.getOntology(IRI.create("http://informatik.uni-bremen.de/hets/"+name+".het")), outputstream); - } catch (OWLOntologyStorageException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - result = outputstream.toString(); - result = result.replaceAll("(?m)^Prefix: .*$", ""); - result = result.replaceAll("(?m)^Ontology: .*$", ""); - result = result.replaceAll("(?m)^Import: .*$", ""); - result = result.replaceAll("(?m)^\\s*$[\n\r]{1,}", ""); - result = result.replaceAll("(?m)(^.*$)", " $1"); - return result; - } @Override public void actionPerformed(ActionEvent e) { @@ -81,6 +61,7 @@ public class ExportHetsAction extends ProtegeOWLAction { }*/ + /* Set exts = new HashSet(); exts.add("het"); exts.add("owl"); @@ -103,5 +84,26 @@ public class ExportHetsAction extends ProtegeOWLAction { // TODO Auto-generated catch block e1.printStackTrace(); } + */ + + HetFile hetfile = ImportedHetFile.getHetFile(); + + Set exts = new HashSet(); + exts.add("het"); + exts.add("owl"); + File f = UIUtil.saveFile(this.getOWLWorkspace(), "title", "description", exts, "foobar.het"); + + if (f.exists()) { + // TODO: ask if overwrite + f.delete(); + } + + try { + FileOutputStream outputFile = new FileOutputStream(f, true); + outputFile.write(hetfile.toString(this.getOWLModelManager().getOWLOntologyManager()).getBytes()); + outputFile.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } } -} \ No newline at end of file +} diff --git a/src/de/unibremen/informatik/hets/protege/HetCASLOntologyStorer.java b/src/de/unibremen/informatik/hets/protege/HetCASLOntologyStorer.java index a84a555..3a794fa 100644 --- a/src/de/unibremen/informatik/hets/protege/HetCASLOntologyStorer.java +++ b/src/de/unibremen/informatik/hets/protege/HetCASLOntologyStorer.java @@ -9,4 +9,4 @@ public class HetCASLOntologyStorer extends ManchesterOWLSyntaxOntologyStorer { public boolean canStoreOntology(OWLOntologyFormat arg0) { return arg0.equals(new HetCASLOntologyFormat()); } -} \ No newline at end of file +} diff --git a/src/de/unibremen/informatik/hets/protege/HetCASLRenderingViewComponent.java b/src/de/unibremen/informatik/hets/protege/HetCASLRenderingViewComponent.java index d59a248..89b6b49 100644 --- a/src/de/unibremen/informatik/hets/protege/HetCASLRenderingViewComponent.java +++ b/src/de/unibremen/informatik/hets/protege/HetCASLRenderingViewComponent.java @@ -1,9 +1,11 @@ package de.unibremen.informatik.hets.protege; import java.io.Writer; +import java.io.IOException; import org.protege.editor.owl.ui.view.ontology.AbstractOntologyRenderingViewComponent; import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.io.OWLRendererException; import uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxRenderer; @@ -15,10 +17,15 @@ public class HetCASLRenderingViewComponent extends AbstractOntologyRenderingView private static final long serialVersionUID = 3845613418666267771L; @Override - protected void renderOntology(OWLOntology ontology, Writer writer) throws Exception { - // TODO Auto-generated method stub - ManchesterOWLSyntaxRenderer ren = new ManchesterOWLSyntaxRenderer(getOWLModelManager().getOWLOntologyManager()); - ren.render(ontology, writer); - writer.flush(); + protected void renderOntology(OWLOntology ontology, Writer writer) { + try { + ManchesterOWLSyntaxRenderer ren = new ManchesterOWLSyntaxRenderer(getOWLModelManager().getOWLOntologyManager()); + ren.render(ontology, writer); + writer.flush(); + } catch (OWLRendererException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } } -} \ No newline at end of file +} diff --git a/src/de/unibremen/informatik/hets/protege/ImportedHetFile.java b/src/de/unibremen/informatik/hets/protege/ImportedHetFile.java new file mode 100644 index 0000000..9988863 --- /dev/null +++ b/src/de/unibremen/informatik/hets/protege/ImportedHetFile.java @@ -0,0 +1,22 @@ +package de.unibremen.informatik.hets.protege; + +import de.unibremen.informatik.hets.model.HetFile; + +public class ImportedHetFile { + static HetFile hetfile; + + static { + } + + public ImportedHetFile() { + super(); + } + + public static void setHetFile(HetFile hf) { + hetfile = hf; + } + + public static HetFile getHetFile() { + return hetfile; + } +} diff --git a/src/de/unibremen/informatik/owl/OWLUtils.java b/src/de/unibremen/informatik/owl/OWLUtils.java index 71bbec4..5246588 100644 --- a/src/de/unibremen/informatik/owl/OWLUtils.java +++ b/src/de/unibremen/informatik/owl/OWLUtils.java @@ -64,11 +64,13 @@ public class OWLUtils { return ont; } - public static OWLOntology displayOntology(OWLModelManager owlmodelmanager, String ont_string, OWLOntology parent_ont, String iri, String parent_iri) { + public static OWLOntology displayOntology(OWLModelManager owlmodelmanager, String ont_string, String iri, String parent_iri) { OWLOntologyManager manager = owlmodelmanager.getOWLOntologyManager(); manager.addOntologyStorer(new HetCASLOntologyStorer()); + OWLOntology parent_ont = manager.getOntology(IRI.create("http://informatik.uni-bremen.de/hets/"+parent_iri+".het")); + System.out.println(parent_ont + ", " + parent_iri + ", " + iri); if (parent_ont != null && parent_iri != "" && parent_iri != iri) { OWLOntologyManager tempmanager = OWLManager.createOWLOntologyManager(); @@ -125,4 +127,28 @@ public class OWLUtils { return ontology1; } + + public static String dumpOntologyToString(OWLOntologyManager ontologymanager, String ontname) { + String result; + + OWLOntology ont = ontologymanager.getOntology(IRI.create("http://informatik.uni-bremen.de/hets/"+ontname+".het")); + + System.out.println("ontology: " + ont); + + ByteArrayOutputStream outputstream = new ByteArrayOutputStream(); + + try { + ontologymanager.saveOntology(ont, outputstream); + } catch (OWLOntologyStorageException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + result = outputstream.toString(); + result = result.replaceAll("(?m)^Prefix: .*$", ""); + result = result.replaceAll("(?m)^Ontology: .*$", ""); + result = result.replaceAll("(?m)^Import: .*$", ""); + result = result.replaceAll("(?m)^\\s*$[\n\r]{1,}", ""); + result = result.replaceAll("(?m)(^.*$)", " $1"); + return result; + } }