/**
   * Returns <code>true</code> if the ontology obtained by parsing the URI is in OWL Full. Will
   * report findings to the reporter as it goes. Note that the inner workings of the validator
   * assume that the ontology has <strong>not</strong> already been parsed.
   *
   * @param uri an <code>URI</code> value
   * @return a <code>boolean</code> value
   */
  public boolean isOWLFull(URI uri) {
    /*
     * An ontology is OWL Full if:
     *
     * 1) There are OWL Full constructs used in the syntax, e.g. things have
     * not been explicitly typed
     *
     * or
     *
     * 2) The expressivity is Full.
     *
     */

    boolean result = false;
    try {
      /* Handler that doesn't care about OWLFullExceptions */
      syntaxLevel = LITE;
      OWLRDFErrorHandler handler =
          new OWLRDFErrorHandler() {
            public void owlFullConstruct(int code, String message) throws SAXException {
              /*
               * We know that there's some syntactic Full stuff going on,
               * but we don't necessarily want to throw an exception as
               * there may be stuff that comes up later that pushed us out
               * of Full, e.g. malformed RDF.
               */
              setSyntaxLevel(FULL);
              explain(FULL, code, message);
            }

            public void error(String message) throws SAXException {
              throw new SAXException(message);
            }

            public void warning(String message) throws SAXException {
              message(message.toString());
            }

            public void owlFullConstruct(int code, String message, Object obj) throws SAXException {
              // TODO Auto-generated method stub

            }
          };
      OWLOntology o = parseFromURI(handler, uri);
      int species = species(o, true) | syntaxLevel;
      result = (species == DL || species == LITE || species == FULL);
      // releaseOntology( o );
    } catch (ParserException ex) {
      explain(OTHER, UNKNOWN, ex.getMessage());
    } catch (OWLException ex) {
      explain(OTHER, UNKNOWN, ex.getMessage());
    }
    return result;
  }
  /**
   * Returns <code>true</code> if the ontology obtained by parsing the URI is in OWL DL. Will report
   * findings to the reporter as it goes. Note that the inner workings of the validator assume that
   * the ontology has <strong>not</strong> already been parsed.
   *
   * @param uri an <code>URI</code> value
   * @return a <code>boolean</code> value
   */
  public boolean isOWLDL(URI uri) {
    boolean result = false;
    try {
      /* Handler that's strict about OWLFullExceptions */
      syntaxLevel = LITE;
      OWLRDFErrorHandler handler =
          new OWLRDFErrorHandler() {
            public void owlFullConstruct(int code, String message) throws SAXException {
              /* Doesn't throw an error, but keeps going.... */
              setSyntaxLevel(FULL);
              explain(FULL, code, message);
              // throw new OWLFullConstructRDFException( message );
            }

            public void error(String message) throws SAXException {
              throw new SAXException(message.toString());
            }

            public void warning(String message) throws SAXException {
              message(message.toString());
            }

            public void owlFullConstruct(int code, String message, Object obj) throws SAXException {
              // TODO Auto-generated method stub

            }
          };
      OWLOntology o = parseFromURI(handler, uri);
      int species = species(o, true) | syntaxLevel;
      result = (species == DL || species == LITE);
      // releaseOntology( o );
    } catch (ParserException ex) {
      explain(OTHER, UNKNOWN, ex.getMessage());
    } catch (OWLException ex) {
      explain(OTHER, UNKNOWN, ex.getMessage());
    }
    return result;
  }