2

我在使用 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>

当我将它提交给 Sesame 时,出现以下错误:

“测试”未被识别,也无法验证,数据类型为http://www.w3.org/2000/01/rdf-schema#Literal

它与以前的 Sesame 版本(版本 2.6.9)一起工作得很好。但是现在,更新后,芝麻 2.7 无法识别它,我不知道为什么。有人能猜出发生了什么吗?

谢谢!

4

1 回答 1

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);
于 2013-05-14T06:57:01.943 回答