【问题标题】:Sesame 2.7 failed to recognise RDF LiteralSesame 2.7 无法识别 RDF Literal
【发布时间】:2013-05-14 02:49:06
【问题描述】:

我在使用 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 版)上运行良好。但是现在,更新后,芝麻 2.7 无法识别它,我不知道为什么。有人能猜出发生了什么吗?

谢谢!

【问题讨论】:

    标签: rdf semantic-web sesame rdfs rdfstore


    【解决方案1】:

    在旧版本的 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);
    

    【讨论】:

    • 你是对的!我可能误解了Literal的含义。我按照你说的做了,解决了我的问题。有趣的是,再次查看我系统的日志文件,老芝麻并没有给出警告。谢谢! =)
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 2013-08-14
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多