public static List<OWLCLassToRender> getSubClassesToRender(String expression, boolean directOnly) throws ParserException {

	OWLClassExpression classExpression = parseClassExpression(expression);
	Set<OWLClass> subClasses = null;

	if(!knowsNamedClass(expression)){
	    OWLClass anonymousClass = getTemporaryAnonymousClass(classExpression);
	    subClasses = reasoner.getSubClasses(anonymousClass, directOnly).getFlattened();
	    removeTemporaryAnonymousClass(anonymousClass);
	}else{
	    subClasses = reasoner.getSubClasses(classExpression, directOnly).getFlattened();
	}

	List<OWLCLassToRender> subClassesToRender = new ArrayList<OWLCLassToRender>();
	for (OWLEntity subclass : subClasses) {
	    OWLCLassToRender classToRender = new OWLCLassToRender();
	    if(!isTopEntity(subclass)){
		classToRender.logo = getLogo(shortFormProvider.getShortForm(subclass));
		classToRender.name = shortFormProvider.getShortForm(subclass);
		classToRender.label = getLabel(classToRender.name);
		subClassesToRender.add(classToRender);
	    }
	}

	return sort(subClassesToRender);
    }