如何获取Jena RDF模型中使用的所有命名空间

时间:2013-03-21 17:01:16

标签: namespaces rdf jena turtle-rdf

我正在使用com.hp.hpl.jena.rdf.model.Model.listNameSpaces()来获取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());
}

1 个答案:

答案 0 :(得分:5)

API documentation for that method说:

  

返回的名称空间是(a)用作模型中的属性的每个URI,以及(b)作为rdf:type语句的对象出现的每个URI的名称空间。

由于dbpedia:Nikonxsd:decimal分别用作Literal的对象和类型,因此该方法不会返回命名空间。

文档还说明:

  

(您可能不希望使用此方法;您更可能需要Model支持的PrefixMapping方法。)

记录在案here