2013-07-12 83 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")); 

打造進口報關,並添加IRIMapperOWLOntologyManager加載本體時解決它:

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

我認爲'OWLImportsDeclaration'也應該更新,因爲'getFactory()'似乎已被棄用 – Edi