我正在尝试用RDFLib 3.0解析几个大图,显然它会处理第一个图,而在第二个图(MemoryError)上会死掉……看起来MySQL不再被支持为商店了,你能建议一种解析它们的方法吗?
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发布于 2011-04-15 23:47:40
这些RDF文件上有多少个三元组?我测试过rdflib,如果你幸运的话,它的伸缩性不会超过几十个ktriple。对于有数百万个三元组的文件,它不可能真正执行得很好。
目前最好的解析器是来自Redland Libraries的rapper。我的第一个建议是不要使用RDF/XML,而是使用ntriples。三元组是一种比RDF/XML更轻量级的格式。您可以使用rapper将RDF/XML转换为三元组。
rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples
如果您喜欢Python,可以使用Redland python bindings
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插入和删除三元组。
https://stackoverflow.com/questions/5678623
复制相似问题