OpenRDF TurtleParser无法正确处理前缀
问题描述:
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装载空间,所以它很可能我错过了一些东西。
任何想法去哪里看?
答
问题是该龟文件中的语法错误。具体地,该片段:
:wn30
a lib:Namespace ;
lib:mnemonic "wn30" ;
lib:namespace wn30: .
标识符:wn30
是使用默认名称空间中的限定的名称(缺省情况下,因为它没有前缀,在建设工程于例如lib:mnemonic
)。但是,Turtle文档不包含默认名称空间的名称空间声明。
顺便说一句,您使用的是哪种版本的芝麻?我在最近的版本中对此进行了简短的测试,但它仍然给我一个错误,但是这个错误在寻找问题时有点帮助:“使用默认名称空间但未定义[第14行]”。
为了解决这个问题,该文件应包括默认命名空间的命名空间声明,e.g:
@prefix : <http://example.org/> .
谢谢Jeen。我使用2.5.0 - 是不是最新的? – espeed
是的,是的。不同之处在于解析器被调用的方式如下:如果您以编程方式(而不是通过工作台)使用解析器,我想您只是没有设置ParseErrorListener(它会给您更详细的错误信息) 。 –