code: @Override
      public void precomputeInferences(InferenceType... inferenceTypes)
              throws ReasonerInterruptedException, TimeOutException,
              InconsistentOntologyException {
          for (InferenceType inferenceType : inferenceTypes) {
              if (inferenceType.equals(InferenceType.CLASS_HIERARCHY)) {
                  classify();
              }
          }
      }
docs: Asks the reasoner to precompute certain types of inferences. Note that it
  is NOT necessary to call this method before asking any other queries -
  the reasoner will answer all queries correctly regardless of whether
  inferences are precomputed or not. For example, if the imports closure of
  the root ontology entails <code>SubClassOf(A B)</code> then the result of
  <code>getSubClasses(B)</code> will contain <code>A</code>, regardless of
  whether
  <code>precomputeInferences({@link InferenceType#CLASS_HIERARCHY})</code>
  has been called.
  <p>
  If the reasoner does not support the precomputation of a particular type
  of inference then it will silently ignore the request.
  
  @param inferenceTypes
  Suggests a list of the types of inferences that should be
  precomputed. If the list is empty then the reasoner will
  determine which types of inferences are precomputed. Note that
  the order of the list is unimportant - the reasoner will
  determine the order in which inferences are computed.
  @throws InconsistentOntologyException
  if the imports closure of the root ontology is inconsistent
  @throws ReasonerInterruptedException
  if the reasoning process was interrupted for any particular
  reason (for example if reasoning was cancelled by a client
  process)
  @throws TimeOutException
  if the reasoner timed out during a basic reasoning operation.
  See {@link #getTimeOut()}.