2013-07-12 3 views
2

OWL API를 사용하고 있으며 온톨로지가 있습니다. 필자는 OWL 파일을 로컬에서 선택한 다음 가져 오기와 같은 방식으로 다른 온톨로지를 가져 오려고합니다. 가능한이는 OWL의 API 나 가져 오기 선언을 사용하고OWL API를 사용하여 온톨로지 가져 오기

,

OWLImportsDeclaration importDeclaraton = ontology.getFactory().getOWLImportsDeclaration(IRI.create("/home/noor/Dropbox/TaggingCaseStudy/Programs/TextBasedMA/files/ontologies/OBMA2/photo1.owl")); 

하지만 오류를 받고 있어요, 그것은 로컬 파일를 참가 함께

Caused by: java.io.FileNotFoundException: http://semanticweb.org/home/noor/Dropbox/TaggingCaseStudy/Programs/TextBasedMA/files/ontologies/OBMA2/photo1.owl 

답변

2

귀하 IRI는 절대적인 것이 아니라 상대적입니다. 파일을 찾으려면 file:으로 시작해야합니다. 로딩 할 때 상대 IRI가 기본 IRI에 대해 해결되며,이 경우 오류에서 볼 수있는 URL이 작성됩니다. IRI를 절대적으로 만들거나 가져 오기에서 실제 온톨로지 IRI를 사용하고 IRIMapper을 사용하여 파일을 가리키는 방법으로 간접 참조를 사용하십시오. 온톨로지는 http://example.com/myontology의 IRI가있는 경우

예, 수입 선언을 만들

OWLImportsDeclaration importDeclaraton = ontology.getFactory().getOWLImportsDeclaration(IRI.create("http://example.com/myontology")); 

을 사용하고, 온톨로지로드 할 때 그것을 해결하기 위해 OWLOntologyManagerIRIMapper을 추가

manager.addIRIMapper(new SimpleIRIMapper(IRI.create("http://example.com/myontology"), 
     IRI.create("file:///actual/path/to/file.owl")); 

편집 : OWLAPI 4의 경우 다음과 같습니다.

manager.getIRIMappers().add(new SimpleIRIMapper(IRI.create("http://example.com/myontology"), 
      IRI.create("file:///actual/path/to/file.owl")); 

Javadoc은 GitHub 페이지에서 찾을 수 있습니다.

+0

현재 OWL API 업데이트에서 유효합니까? @Ignazio – Edi

+0

그래, 방금 예제를 업데이트했습니다. – Ignazio

+0

'getFactory()'가 더 이상 사용되지 않기 때문에'OWLImportsDeclaration'도 업데이트해야한다고 생각합니다. – Edi