freebase RDF转储的Jena解析问题(2014年1月)

freebase RDF转储的Jena解析问题(2014年1月),rdf,jena,semantic-web,freebase,Rdf,Jena,Semantic Web,Freebase,我正在尝试使用Jena解析freebase转储文件freebase-rdf-2014-01-12-00-00.gz(25GB)。 Jena报告了许多关于不良数据的问题。 示例-150.0无效,true和false值无效 我通过在转储文件中的十进制和true/false周围添加双引号解决了这些问题。 但是,Jena仍在报告问题(当前-org.apache.Jena.riot.RiotException:[行:161083,列:110]非法对象:[减]) 有没有办法对这些数据进行预处理,这样我就不必

我正在尝试使用Jena解析freebase转储文件freebase-rdf-2014-01-12-00-00.gz(25GB)。 Jena报告了许多关于不良数据的问题。 示例-150.0无效,true和false值无效 我通过在转储文件中的十进制和true/false周围添加双引号解决了这些问题。 但是,Jena仍在报告问题(当前-org.apache.Jena.riot.RiotException:[行:161083,列:110]非法对象:[减])

有没有办法对这些数据进行预处理,这样我就不必逐一解决每个问题。 我的Java代码:

    // Open TDB dataset
    String directory = "D:/test_dump";
    Dataset dataset = TDBFactory.createDataset(directory);

    // Assume we want the default model, or we could get a named model here
    Model tdb = dataset.getDefaultModel();

    // Read the input file - only needs to be done once
    String source = "D:/test_dump/fixed-freebase-second-rdf.gz";
    FileManager.get().readModel( tdb, source, "N-TRIPLES" ); 

数据是乌龟格式的,不是N-Triples。它们使用各种海龟缩写(如
true
表示
“true”^^xsd:boolean
或number
-27
表示
“-27”^^xsd:integer

可能仍然存在错误,因为它们的转储还包含非法语法,例如在前缀名称中使用
$
,而没有必要的
\

在事物周围添加引号会改变RDF。

注意:这是我从问题中得到的答案的副本,简短的回答是数据是在Turtle序列化中,而不是N-Triples中。Turtle支持各种缩写,例如,
true
表示
“true”^^xsd:boolean

即使在上的示例数据中,也存在不正确的N-三元组:

<http://rdf.freebase.com/ns/g.11vjz1ynm>  <http://rdf.freebase.com/ns/measurement_unit.dated_percentage.rate> 4.5 .
4.5。
看起来他们的数据更像是符号3(N3)或海龟格式,而不是N-Triples。事实上,Shawn Simister于2013年8月29日表示(重点补充):

我一直在写一个新版本的 Freebase RDF转储将 解决许多已经解决的问题 从我们第一次开始就被发现了 将数据发布为RDF… 这些转储中最大的变化是 格式已切换为 海龟的N-三倍体。在实践中 这是一个非常小的变化,因为 N-三联体是海龟的一个子集 每行遵循相同的一个三元组 我们现在拥有的格式

A(2013年10月31日)涉及布尔问题:

嗯,是的,看来这是一个 缺陷乌龟支持真与假 等效于“true”^^xsd:boolean和 “false”^^xsd:boolean但即使 N-Triples是它的一个子集 不支持简化布尔值 语法


这篇文章值得多读一读。但这有点令人沮丧,因为当人们在写诸如“你可以用“真”之类的东西时,不清楚它们是指
真的还是
“真的”
。听起来有些人实际上并不太关心有效的RDF,也不太关心非类型的纯文本
“true”
和布尔类型的文本
“true”^^xsd:boolean
之间的区别,后者可以缩写为
true
。无论如何,简短的回答看起来像是“使用海龟或N3解析器。”

在answers.semanticweb.com上有一个最近的问题。数据以海龟为单位,而不是N-Triples。