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

Source Code of edu.stanford.bmir.protege.web.server.render.ObjectPropertyCharacteristicsSectionRenderer

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

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntax;
import org.semanticweb.owlapi.model.*;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* @author Matthew Horridge, Stanford University, Bio-Medical Informatics Research Group, Date: 24/02/2014
*/
public class ObjectPropertyCharacteristicsSectionRenderer extends AbstractOWLAxiomItemSectionRenderer<OWLObjectProperty, OWLObjectPropertyCharacteristicAxiom, String> {

    private static Map<AxiomType<?>, ManchesterOWLSyntax> keywordMap = Maps.newHashMap();

    static {
        keywordMap.put(AxiomType.FUNCTIONAL_OBJECT_PROPERTY, ManchesterOWLSyntax.FUNCTIONAL);
        keywordMap.put(AxiomType.INVERSE_FUNCTIONAL_OBJECT_PROPERTY, ManchesterOWLSyntax.INVERSE_FUNCTIONAL);
        keywordMap.put(AxiomType.SYMMETRIC_OBJECT_PROPERTY, ManchesterOWLSyntax.SYMMETRIC);
        keywordMap.put(AxiomType.ASYMMETRIC_OBJECT_PROPERTY, ManchesterOWLSyntax.ASYMMETRIC);
        keywordMap.put(AxiomType.REFLEXIVE_OBJECT_PROPERTY, ManchesterOWLSyntax.REFLEXIVE);
        keywordMap.put(AxiomType.IRREFLEXIVE_OBJECT_PROPERTY, ManchesterOWLSyntax.IRREFLEXIVE);
        keywordMap.put(AxiomType.TRANSITIVE_OBJECT_PROPERTY, ManchesterOWLSyntax.TRANSITIVE);
    }

    @Override
    public ManchesterOWLSyntax getSection() {
        return ManchesterOWLSyntax.CHARACTERISTICS;
    }

    @Override
    protected Set<OWLObjectPropertyCharacteristicAxiom> getAxiomsInOntology(OWLObjectProperty subject, OWLOntology ontology) {
        Set<OWLObjectPropertyCharacteristicAxiom> result = Sets.newHashSet();
        result.addAll(ontology.getFunctionalObjectPropertyAxioms(subject));
        result.addAll(ontology.getInverseFunctionalObjectPropertyAxioms(subject));
        result.addAll(ontology.getSymmetricObjectPropertyAxioms(subject));
        result.addAll(ontology.getAsymmetricObjectPropertyAxioms(subject));
        result.addAll(ontology.getReflexiveObjectPropertyAxioms(subject));
        result.addAll(ontology.getIrreflexiveObjectPropertyAxioms(subject));
        result.addAll(ontology.getTransitiveObjectPropertyAxioms(subject));
       return result;
    }

    @Override
    public List<String> getRenderablesForItem(OWLObjectProperty subject,
                                              OWLObjectPropertyCharacteristicAxiom item,
                                              OWLOntology ontology) {
        ManchesterOWLSyntax kw = keywordMap.get(item.getAxiomType());
        if(kw != null) {
            return Lists.newArrayList(kw.keyword());
        }
        else {
            throw new RuntimeException("Missing axiom type rendering " + item.getAxiomType());
        }
    }
}
TOP

Related Classes of edu.stanford.bmir.protege.web.server.render.ObjectPropertyCharacteristicsSectionRenderer

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.