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

时间:2014-01-22 04:44:35

标签: rdf jena semantic-web freebase

我正在尝试使用Jena解析freebase转储文件freebase-rdf-2014-01-12-00-00.gz(25 GB)。 耶拿报道了关于不良数据的许多问题。 示例 - 150.0无效,true和false值无效 我通过在转储文件中添加十进制和true / false的双引号来解决这些问题。 但问题仍然是reported by Jena.(current - org.apache.jena.riot.RiotException: [line: 161083, col: 110] Illegal object: [MINUS])

有没有办法预处理这些数据,这样我就不必一个一个地解决每个问题。 我的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" ); 

2 个答案:

答案 0 :(得分:4)

数据采用Turtle格式,而不是N-Triples。他们使用各种Turtle缩写(例如true"true"^^xsd:boolean-27"-27"^^xsd:integer

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

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

答案 1 :(得分:2)

注意:这是answers.semanticweb.com问题的答案副本,Does the Freebase RDF dump conform to the w3 n-triples spec?简短的回答是数据是在Turtle序列化中,而不是N-Triples。 Turtle支持各种缩写,例如true "true"^^xsd:boolean

即使在Data Dumps的示例数据中,也存在错误的N-Triples:

<http://rdf.freebase.com/ns/g.11vjz1ynm>  <http://rdf.freebase.com/ns/measurement_unit.dated_percentage.rate> 4.5 .

看起来他们的数据更像是Notation 3(N3)或Turtle格式而不是N-Triples。事实上,2013年8月29日来自Shawn Simister的this post on the freebase-discuss说(重点补充):

  

我一直在研究新版本的   Freebase RDF转储哪个会   解决许多问题   自从我们刚开始以来被发现   将数据发布为RDF。 ...   这些转储的最大变化是   格式已切换到   来自海龟的N-Triples。在实践中   这是一个非常小的改变   N-Triples是Turtle的一个子集   遵循相同的每行三重奏   我们现在拥有的格式。

A later post(2013年10月31日)触及布尔问题:

  嗯,是的,看来这是一个   错误。龟支持真假   相当于“true”^^ xsd:boolean和   “false”^^ xsd:boolean但即便如此   N-Triples是Turtle的一个子集   不支持简化的布尔值   语法。

值得阅读更多该主题。但是有点令人沮丧,因为当人们写下“你可以使用”真实“这样的东西时,”不清楚它们是true还是"true"。听起来有些人实际上并不关心有效的RDF,或者无类型的普通文字"true"和布尔类型的文字"true"^^xsd:boolean之间的区别可以缩写为{{1} }。无论如何,简短的回答看起来像是“使用Turtle或N3解析器。”