2015-09-09 71 views
1

我有一個使用Protegé4.3.0創建的本體,並且我將使用OWL-API將一些OWLNamedIndividual對象添加到文件OWL。我用下面的指令,以創建一個新OWLNamedIndividual從文件名生成獨特的IRI

OWLNamedIndividual objSample = df.getOWLNamedIndividual(IRI.create(iri + "#" + id)); 
  • 變量idString;
  • iri是加載本體的基礎IRI;爲了獲得本體的基本IRI,我使用了以下指令:iri = ontology.getOntologyID().getOntologyIRI()

因此,新的OWLNamedIndividual被添加到加載的本體,然後使用以下指令將本體保存到OWL文件。

XMLWriterPreferences.getInstance().setUseNamespaceEntities(true); 
OWLOntologyFormat format = manager.getOntologyFormat(ontology); 
manager.saveOntology(ontology, format, IRI.create(file.toURI())); 

可變id是從一個文件的基本名稱生成的String(即不帶擴展名的文件名)。如果文件的基本名稱在名稱中包含一個或多個空格,則本體保存時不會出現任何錯誤,但是當我打開新保存的OWL文件時,Protegé會在第一次出現含IRI空間時報告解析錯誤。

如何使用加載的本體的基本IRI和文件的基本名稱爲OWLNamedIndividual對象創建有效的IRI?

+0

你這是什麼。意思是基本名稱有一個或多個空格嗎?可以提供示例嗎? – Artemis

+0

是的,字符串'id'有一個或多個空格。 – enzom83

+0

當然,namespac中不能有空格這是規則。你可以將它們作爲標籤,但不能放在'iri'中。 – Artemis

回答

4

IRI被認爲是代表您的資源的塊。如果我正確地理解了你,你有一個ID如大船,你正在創建看起來像<http://example.com#big boat>的IRIs。這不是一個有效的IRI,並且您需要用_-替換空間,以便您擁有<http://example.com#big_boat>。即使您在Protégé中輸入具有空格的建模元素名稱,它也會自動將_置於中間。

查看IRI中無效字符的this article

系統接受的IRI也可能處理那些不URI中允許 US-ASCII的可打印字符,即 「<」, 「>」,「',空間, 」{「,」} 」,‘|’,‘\’,‘^’,和‘`’,在上面步驟2如果發現這些 的字符,但不轉換,那麼轉換 應該失敗