首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RDFLib解析大数据集?

如何使用RDFLib解析大数据集?
EN

Stack Overflow用户
提问于 2011-04-15 22:59:36
回答 1查看 5.4K关注 0票数 9

我正在尝试用RDFLib 3.0解析几个大图,显然它会处理第一个图,而在第二个图(MemoryError)上会死掉……看起来MySQL不再被支持为商店了,你能建议一种解析它们的方法吗?

代码语言:javascript
复制
Traceback (most recent call last):
  File "names.py", line 152, in <module>
    main()
  File "names.py", line 91, in main
    locals()[graphname].parse(filename, format="nt")
  File "/usr/local/lib/python2.6/dist-packages/rdflib-3.0.0-py2.6.egg/rdflib/graph.py", line 938, in parse
    location=location, file=file, data=data, **args)
  File "/usr/local/lib/python2.6/dist-packages/rdflib-3.0.0-py2.6.egg/rdflib/graph.py", line 757, in parse
    parser.parse(source, self, **args)
  File "/usr/local/lib/python2.6/dist-packages/rdflib-3.0.0-py2.6.egg/rdflib/plugins/parsers/nt.py", line 24, in parse
    parser.parse(f)
  File "/usr/local/lib/python2.6/dist-packages/rdflib-3.0.0-py2.6.egg/rdflib/plugins/parsers/ntriples.py", line 124, in parse
    self.line = self.readline()
  File "/usr/local/lib/python2.6/dist-packages/rdflib-3.0.0-py2.6.egg/rdflib/plugins/parsers/ntriples.py", line 151, in readline
    m = r_line.match(self.buffer)
MemoryError
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-15 23:47:40

这些RDF文件上有多少个三元组?我测试过rdflib,如果你幸运的话,它的伸缩性不会超过几十个ktriple。对于有数百万个三元组的文件,它不可能真正执行得很好。

目前最好的解析器是来自Redland Librariesrapper。我的第一个建议是不要使用RDF/XML,而是使用ntriples。三元组是一种比RDF/XML更轻量级的格式。您可以使用rapper将RDF/XML转换为三元组。

rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples

如果您喜欢Python,可以使用Redland python bindings

代码语言:javascript
复制
import RDF
parser=RDF.Parser(name="ntriples")
model=RDF.Model()
stream=parser.parse_into_model(model,"file://file_path",
                                      "http://your_base_uri.org")
for triple in model:
    print triple.subject, triple.predicate, triple.object

我已经用redland库解析了相当大的文件(几个千兆字节),没有任何问题。

最后,如果您正在处理大数据集,您可能需要将您的数据断言到一个可伸缩的三元组存储中,我通常使用的是4store。4store内部使用redland来解析RDF文件。从长远来看,我认为,寻求一个可伸缩的三元组存储是你必须要做的。有了它,您将能够使用SPARQL查询数据,使用SPARQL/Update插入和删除三元组。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5678623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档