Package edu.stanford.bmir.protege.web.server

Source Code of edu.stanford.bmir.protege.web.server.OntologyChangeSubjectProvider$ChangeSubjectProvider

package edu.stanford.bmir.protege.web.server;

import edu.stanford.bmir.protege.web.shared.HasGetChangeSubjects;
import edu.stanford.bmir.protege.web.shared.HasGetEntitiesWithIRI;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.util.AxiomSubjectProvider;

import java.util.Collections;
import java.util.Set;

/**
* @author Matthew Horridge,
*         Stanford University,
*         Bio-Medical Informatics Research Group
*         Date: 18/02/2014
*/
public class OntologyChangeSubjectProvider implements HasGetChangeSubjects {

    private ChangeSubjectProvider changeSubjectProvider;

    public OntologyChangeSubjectProvider(HasGetEntitiesWithIRI entitiesWithIRI) {
        this.changeSubjectProvider = new ChangeSubjectProvider(new AxiomEntitySubjectProvider(entitiesWithIRI));
    }

    @Override
    public Set<OWLEntity> getChangeSubjects(OWLOntologyChange change) {
        return change.accept(changeSubjectProvider);
    }



    private static class ChangeSubjectProvider implements OWLOntologyChangeVisitorEx<Set<OWLEntity>> {

        private AxiomEntitySubjectProvider subjectProvider;

        private ChangeSubjectProvider(AxiomEntitySubjectProvider subjectProvider) {
            this.subjectProvider = subjectProvider;
        }

        @Override
        public Set<OWLEntity> visit(AddAxiom addAxiom) {
            return subjectProvider.getSubject(addAxiom.getAxiom());
        }

        @Override
        public Set<OWLEntity> visit(RemoveAxiom removeAxiom) {
            return subjectProvider.getSubject(removeAxiom.getAxiom());
        }

        @Override
        public Set<OWLEntity> visit(SetOntologyID setOntologyID) {
            return Collections.emptySet();
        }

        @Override
        public Set<OWLEntity> visit(AddImport addImport) {
            return Collections.emptySet();
        }

        @Override
        public Set<OWLEntity> visit(RemoveImport removeImport) {
            return Collections.emptySet();
        }

        @Override
        public Set<OWLEntity> visit(AddOntologyAnnotation addOntologyAnnotation) {
            return Collections.emptySet();
        }

        @Override
        public Set<OWLEntity> visit(RemoveOntologyAnnotation removeOntologyAnnotation) {
            return Collections.emptySet();
        }
    }


    private static class AxiomEntitySubjectProvider {

        private HasGetEntitiesWithIRI hasGetEntitiesWithIRI;

        private AxiomEntitySubjectProvider(HasGetEntitiesWithIRI hasGetEntitiesWithIRI) {
            this.hasGetEntitiesWithIRI = hasGetEntitiesWithIRI;
        }

        public Set<OWLEntity> getSubject(OWLAxiom axiom) {
            OWLObject subject = new AxiomSubjectProvider().getSubject(axiom);
            if(subject instanceof OWLEntity) {
                return Collections.singleton((OWLEntity) subject);
            }
            else if(subject instanceof IRI) {
                return hasGetEntitiesWithIRI.getEntitiesWithIRI((IRI) subject);
            }
            else {
                return Collections.emptySet();
            }
        }
    }

}
TOP

Related Classes of edu.stanford.bmir.protege.web.server.OntologyChangeSubjectProvider$ChangeSubjectProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.