2

我正在使用 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());
}
4

1 回答 1

5

方法的 API 文档说:

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

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

文档还指出:

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

它们被记录在这里

于 2013-03-21T18:36:38.723 回答