2011-08-30 50 views
2

Wordnet 3.0(http://semanticweb.cs.vu.nl/lod/wn30/)采用Turtle格式,我无法通过org.openrdf.rio.turtle.TurtleParser来解析Manifest.ttl文件(https://gist.github.com/1181802)。OpenRDF TurtleParser无法正确处理前缀

它看起来像解析器没有处理正确的前缀 - 显然它认为他们是空:

org.openrdf.rio.RDFParseException: org.openrdf.rio.RDFParseException: 
Not a valid (absolute) URI: nullwn30 [line 15] 

我之前从来没有涉足到RDF装载空间,所以它很可能我错过了一些东西。

任何想法去哪里看?

回答

4

问题是该龟文件中的语法错误。具体地,该片段:

:wn30 
    a lib:Namespace ; 
    lib:mnemonic "wn30" ; 
    lib:namespace wn30: . 

标识符:wn30是使用默认名称空间中的限定的名称(缺省情况下,因为它没有前缀,在建设工程于例如lib:mnemonic)。但是,Turtle文档不包含默认名称空间的名称空间声明。

顺便说一句,您使用的是哪种版本的芝麻?我在最近的版本中对此进行了简短的测试,但它仍然给我一个错误,但是这个错误在寻找问题时有点帮助:“使用默认名称空间但未定义[第14行]”。

为了解决这个问题,该文件应包括默认命名空间的命名空间声明,e.g:

@prefix : <http://example.org/> . 
+0

谢谢Jeen。我使用2.5.0 - 是不是最新的? – espeed

+0

是的,是的。不同之处在于解析器被调用的方式如下:如果您以编程方式(而不是通过工作台)使用解析器,我想您只是没有设置ParseErrorListener(它会给您更详细的错误信息) 。 –