/* * This file is part of the OWL API. * * The contents of this file are subject to the LGPL License, Version 3.0. * * Copyright (C) 2014, Commonwealth Scientific and Industrial Research Organisation * * This program is free software: you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program. If * not, see http://www.gnu.org/licenses/. * * * Alternatively, the contents of this file may be used under the terms of the Apache License, * Version 2.0 in which case, the provisions of the Apache License Version 2.0 are applicable * instead of those above. * * Copyright 2014, Commonwealth Scientific and Industrial Research Organisation * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package org.semanticweb.owlapi.rio; import static java.util.Arrays.asList; import static org.semanticweb.owlapi.util.OWLAPIPreconditions.verifyNotNull; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Collection; import javax.annotation.Nullable; import org.eclipse.rdf4j.rio.RDFFormat; import org.semanticweb.owlapi.formats.FunctionalSyntaxDocumentFormat; import org.semanticweb.owlapi.formats.ManchesterSyntaxDocumentFormat; import org.semanticweb.owlapi.formats.OWLXMLDocumentFormat; import org.semanticweb.owlapi.model.OWLDocumentFormat; import org.semanticweb.owlapi.model.OWLDocumentFormatFactory; import org.semanticweb.owlapi.model.OWLRuntimeException; /** * Extended {@link RDFFormat} constants for OWL formats that can be translated into RDF. * * @author Peter Ansell p_ansell@yahoo.com * @since 4.0.0 */ public class OWLAPIRDFFormat extends RDFFormat { /** * The <a href="http://www.w3.org/TR/owl2-manchester-syntax/">Manchester OWL Syntax</a> file * format. * <p> * The file extension {@code .omn} is recommended for Manchester OWL Syntax documents. The media * type is {@code text/owl-manchester} and encoding is in UTF-8. * </p> * * @see <a href="http://www.w3.org/TR/owl2-manchester-syntax/">OWL 2 Web Ontology Language * Manchester Syntax (Second Edition)</a> */ public static final OWLAPIRDFFormat MANCHESTER_OWL = new OWLAPIRDFFormat("Manchester OWL Syntax", asList("text/owl-manchester"), StandardCharsets.UTF_8, asList("omn"), SUPPORTS_NAMESPACES, NO_CONTEXTS, new ManchesterSyntaxDocumentFormat()); /** * The <a href="http://www.w3.org/TR/owl2-xml-serialization/">OWL/XML</a> file format. * <p> * The file extension {@code .owx} is recommended for OWL/XML documents. The media type is * {@code application/owl+xml} and encoding is in UTF-8. * </p> * * @see <a href="http://www.w3.org/TR/owl2-xml-serialization/">OWL 2 Web Ontology Language XML * Serialization (Second Edition)</a> */ public static final OWLAPIRDFFormat OWL_XML = new OWLAPIRDFFormat("OWL/XML Syntax", asList("application/owl+xml"), StandardCharsets.UTF_8, asList("owx"), SUPPORTS_NAMESPACES, NO_CONTEXTS, new OWLXMLDocumentFormat()); /** * The <a href="http://www.w3.org/TR/owl2-syntax/">OWL Functional Syntax</a> file format. * <p> * The file extension {@code .ofn} is recommended for OWL Functional Syntax documents. The media * type is {@code text/owl-functional} and encoding is in UTF-8. * </p> * * @see <a href="http://www.w3.org/TR/owl2-syntax/">OWL 2 Web Ontology Language Structural * Specification and Functional-Style Syntax (Second Edition)</a> */ public static final OWLAPIRDFFormat OWL_FUNCTIONAL = new OWLAPIRDFFormat("OWL Functional Syntax", asList("text/owl-functional"), StandardCharsets.UTF_8, asList("ofn"), SUPPORTS_NAMESPACES, NO_CONTEXTS, new FunctionalSyntaxDocumentFormat()); @Nullable private OWLDocumentFormat owlFormat; @Nullable private OWLDocumentFormatFactory owlFormatFactory; /** * @param name name * @param mimeType mimeType * @param charset charset * @param fileExtension fileExtension * @param supportsNamespaces supportsNamespaces * @param supportsContexts supportsContexts * @param owlFormat owlFormat */ public OWLAPIRDFFormat(String name, String mimeType, Charset charset, String fileExtension, boolean supportsNamespaces, boolean supportsContexts, OWLDocumentFormatFactory owlFormat) { super(name, mimeType, charset, fileExtension, supportsNamespaces, supportsContexts); owlFormatFactory = owlFormat; } /** * @param name name * @param mimeType mimeType * @param charset charset * @param fileExtensions fileExtensions * @param supportsNamespaces supportsNamespaces * @param supportsContexts supportsContexts * @param owlFormat owlFormat */ public OWLAPIRDFFormat(String name, String mimeType, Charset charset, Collection<String> fileExtensions, boolean supportsNamespaces, boolean supportsContexts, OWLDocumentFormatFactory owlFormat) { super(name, mimeType, charset, fileExtensions, supportsNamespaces, supportsContexts); owlFormatFactory = owlFormat; } /** * @param name name * @param mimeTypes mimeTypes * @param charset charset * @param fileExtensions fileExtensions * @param supportsNamespaces supportsNamespaces * @param supportsContexts supportsContexts * @param owlFormat owlFormat */ public OWLAPIRDFFormat(String name, Collection<String> mimeTypes, Charset charset, Collection<String> fileExtensions, boolean supportsNamespaces, boolean supportsContexts, OWLDocumentFormatFactory owlFormat) { super(name, mimeTypes, charset, fileExtensions, supportsNamespaces, supportsContexts); owlFormatFactory = owlFormat; } /** * @param name name * @param mimeType mimeType * @param charset charset * @param fileExtension fileExtension * @param supportsNamespaces supportsNamespaces * @param supportsContexts supportsContexts * @param owlFormat owlFormat */ public OWLAPIRDFFormat(String name, String mimeType, Charset charset, String fileExtension, boolean supportsNamespaces, boolean supportsContexts, OWLDocumentFormat owlFormat) { super(name, mimeType, charset, fileExtension, supportsNamespaces, supportsContexts); this.owlFormat = owlFormat; } /** * @param name name * @param mimeType mimeType * @param charset charset * @param fileExtensions fileExtensions * @param supportsNamespaces supportsNamespaces * @param supportsContexts supportsContexts * @param owlFormat owlFormat */ public OWLAPIRDFFormat(String name, String mimeType, Charset charset, Collection<String> fileExtensions, boolean supportsNamespaces, boolean supportsContexts, OWLDocumentFormat owlFormat) { super(name, mimeType, charset, fileExtensions, supportsNamespaces, supportsContexts); this.owlFormat = owlFormat; } /** * @param name name * @param mimeTypes mimeTypes * @param charset charset * @param fileExtensions fileExtensions * @param supportsNamespaces supportsNamespaces * @param supportsContexts supportsContexts * @param owlFormat owlFormat */ public OWLAPIRDFFormat(String name, Collection<String> mimeTypes, Charset charset, Collection<String> fileExtensions, boolean supportsNamespaces, boolean supportsContexts, OWLDocumentFormat owlFormat) { super(name, mimeTypes, charset, fileExtensions, supportsNamespaces, supportsContexts); this.owlFormat = owlFormat; } /** * @return A fresh instance of the matching {@link OWLDocumentFormat} for this OWLAPIRDFFormat. */ public OWLDocumentFormat getOWLFormat() { if (owlFormatFactory != null) { return owlFormatFactory.createFormat(); } try { return verifyNotNull(owlFormat).getClass().newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new OWLRuntimeException( "Format did not have a factory or a public default constructor", e); } } }