我正在尝试使用 Jena 解析 freebase 转储文件 freebase-rdf-2014-01-12-00-00.gz (25 GB)。
耶拿报告了许多有关不良数据的问题。
示例 - 150.0 无效,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" );
数据采用 Turtle 格式,而不是 N-Triples。他们使用各种 Turtle 缩写(例如true
for "true"^^xsd:boolean
或号码-27
for "-27"^^xsd:integer
).
可能仍然存在错误,因为它们的转储还包含非法语法,例如用于$
在前缀名称中没有必要的\
在事物周围添加引号changesRDF。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)