将Freebase导入三元组存储库

8

我目前正在计划一个包含大数据的大型项目。

我已经使用搜索引擎,所有结果都告诉我如果不使用第三方工具(如BaseKBFreebase to RDF),就无法将Freebase导入任何三元存储中。

据我所知,该转储已经可用作RDF格式,那么如果我想将该转储导入我的4store三元存储并通过SPARQL访问数据,问题在哪里?


你是否将Freebase数据导入三元存储中?如果是,完成该过程需要多长时间,使用的机器配置是什么?我也计划导入这些数据。请告诉我详细信息。谢谢。 - vinod
3个回答

3

对于所有遇到导入Freebase Dump问题的人:

1)保持你的RDF / Turtle解析器更新。(最新版本的raptor 2可以识别'.',例如在ns:common.topic.notable_for.example中)

2)在导入之前必须清理数据。我使用了这个脚本:http://people.apache.org/~andy/Freebase20121223/(fixit)

3)Turtle规范只允许使用这些字符作为URI:

::= '<' ([^#x00-#x20<>\"{}|^`\] | UCHAR)* '>'

因此,在fixit脚本的第80行添加此行非常重要:
$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>

2
您可能从至少两个,甚至三个不同的数据集中获取搜索结果:
  1. 旧的四元组格式转储
  2. 早期的RDF转储
  3. (也许)当前的RDF转储
第一种格式需要进行转换。早期的RDF转储(#2)在语法上无效,因此不能导入大多数工具。随着时间的推移,RDF转储已经得到了改进。我不确定是否仍然需要预处理才能导入,但是无论如何,如果您对其进行预处理以消除冗余,将其规范化为最适合您的应用程序的格式等,则几乎更有用。
您尝试导入当前的转储吗?您的结果如何?

感谢您的快速回复。今天我订购了一台根服务器,安装了4store、DL Freebase Dump,并将其分割成每个文件1000万个三元组。现在,在导入时出现错误:“URI file:///root/freebase/xaa:8 raptor error - syntax error”。这是Freebase RDF的turtle语法普遍存在的问题吗? - smith64fx
第一行代码导致了“语法错误”:ns:american_football.football_historical_roster_position.number ns:type.property.expected_type ns:type.int。 - smith64fx
1
我修好了... 在更新了Raptor2之后,我现在通过这个很好的修复程序:http://people.apache.org/~andy/Freebase20121223/ 已经可以正常工作了。 - smith64fx

1
问题在于freebase turtle dump不符合w3c turtle规范。
1)根据http://www.w3.org/TR/turtle/#sec-grammar, 字符“。”只能出现在三元组的末尾, 然而freebase dump有很多“。”在三元组末尾之前。 我在某个地方读到“/”在uri之外也不允许,所以 他们选择使用了“.”。
最新的raptor2库可以解决这个问题(“.”),但旧版本不能。
2)我认为发出“空白节点”的方式也无效,例如第141567行 ns:m.01000m1 ns:common.topic.notable_for .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接