我在使用Sesame 2.7时遇到了麻烦。假设我有以下RDF文档:
<rdf:RDF xmlns:arq="http://example.com/vocab.rdf#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<arq:Photo rdf:about="http://example.com/photo_2230.rdf">
<arq:photoName rdf:datatype="http://www.w3.org/2000/01/rdf-schema#Literal">Testing</arq:photoName>
<!-- More properties -->
...
</arq:Photo>
当我将其提交给芝麻时,会出现以下错误:
'测试'无法识别,无法通过数据类型http://www.w3.org/2000/01/rdf-schema#Literal
进行验证
以前的Sesame版本(版本2.6.9)运行良好。但是现在,在更新之后,Sesame 2.7无法识别它,我找不到原因。有人可以猜测发生了什么吗?
谢谢!
答案 0 :(得分:2)
在旧版本的Sesame中,解析器在遇到无法识别的数据类型时仅发出警告。在Sesame 2.7中,默认情况下,解析器实际上会因错误而停止(尽管我们正考虑在下次更新时再次放松一下)。因此,即使在较旧版本的Sesame中,也无法识别,当您尝试加载此数据时,您会在日志中看到警告。
这是一个无法识别的数据类型的原因是“http://www.w3.org/2000/01/rdf-schema#Literal”根本不是数据类型标识符。相反,它是文字类的标识符(所以完全不同)。您应该从RDF中删除此数据类型,因为它是对数据类型机制的错误用法。
要拼写出来,请更改此行:
<arq:photoName rdf:datatype="http://www.w3.org/2000/01/rdf-schema#Literal">Testing</arq:photoName>
为:
<arq:photoName>Testing</arq:photoName>
除了修复数据之外,您当然还可以将Sesame的解析器配置为无法在无效数据类型上立即失败。以编程方式,通过调整连接的解析器中使用的ParserConfig
可以轻松完成此操作。
RepositoryConnection conn; // your repository connection
// set the parser used in the connection to report datatype
// verification errors but not fail on them.
conn.getParserConfig().addNonFatalError(BasicParserSettings.VERIFY_DATATYPE_VALUES);