freebase RDF转储的Jena解析问题(2014年1月)
我正在尝试使用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代码: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]非法对象:[减]) 有没有办法对这些数据进行预处理,这样我就不必
// 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。