public boolean canLoad(OWLOntologyDocumentSource documentSource) {
   if (documentSource.isReaderAvailable()) {
     return true;
   }
   if (documentSource.isInputStreamAvailable()) {
     return true;
   }
   if (parsableSchemes.contains(documentSource.getDocumentIRI().getScheme())) {
     return true;
   }
   // If we can open an input stream then we can attempt to parse the ontology
   // TODO: Take into consideration the request type!
   try {
     InputStream is = documentSource.getDocumentIRI().toURI().toURL().openStream();
     is.close();
     return true;
   } catch (UnknownHostException e) {
     logger.info("Unknown host: " + e.getMessage());
   } catch (MalformedURLException e) {
     logger.info("Malformed URL: " + e.getMessage());
   } catch (FileNotFoundException e) {
     logger.info("File not found: " + e.getMessage());
   } catch (IOException e) {
     logger.info("IO Exception: " + e.getMessage());
   }
   return false;
 }
 @Override
 public OWLOntologyFormat parse(
     OWLOntologyDocumentSource documentSource,
     OWLOntology ontology,
     OWLOntologyLoaderConfiguration configuration)
     throws OWLParserException, IOException, OWLOntologyChangeException,
         UnloadableImportException {
   Reader reader = null;
   InputStream is = null;
   try {
     OWLFunctionalSyntaxParser parser;
     if (documentSource.isReaderAvailable()) {
       reader = documentSource.getReader();
       parser = new OWLFunctionalSyntaxParser(reader);
     } else if (documentSource.isInputStreamAvailable()) {
       is = documentSource.getInputStream();
       parser = new OWLFunctionalSyntaxParser(is);
     } else {
       is = getInputStream(documentSource.getDocumentIRI(), configuration);
       parser = new OWLFunctionalSyntaxParser(is);
     }
     parser.setUp(ontology, configuration);
     return parser.parse();
   } catch (ParseException e) {
     throw new OWLParserException(
         e.getMessage(), e, e.currentToken.beginLine, e.currentToken.beginColumn);
   } finally {
     if (is != null) {
       is.close();
     } else if (reader != null) {
       reader.close();
     }
   }
 }
 @Test
 public void shouldTestInterfaceOWLOntologyDocumentSource() throws Exception {
   OWLOntologyDocumentSource testSubject0 = mock(OWLOntologyDocumentSource.class);
   InputStream result0 = testSubject0.getInputStream();
   boolean result1 = testSubject0.isReaderAvailable();
   Reader result2 = testSubject0.getReader();
   boolean result3 = testSubject0.isInputStreamAvailable();
   IRI result4 = testSubject0.getDocumentIRI();
 }