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

org.protege.editor.owl.ui.action.ConvertMinOneToSomeValuesFromAction Maven / Gradle / Ivy

package org.protege.editor.owl.ui.action;

import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.util.OWLObjectDuplicator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

/**
 * Author: Nick Drummond
* The University Of Manchester
* BioHealth Informatics Group
* Date: May 19, 2008 */ public class ConvertMinOneToSomeValuesFromAction extends ProtegeOWLAction { Logger logger = LoggerFactory.getLogger(ConvertMinOneToSomeValuesFromAction.class); public void actionPerformed(ActionEvent actionEvent) { MinCardiOneReplacer replacer = new MinCardiOneReplacer(getOWLModelManager().getOWLDataFactory()); List changes = new ArrayList<>(); int count = 0; for (OWLOntology ont : getOWLModelManager().getActiveOntologies()){ for (OWLAxiom ax : ont.getAxioms()){ if (ax.isLogicalAxiom()){ // duplicates, but switching min 1 with svf OWLAxiom ax2 = replacer.duplicateObject(ax); // so if they are different, the axiom using the svf // needs to replace the axiom using the min 1 in the ontology if (!ax.equals(ax2)){ changes.add(new RemoveAxiom(ont, ax)); changes.add(new AddAxiom(ont, ax2)); count++; } } } } getOWLModelManager().applyChanges(changes); logger.info("Converted " + count + " qualified min 1 restrictions to someValuesFrom restrictions"); } public void initialise() throws Exception { // do nothing } public void dispose() throws Exception { // do nothing } /** * A variant of the duplicator that changes qualified MinCardi1 * restrictions into someValueFrom restrictions */ class MinCardiOneReplacer extends OWLObjectDuplicator{ public MinCardiOneReplacer(OWLDataFactory owlDataFactory) { super(owlDataFactory); } public void visit(OWLObjectMinCardinality min) { if (min.getCardinality() == 1 && min.isQualified()){ OWLObjectSomeValuesFrom someValuesFrom = getOWLDataFactory().getOWLObjectSomeValuesFrom(min.getProperty(), min.getFiller()); visit(someValuesFrom); } else{ super.visit(min); } } public void visit(OWLDataMinCardinality min) { if (min.getCardinality() == 1 && min.isQualified()){ OWLDataSomeValuesFrom someValuesFrom = getOWLDataFactory().getOWLDataSomeValuesFrom(min.getProperty(), min.getFiller()); visit(someValuesFrom); } else{ super.visit(min); } } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy