All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.obolibrary.obo2owl.OwlStringTools Maven / Gradle / Ivy

Go to download

A java library for converting obo format documents to OWL, and for converting (a subset of) OWL to obo format. This version has been slightly modified to be included directly in the OWL API. The upstream code for this module and its authors can be found at https://code.google.com/p/oboformat/.

The newest version!
package org.obolibrary.obo2owl;

import static org.semanticweb.owlapi.util.OWLAPIStreamUtils.asList;

import java.io.StringWriter;
import java.io.Writer;
import java.util.Collection;
import java.util.Collections;

import javax.annotation.Nullable;

import org.semanticweb.owlapi.functional.parser.FunctionalSyntaxForAxiomsOnlyParser;
import org.semanticweb.owlapi.functional.renderer.FunctionalSyntaxObjectRenderer;
import org.semanticweb.owlapi.io.OWLParserException;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLRuntimeException;
import org.semanticweb.owlapi.model.UnloadableImportException;

/**
 * Tools to read and write a set of owl axioms to/from a string. Used to preserve untranslatable
 * axioms in an owl2obo conversion.
 */
public class OwlStringTools {

    private OwlStringTools() {}

    /**
     * Create a string for the given set of axioms. Return null for empty sets or if the set is
     * null.
     *
     * @param axioms axioms
     * @param translationManager translation manager
     * @return string or null
     * @deprecated use {@link #translate(Collection)}
     */
    @Deprecated
    public static String translate(Collection axioms,
        @SuppressWarnings("unused") OWLOntologyManager translationManager) {
        return translate(axioms);
    }

    /**
     * Create a string for the given set of axioms. Return null for empty sets or if the set is
     * null.
     *
     * @param axioms axioms
     * @return string or null
     * @see #translate(String, OWLOntologyManager)
     */
    public static String translate(Collection axioms) {
        if (axioms.isEmpty()) {
            return "";
        }
        try {
            Writer writer = new StringWriter();
            return new FunctionalSyntaxObjectRenderer(null, writer).renderAxioms(axioms);
        } catch (OWLRuntimeException e) {
            throw new OwlStringException(e);
        }
    }

    /**
     * Parse the axioms from the given axiom string. Returns null for empty and null strings.
     *
     * @param axioms axioms
     * @param translationManager translation manager
     * @return set of axioms or null
     * @see #translate(Collection, OWLOntologyManager)
     */
    public static Collection translate(@Nullable String axioms,
        OWLOntologyManager translationManager) {
        if (axioms == null || axioms.isEmpty()) {
            return Collections.emptySet();
        }
        try {
            OWLOntology o = translationManager.createOntology();
            translate(axioms, o);
            return asList(o.axioms());
        } catch (OWLOntologyCreationException e) {
            throw new OWLRuntimeException(e);
        }
    }

    /**
     * Parse the axioms from the given axiom string.
     *
     * @param axioms axioms
     * @param o ontology that will accept the axioms
     * @see #translate(Collection, OWLOntologyManager)
     */
    public static void translate(@Nullable String axioms, OWLOntology o) {
        if (axioms == null || axioms.isEmpty()) {
            return;
        }
        try {
            FunctionalSyntaxForAxiomsOnlyParser parser = new FunctionalSyntaxForAxiomsOnlyParser();
            parser.parse(o, o.getOWLOntologyManager().getOntologyLoaderConfiguration(), axioms);
        } catch (UnloadableImportException | OWLParserException e) {
            throw new OWLRuntimeException(e);
        }
    }

    /**
     * Exception indicating an un-recoverable error during the handling of axiom strings.
     */
    public static class OwlStringException extends OWLRuntimeException {

        /**
         * @param cause cause
         */
        protected OwlStringException(Throwable cause) {
            super(cause);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy