use*_*778 8 python parsing rdf graph rdflib
我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)
Man*_*res 10
这些RDF文件有多少三元组?我已经测试过rdflib
,如果你很幸运的话,它不会比几十个ktriples进一步扩展.对于拥有数百万三倍的文件,它无法真正表现出色.
最好的解析器rapper
来自Redland Libraries.我的第一个建议是不要使用RDF/XML
和去ntriples
.Ntriples比RDF/XML格式更轻.您可以使用rapper
以下命令从RDF/XML转换为ntriples :
rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples
如果您喜欢Python,可以使用Redland python绑定:
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
Run Code Online (Sandbox Code Playgroud)
我已经用redland库解析了相当大的文件(几千兆字节)没有问题.
最终,如果您正在处理大型数据集,您可能需要将数据断言到可扩展的三重存储中,我通常使用的是4store.4store内部使用redland来解析RDF文件.从长远来看,我认为,寻找可扩展的三重商店是你必须要做的.有了它,您将能够使用SPARQL查询您的数据,使用SPARQL/Update来插入和删除三元组.
归档时间: |
|
查看次数: |
3928 次 |
最近记录: |