if(featureMap.containsKey(cls))
return featureMap.get(cls);
// feature is the class itself by default
IClass parent = cls;
for(IClass p: cls.getDirectSuperClasses()){
if(SlideTutorOntologyHelper.isSystemClass(p))
continue;
// if direct super class is more general, then lets look further
// once in a blue moon, we have a direct superclass not being in general form, but its parent is
// Ex: Infectious_Cause -> Bacterial_Infectious_Cause -> Actinomycotic_Infectious_Cause
if(isFeature(p) && (isGeneralForm(p,cls,false) || isGeneralForm(getFeature(p),cls,false))){
// reset feature if it is equal to class or it is NOT preposition
if(parent.equals(cls) || isGeneralForm(p,cls,true))
parent = getFeature(p);
//break;
}
}