我正在尝试使用Parse large RDF中的代码解析一个相当大的NTriples文件
我为python安装了raptor和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
但是程序挂起,我怀疑它正在尝试将整个文件加载到内存或其他东西中,因为它没有立即启动。
有人知道如何解决这个问题吗?
它很慢,因为您正在读取内存存储(RDF.模型() 默认值),它没有索引。 所以它变得越来越慢。 N-Triples 的解析确实从文件流式传输,它永远不会将其全部吸收到内存中。
有关存储模型的概述,请参阅 Redland 存储模块文档。 在这里,您可能希望存储type
"哈希"和hash-type
内存。
s = RDF.HashStorage("abc", options="hash-type='memory'")
model = RDF.Model(s)
(未测试)