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

edu.stanford.protege.webprotege.place.OWLEntityItemParser Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.place;

import org.semanticweb.owlapi.model.*;

import java.util.Optional;

/**
 * @author Matthew Horridge, Stanford University, Bio-Medical Informatics Research Group, Date: 19/05/2014
 */
public abstract class OWLEntityItemParser implements ItemTokenParser.ItemParser {

    public static final String IRI_START = "<";

    public static final String IRI_END = ">";

    private final EntityType entityType;

    private final PrefixManager pm;

    private final OWLDataFactory dataFactory;

    public OWLEntityItemParser(EntityType entityType, OWLDataFactory dataFactory, PrefixManager pm) {
        this.entityType = entityType;
        this.dataFactory = dataFactory;
        this.pm = pm;
    }

    public Optional parseItem(String content) {
        final Optional iri = parseIRI(content);
        if(!iri.isPresent()) {
            return Optional.empty();
        }
        E entity = dataFactory.getOWLEntity(entityType, iri.get());
        return Optional.of(createItem(entity));
    }

    private Optional parseIRI(String iri) {
        Optional result;
        if (iri.startsWith(IRI_START) && iri.endsWith(IRI_END)) {
            result = getIRIFromQuotedIRI(iri);
        } else {
            result = getIRIFromPrefixIRI(iri);
        }
        return result;
    }

    private Optional getIRIFromPrefixIRI(String content) {
        int colonIndex = content.indexOf(":");
        if (colonIndex == -1) {
            return Optional.empty();
        }
        String prefixName = content.substring(0, colonIndex + 1);
        if (!pm.containsPrefixMapping(prefixName)) {
            return Optional.empty();
        }
        IRI iri = pm.getIRI(content);
        return Optional.of(iri);
    }

    private Optional getIRIFromQuotedIRI(String quotedIRI) {
        return Optional.of(IRI.create(quotedIRI.substring(1, quotedIRI.length() - 1)));
    }

    protected abstract Item createItem(E entity);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy