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

org.coode.oppl.AnnotationBasedSymbolTableFactory Maven / Gradle / Ivy

There is a newer version: 5.0.0
Show newest version
package org.coode.oppl;

import static org.coode.oppl.utils.ArgCheck.checkNotNull;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.coode.parsers.BidirectionalShortFormProviderAdapter;
import org.coode.parsers.DisposableOWLEntityChecker;
import org.coode.parsers.DisposableShortFormEntityChecker;
import org.coode.parsers.EntityFinder;
import org.coode.parsers.EntityFinderImpl;
import org.coode.parsers.OWLEntityRenderingCacheImpl;
import org.coode.parsers.ShortFormEntityRenderer;
import org.coode.parsers.factory.SymbolTableFactory;
import org.coode.parsers.oppl.OPPLScope;
import org.coode.parsers.oppl.OPPLSymbolTable;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAnnotationProperty;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.util.AnnotationValueShortFormProvider;
import org.semanticweb.owlapi.util.ShortFormProvider;

/** SimbleTable factory that builds symbol tables based on the short form
 * provided by annotations rather than IRI fragments.
 * 
 * @author Luigi Iannone */
public class AnnotationBasedSymbolTableFactory implements
        SymbolTableFactory {
    private final OWLOntologyManager manager;
    private final List annotations = new ArrayList();

    /** @param manager
     *            manager
     * @param iris
     *            iris */
    public AnnotationBasedSymbolTableFactory(OWLOntologyManager manager,
            List iris) {
        this.manager = checkNotNull(manager, "The ontology manager");
        OWLDataFactory dataFactory = this.manager.getOWLDataFactory();
        for (IRI iri : checkNotNull(iris, "The iri list")) {
            annotations.add(dataFactory.getOWLAnnotationProperty(iri));
        }
    }

    @Override
    public OPPLSymbolTable createSymbolTable() {
        ShortFormProvider baseShortFormProvider = new AnnotationValueShortFormProvider(
                annotations,
                Collections.> emptyMap(), manager);
        BidirectionalShortFormProviderAdapter shortFormProvider = new BidirectionalShortFormProviderAdapter(
                manager, manager.getOntologies(), baseShortFormProvider);
        DisposableOWLEntityChecker entityChecker = new DisposableShortFormEntityChecker(
                shortFormProvider);
        ShortFormEntityRenderer entityRenderer = new ShortFormEntityRenderer(
                baseShortFormProvider);
        EntityFinder entityFinder = new EntityFinderImpl(manager,
                new OWLEntityRenderingCacheImpl(manager, entityRenderer), false);
        return new OPPLSymbolTable(new OPPLScope(entityChecker, entityFinder,
                entityRenderer), manager.getOWLDataFactory());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy