我目前正在计划一个包含大数据的大项目。
我已经使用了搜索,所有结果都告诉我,如果不使用BaseKB或Freebase到RDF 等第三方工具,就不可能将Freebase导入任何三元组存储
正如我所看到的,转储已经作为RDF可用,那么如果我想将转储导入我的4store三元组存储并通过SPARQL访问数据,问题在哪里呢?
对于所有在导入Freebase Dump:时遇到问题的人
1) 保持RDF/Turtle Parser的更新。(最新版本的猛禽2可以识别".",例如在ns:common.topic.notable_for.example
2) 必须先清理垃圾场,然后才能导入。我使用了以下技巧:http://people.apache.org/~andy/Freebase20121223/(修正)
3) Turtle规范只允许URI使用以下字符:
::= '<' ([^#x00-#x20<>"{}|^`] | UCHAR)* '>'
因此,将这一行添加到第80行的fixit脚本中非常重要:
$X =~ s/\>/%3E/g ;
$X =~ s/\.//g ;
# Add this Line
$X =~ [x00-x20<>"{}|^`] ;
$obj = "<".$X.">" ;
结果,像这样的无效语法:
<http://www.wikipedia.org/object?key={invalid_braces}>
成为
<http://www.wikipedia.org/object?key=invalid_braces>
您可能从至少两个(如果不是三个的话)不同的数据集获得搜索结果:
- 旧的quad格式转储
- 早期RDF转储
- (也许)当前RDF转储
#1中的格式是需要转换的格式。早期的RDF转储(#2)在语法上是无效的,因此不会导入到大多数工具中。RDF转储一直在改进。我不确定在没有预处理的情况下它根本不会导入是否仍然是真的,但是,不管怎样,如果你对它进行预处理以消除冗余,将其规范化为最适合你的应用程序的格式,这几乎会更有用
您是否尝试导入当前转储?你的结果是什么?
freebase海龟转储的问题是,它们不符合w3c海龟规范。
1) 根据http://www.w3.org/TR/turtle/#sec-语法,字符"."只能出现在三元组的末尾,不过freebase dump有很多"。"三连击结束前。我在某个地方读到,在uri之外也不允许使用"/",所以他们选择使用"。"
最新的raptor2库可以绕过这个('.'),但不能绕过旧的
2) 我认为发出"空白节点"的方式也是无效的例如线路141567ns:m01000m1 ns:common.topic.notable_for。