我目前正在计划一个包含大数据的大项目。
我已经使用了搜索,所有结果都告诉我,如果不使用BaseKB或Freebase 到 RDF等 3rd 方工具,就不可能将 Freebase 导入任何三重存储
正如我所看到的,转储已经作为 RDF 提供,那么如果我想将转储导入到我的 4store 三重存储并通过 SPARQL 访问数据,问题在哪里?
我目前正在计划一个包含大数据的大项目。
我已经使用了搜索,所有结果都告诉我,如果不使用BaseKB或Freebase 到 RDF等 3rd 方工具,就不可能将 Freebase 导入任何三重存储
正如我所看到的,转储已经作为 RDF 提供,那么如果我想将转储导入到我的 4store 三重存储并通过 SPARQL 访问数据,问题在哪里?
对于在导入 Freebase 转储时遇到问题的每个人:
1) 更新您的 RDF/Turtle 解析器。(最新版本的 raptor 2 可以识别 '.',例如在 ns:common.topic.notable_for.example
2) 必须先清理转储,然后才能导入。我使用了这个 scipt:http ://people.apache.org/~andy/Freebase20121223/ (fixit)
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>
您可能从至少两个(如果不是三个)不同的数据集中获得搜索结果:
#1 中的格式是需要转换的。早期的 RDF 转储(#2)在语法上是无效的,因此不会导入到大多数工具中。随着时间的推移,RDF 转储一直在改进。我不确定在没有预处理的情况下根本不会导入它是否仍然正确,但是无论如何,如果您对其进行预处理以消除冗余,将其标准化为最适合您的格式,它几乎会更有用申请等
您是否尝试导入当前转储?你的结果是什么?
自由基海龟转储的问题在于,它们不符合 w3c 海龟规范。
1)根据http://www.w3.org/TR/turtle/#sec-grammar,字符'.' 只能出现在三元组的末尾,但是 freebase 转储有很多 '.' 三人组结束前。我在某处读到在 uri 之外也不允许使用“/”,因此他们选择使用“。”
最新的 raptor2 库可以解决这个问题('.'),但不能解决旧的
2)我认为发出“空白节点”的方式对于例如行 141567 ns:m.01000m1 ns:common.topic.notable_for 也无效。