SessionLimitException {
/*
* Throw the duplicate ID exception first, in case developers decide to reuse the existing session
* before creating a new one.
*/
if (sessionsByID.containsKey(sessionID)) throw new DuplicateSessionIDException(sessionID.toString());
checkSessionLimit();
IRI ns = IRI.create(getNamespace() + getID() + "/");
Session session = new SessionImpl(sessionID, ns, ontologyProvider);
addSession(session);
fireSessionCreated(session);