package uk.ac.manchester.cs.jfact;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLObjectPropertyExpression;
import org.semanticweb.owlapi.reasoner.impl.DefaultNode;
import org.semanticweb.owlapi.reasoner.impl.DefaultNodeSet;
import org.semanticweb.owlapi.reasoner.impl.OWLObjectPropertyNode;
import org.semanticweb.owlapi.reasoner.impl.OWLObjectPropertyNodeSet;
import org.semanticweb.owlapi.vocab.OWLRDFVocabulary;
import uk.ac.manchester.cs.jfact.kernel.ExpressionManager;
import uk.ac.manchester.cs.jfact.kernel.dl.interfaces.ObjectRoleComplexExpression;
/** property expression translator */
public class ComplexObjectPropertyTranslator
extends
OWLEntityTranslator<OWLObjectPropertyExpression, ObjectRoleComplexExpression> {
private static final long serialVersionUID = 11000L;
/**
* @param em
* em
* @param df
* df
* @param tr
* tr
*/
public ComplexObjectPropertyTranslator(ExpressionManager em,
OWLDataFactory df, TranslationMachinery tr) {
super(em, df, tr);
}
@Override
protected ObjectRoleComplexExpression getTopEntityPointer() {
return em.objectRole(OWLRDFVocabulary.OWL_TOP_OBJECT_PROPERTY.getIRI());
}
@Override
protected ObjectRoleComplexExpression getBottomEntityPointer() {
return em.objectRole(OWLRDFVocabulary.OWL_BOTTOM_OBJECT_PROPERTY
.getIRI());
}
@Override
protected ObjectRoleComplexExpression registerNewEntity(
OWLObjectPropertyExpression entity) {
ObjectRoleComplexExpression pointer = createPointerForEntity(entity);
fillMaps(entity, pointer);
OWLObjectPropertyExpression inverseentity = entity.getInverseProperty()
.getSimplified();
fillMaps(inverseentity, createPointerForEntity(inverseentity));
return pointer;
}
@Override
protected ObjectRoleComplexExpression createPointerForEntity(
OWLObjectPropertyExpression entity) {
ObjectRoleComplexExpression p = em.objectRole(entity.getNamedProperty()
.getIRI());
return p;
}
@Override
protected OWLObjectProperty getTopEntity() {
return df.getOWLTopObjectProperty();
}
@Override
protected OWLObjectProperty getBottomEntity() {
return df.getOWLBottomObjectProperty();
}
@Override
protected DefaultNode<OWLObjectPropertyExpression> createDefaultNode() {
return new OWLObjectPropertyNode();
}
@Override
protected DefaultNodeSet<OWLObjectPropertyExpression>
createDefaultNodeSet() {
return new OWLObjectPropertyNodeSet();
}
}