解析大型NTriples文件的Python方法

4 投票
1 回答
3520 浏览
提问于 2025-04-17 14:09

我正在尝试用代码解析一个比较大的NTriples文件,代码来源于在Python中解析大型RDF

我安装了raptor和Python的redland-bindings。

import RDF
parser=RDF.Parser(name="ntriples") #as name for parser you can use ntriples, turtle, rdfxml, ...
model=RDF.Model()
stream=parser.parse_into_model(model,"file:./mybigfile.nt")
for triple in model:
    print triple.subject, triple.predicate, triple.object

但是程序卡住了,我怀疑它可能是试图把整个文件加载到内存中,因为它没有立即开始运行。

有没有人知道该怎么解决这个问题?

1 个回答

2

之所以慢,是因为你在读取一个内存中的存储(默认是RDF.Model()),这个存储没有索引。所以它会越来越慢。N-Triples的解析是从文件中流式读取的,它不会一次性把所有内容都放到内存里。

你可以查看一下Redland存储模块的文档,了解一下存储模型的概况。在这里,你可能想要使用存储类型为type的'hashes',以及hash-type为内存。

s = RDF.HashStorage("abc", options="hash-type='memory'")
model = RDF.Model(s)

(未测试)

撰写回答