001package org.dllearner.utilities.owl; 002 003import org.semanticweb.owlapi.apibinding.OWLManager; 004import org.semanticweb.owlapi.io.OWLObjectRenderer; 005import org.semanticweb.owlapi.model.IRI; 006import org.semanticweb.owlapi.model.OWLObject; 007import org.semanticweb.owlapi.model.OWLOntology; 008import org.semanticweb.owlapi.model.OWLOntologyCreationException; 009import org.semanticweb.owlapi.owlxml.renderer.OWLXMLObjectRenderer; 010import org.semanticweb.owlapi.owlxml.renderer.OWLXMLWriter; 011import org.semanticweb.owlapi.util.ShortFormProvider; 012 013import javax.annotation.Nonnull; 014import java.io.StringWriter; 015 016/** 017 * An OWL/XML syntax renderer that implements the interface {@link OWLObjectRenderer}, thus, can be used as 018 * syntax in {@link org.dllearner.core.StringRenderer} helper class. Note, a short form is not implemented yet, thus, 019 * full IRIs are used and the syntax is quite verbose. 020 * 021 * @author Lorenz Buehmann 022 */ 023public class OWLXMLRenderer implements OWLObjectRenderer { 024 025 private OWLXMLObjectRenderer delegate; 026 private StringWriter sw; 027 028 public OWLXMLRenderer() { 029 try { 030 OWLOntology ont = OWLManager.createOWLOntologyManager().createOntology(IRI.create("http://dl-learner.org/ontology/")); 031 sw = new StringWriter(); 032 OWLXMLWriter oxw = new OWLXMLWriter(sw, ont); 033 delegate = new OWLXMLObjectRenderer(oxw); 034 } catch (OWLOntologyCreationException e) { 035 e.printStackTrace(); 036 } 037 } 038 039 @Override 040 public void setShortFormProvider(@Nonnull ShortFormProvider shortFormProvider) { 041 } 042 043 @Nonnull 044 @Override 045 public String render(@Nonnull OWLObject object) { 046 sw.getBuffer().setLength(0); // clear the StringWriter 047 object.accept(delegate); 048 return sw.toString(); 049 } 050}