2016-07-06 7 views
5

Protege 4.3.0에서 생성 된 온톨로지가 OWL 파일에 저장되어 있습니다. OWL API을 사용하여이 온톨로지를로드하려면 다음 코드 샘플을 사용합니다.UnloadableImportException : 가져온 온톨로지를로드 할 수 없습니다.

org.semanticweb : 나는이 수입을 사용할 수없는 경우, 하나 개 이상의 수입을 포함하는 온톨로지를로드하려고하면

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); 
    } 
} 

그러나, UnloadableImportException는 다음과 같은 예로서, 슬로우됩니다. owlapi.model.UnloadableImportException : 수입 온톨로지를로드 할 수 없습니다 : http://www.w3.org/2004/02/skos/core 원인 : 연결이이 문제를 해결하는 방법

시간 초과? 가져온 온톨로지를 오프라인에서 사용할 수 있다면 내 온톨로지를로드하는 중에이 온톨로지를 가져 오는 방법은 무엇입니까?

+0

구조적 추론자가 완전한 추론자가 아니라는 점에 유의하십시오. 적절한 추론이 필요하면 HermiT 나 Pellet과 같은 추론을 사용하십시오. – Ignazio

답변

3

AutoIRIMapper을 사용하여 로컬 온톨로지 복사본이있는 로컬 폴더를 가리킬 수 있습니다.

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

온톨로지를로드하기 전에 수행하십시오.

+0

owlapi v5 라이브러리의 경우 다음을 사용하십시오. manager.getIRIMappers(). add (mapper); – tremendows