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

uk.ac.manchester.cs.factplusplusad.OntologyBasedModularizer Maven / Gradle / Ivy

There is a newer version: 5.5.1
Show newest version
package uk.ac.manchester.cs.factplusplusad;

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

import java.util.Collection;
import java.util.stream.Stream;

import org.semanticweb.owlapi.atomicdecomposition.ModuleMethod;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapitools.decomposition.AxiomWrapper;

import uk.ac.manchester.cs.owlapi.modularity.ModuleType;

/** Ontology based modularizer. */
public class OntologyBasedModularizer {

    /** ontology to work with */
    OWLOntology ontology;
    /** pointer to a modularizer */
    Modularizer modularizer;

    /**
     * init c'tor
     * 
     * @param ontology
     *        ontology to modularise
     * @param moduleMethod
     *        modularisation method
     */
    public OntologyBasedModularizer(OWLOntology ontology, ModuleMethod moduleMethod) {
        this.ontology = ontology;
        modularizer = new Modularizer(moduleMethod);
        modularizer.preprocessOntology(asList(ontology.axioms().map(a -> new AxiomWrapper(a))));
    }

    /**
     * Get module.
     * 
     * @param from
     *        axioms to modularise
     * @param sig
     *        signature
     * @param type
     *        type of module
     * @return module
     */
    Collection getModule(Collection from, Signature sig, ModuleType type) {
        modularizer.extract(from, sig, type);
        return modularizer.getModule();
    }

    /**
     * Get module.
     * 
     * @param sig
     *        signature
     * @param type
     *        type of module
     * @return module
     */
    Collection getModule(Signature sig, ModuleType type) {
        return getModule(asList(ontology.axioms().map(a -> new AxiomWrapper(a))), sig, type);
    }

    /** @return the modularizer */
    Modularizer getModularizer() {
        return modularizer;
    }

    /**
     * @param entities
     *        signature
     * @param type
     *        modulet type
     * @return module
     */
    public Collection getModule(Stream entities, ModuleType type) {
        return asList(getModule(new Signature(entities), type).stream().map(AxiomWrapper::getAxiom).filter(
            a -> a != null));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy