我已从https://developers.google.com/freebase/data?hl=en下载了Freebase转储,
我知道转储的格式是<subject> <predicate> <object>
,但我对文件的关系感到困惑。现在,我有两个问题:
如果我想提取Freebase的电子产品子集,其中包括一些主要属性,如/produced by
,/product type
等。例如:在子集中,iPhone的记录包含iPhone的设计公司,世代等。我尝试使用cygwin来提取它,我该如何编写zgrep脚本?
如果我以* .gz格式获得此子集,如何在Windows环境中使用SPARQL或其他有效的编码语言查询指定的主题?例如:查询iPhone有关设计公司的信息。我知道即使子集是一个大的RDF文件,我能实现吗?
我真的需要有人告诉我,不管我能做到,谢谢。
答案 0 :(得分:0)
由于Freebase网站仍处于活动状态,尽管存在将其关闭的威胁,我要做的第一件事就是检查它是否可能包含您想要的信息:
https://www.freebase.com/search?query=iphone&any=%2Fcommon%2Ftopic https://www.freebase.com/m/0c0bg9c
如果您决定要提取子集,则可以编写一个小程序,该程序利用转储按主题ID排序的事实,并缓冲当前主题的谓词,直到您决定它是否符合您的条件或使用类似zgrep的两个传递 - 一个用于提取匹配的主题ID,另一个用于获取这些主题ID的所有谓词。
Freebase作为/business/product_line/category
属性,可能名义上标识电子产品,但我认为它不足以填充有用。
答案 1 :(得分:0)
使用RDF,您应该决定将您在存档中下载的日期存储在何处。我假设你想要一些简单的东西。下载并安装Apache Jena。如果您想要HTTP接口(而不是命令行工具),请考虑Jena Fuseki。
查询您需要了解SPARQL的数据。如果您熟悉SQL,学习SPARQL不应该花费你几个小时。如果您对要实现的目标有特别的疑问,请再次询问他们。
使用这些工具,您可以处理任何RDF文件。即使有数十亿的三元组。