2013-03-21 45 views
2

我正在使用com.hp.hpl.jena.rdf.model.Model.listNameSpaces()來獲取Jena RDF模型中的命名空間。如何獲取Jena中使用的所有命名空間RDF模型

但我注意到模型可以包含名稱空間沒有列出listNameSpaces方法的語句對象。

例如,攝像頭圖(http://www-users.cs.york.ac.uk/~jc/teaching/arin/camera.owl.turtle)包含以下對象,但他們的命名空間不會出現在命名空間列表:

http://www.dbpedia.org/resource/尼康 http://www.w3.org/2001/XMLSchema#小數

有誰知道爲什麼這兩個NS會不被列出?謝謝。

//冷凝代碼:

Model model = ModelFactory.createDefaultModel(); 
RDFReader reader = model.getReader("TURTLE"); 
InputStream in = FileManager.get().open("http://www-users.cs.york.ac.uk/~jc/teaching/arin/camera.owl.turtle"); 
reader.read(model, in, null); 

NsIterator listNameSpaces = model.listNameSpaces(); 
while (listNameSpaces.hasNext()) 
{ 
    System.out.println("Namespace from iterator: " + listNameSpaces.next()); 
} 

回答

5

API documentation for that method說:

返回的命名空間是那些(a)的每一個URI用作模型和屬性(b)中的那些每個顯示爲rdf:type語句對象的URI。

由於dbpedia:Nikonxsd:decimal被用作文字,分別,該方法不返回的命名空間的對象和類型。

該文檔也狀態:

(你可能不希望這種方法,你就越有可能想要的模型支持PrefixMapping方法)

,他們的文檔here

+0

Thanks @Ben。 model.getNsPrefixMap()提供NS。 – 2013-03-21 19:08:26