2016-07-06 19 views
5

Ho un'ontologia creata in Protege 4.3.0 e memorizzata in un file OWL. Per caricare questa ontologia utilizzando OWL API, utilizzo il seguente codice di esempio.UnloadableImportException: Impossibile caricare ontologia importata

public class MySampleClass { 
    private final OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
    private final OWLDataFactory df = manager.getOWLDataFactory(); 

    private final OWLReasonerFactory rf = new StructuralReasonerFactory(); 

    private final OWLOntology ontology; 
    private final OWLOntologyID id; 
    private final IRI iri; 
    private final PrefixManager pm; 

    private final OWLReasoner reasoner; 

    /** 
    * 
    * @param file 
    */ 
    public MySampleClass(File file) { 
     try { 
      ontology = manager.loadOntologyFromOntologyDocument(file); 
     } catch (OWLOntologyInputSourceException | OWLOntologyCreationException ex) { 
      // throw custom exception 
     } 

     id = ontology.getOntologyID(); 
     iri = id.getOntologyIRI(); 

     pm = new DefaultPrefixManager(iri.toString().concat("#")); 

     reasoner = rf.createReasoner(ontology); 
     reasoner.precomputeInferences(InferenceType.OBJECT_PROPERTY_ASSERTIONS); 
    } 
} 

Tuttavia, se provo a caricare un'ontologia che include uno o più importazioni, se tali importazioni non sono disponibili, un UnloadableImportException è gettato, come il seguente esempio:

org.semanticweb. owlapi.model.UnloadableImportException: Impossibile caricare ontologia importati: http://www.w3.org/2004/02/skos/core Causa: connessione scaduta

Come risolvere questo problema? Se l'ontologia importata è disponibile offline, come importare questa ontologia durante il caricamento della mia ontologia?

+0

Si noti che il ragionatore strutturale non è un ragionatore completo. Se hai bisogno di un adeguato ragionamento, usa un ragionatore come Hermit o Pellet. – Ignazio

risposta

3

È possibile utilizzare AutoIRIMapper per puntare a una cartella locale contenente copie locali di ontologie.

AutoIRIMapper mapper=new AutoIRIMapper(folder, true); 
manager.addIRIMapper(mapper); 

Procedere prima di iniziare a caricare ontologie.

+0

Per la libreria owlapi v5, utilizzare: manager.getIRIMappers(). Add (mapper); – tremendows

Problemi correlati