/* * Copyright James Leigh (c) 2008. * * Licensed under the Aduna BSD-style license. */ package net.enilink.komma.generator; import java.io.File; import java.io.FileNotFoundException; import java.io.OutputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.RDFWriter; import org.eclipse.rdf4j.rio.Rio; import org.eclipse.rdf4j.rio.rdfxml.util.RDFXMLPrettyWriter; import net.enilink.komma.core.IReference; import net.enilink.komma.core.Namespace; import net.enilink.vocab.owl.OWL; import net.enilink.vocab.rdf.RDF; import net.enilink.vocab.rdfs.RDFS; /** * Prints RDF ontology data is an grouped by subject and type. * */ public class OntologyWriter extends OrganizedRDFWriter { private static RDFWriter createWriter(RDFFormat format, OutputStream out) { if (format.equals(RDFFormat.RDFXML)) { return new RDFXMLPrettyWriter(out); } return Rio.createWriter(format, out); } private static RDFWriter createWriter(RDFFormat format, Writer writer) { if (format.equals(RDFFormat.RDFXML)) { return new RDFXMLPrettyWriter(writer); } return Rio.createWriter(format, writer); } public OntologyWriter(File file, String enc) throws FileNotFoundException, UnsupportedEncodingException { this(new PrintWriter(file, enc)); } public OntologyWriter(File file) throws FileNotFoundException { this(new PrintWriter(file)); } public OntologyWriter(String filename, String enc) throws FileNotFoundException, UnsupportedEncodingException { this(new PrintWriter(filename, enc)); } public OntologyWriter(String filename) throws FileNotFoundException { this(new PrintWriter(filename)); } public OntologyWriter(OutputStream writer) { super(new RDFXMLPrettyWriter(writer)); } public OntologyWriter(Writer writer) { super(new RDFXMLPrettyWriter(writer)); } public OntologyWriter(RDFFormat format, OutputStream out) { super(createWriter(format, out)); } public OntologyWriter(RDFFormat format, Writer writer) { super(createWriter(format, writer)); } @Override public Void visitBegin() { super.visitBegin(); visitNamespace(new Namespace("rdf", RDF.NAMESPACE_URI)); visitNamespace(new Namespace("rdfs", RDFS.NAMESPACE_URI)); visitNamespace(new Namespace("owl", OWL.NAMESPACE_URI)); return null; } public void printOntology(IReference ontology) { print(ontology); print(RDFS.PROPERTY_ISDEFINEDBY, ontology); } @Override public void print() { print(RDF.PROPERTY_TYPE, OWL.TYPE_ONTOLOGY); super.print(); printReferenced(); } }