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