redland rapper/Librarptor2在大型RDF文件上内存不足

redland rapper/Librarptor2在大型RDF文件上内存不足,rdf,turtle-rdf,redland,Rdf,Turtle Rdf,Redland,我试图使用libraptor2[version 2-2.0.10]解析Turtle转储文件,我的程序内存不足。因此,我尝试使用“说唱”程序,结果相同(内存不足): 我观察内存消耗,它会上升到4GB,然后消失。 如何限制libraptor/rapper的内存消耗?可能不是解析导致了您的问题。解析器一次读取一个输入标记,当它可以找到一个三元组时,它将其发送给序列化程序。然而,序列化到turtle需要大量内存。序列化程序首先在内存中构建整个图形,并且只有在添加了所有三元组后,图形才会被写出为turtl

我试图使用libraptor2[version 2-2.0.10]解析Turtle转储文件,我的程序内存不足。因此,我尝试使用“说唱”程序,结果相同(内存不足):

我观察内存消耗,它会上升到4GB,然后消失。
如何限制libraptor/rapper的内存消耗?

可能不是解析导致了您的问题。解析器一次读取一个输入标记,当它可以找到一个三元组时,它将其发送给序列化程序。然而,序列化到turtle需要大量内存。序列化程序首先在内存中构建整个图形,并且只有在添加了所有三元组后,图形才会被写出为turtle

因此,将输出格式从面向图形的turtle更改为一些面向三重的语法,例如
ntriples


评论后更新

由于内存问题仍然存在,计数模式会在解析后丢弃三元组,这肯定也是解析器内存问题

不确定您最终想要对数据做什么,但这里有一些可能会有所帮助。 请注意,freebase数据格式是面向行的“ntriples with turtle namespace”,因此使用简单的文本文件处理工具处理更易于管理的数据块相对简单:

  • 保留从文件头到所有块的
    @prefix
    声明

  • 三重切割数据,即换行边界


  • 可能不是解析导致了您的问题。解析器一次读取一个输入标记,当它可以找到一个三元组时,它将其发送给序列化程序。然而,序列化到turtle需要大量内存。序列化程序首先在内存中构建整个图形,并且只有在添加了所有三元组后,图形才会被写出为turtle

    因此,将输出格式从面向图形的turtle更改为一些面向三重的语法,例如
    ntriples


    评论后更新

    由于内存问题仍然存在,计数模式会在解析后丢弃三元组,这肯定也是解析器内存问题

    不确定您最终想要对数据做什么,但这里有一些可能会有所帮助。 请注意,freebase数据格式是面向行的“ntriples with turtle namespace”,因此使用简单的文本文件处理工具处理更易于管理的数据块相对简单:

  • 保留从文件头到所有块的
    @prefix
    声明

  • 三重切割数据,即换行边界


  • 这是一个很好的问题(并且有一个有用的答案)。不过请注意,“有没有其他开源rdf解析库没有遇到这个问题?”是在询问库,而“要求我们推荐或查找工具、库或最喜欢的非现场资源的问题是堆栈溢出的话题”。如果包含一个到数据的链接也会很好,这样其他人就可以尝试重现这种行为。总而言之,这是一个很好的问题,感谢您将错误消息准确地显示在屏幕上!这是一个很好的问题(并且有一个有用的答案)。不过请注意,“有没有其他开源rdf解析库没有遇到这个问题?”是在询问库,而“要求我们推荐或查找工具、库或最喜欢的非现场资源的问题是堆栈溢出的话题”。如果包含一个到数据的链接也会很好,这样其他人就可以尝试重现这种行为。总而言之,这是一个很好的问题,感谢您将错误消息准确地显示在屏幕上!拉阿尔托,谢谢。我还不太熟悉RDF的所有细节。我的计划是将所有“主语、谓语、宾语”元组插入到我自己的数据库中。正如你所建议的,我试图将ttl转换为ntriples,但程序的内存仍然不足,#raptor2-2.0.10/install/bin/rapper-I-turtle-I--o-ntriples-o-freebase-rdf-2013-06-02-00-00.ttlit内存不足,即使我要求“rapper”只计算turtle文件中的tripple数(使用选项--count),谢谢。我还不太熟悉RDF的所有细节。我的计划是将所有“主语、谓语、宾语”元组插入到我自己的数据库中。正如您所建议的,我尝试将ttl转换为ntriples,但程序的内存仍然不足,#raptor2-2.0.10/install/bin/rapper-I turtle-I--o ntriples-o-freebase-rdf-2013-06-02-00-00.ttlit会耗尽内存,即使我要求“rapper”只计算turtle文件中的tripple数(使用选项--count)。
    #  raptor2-2.0.10/bin/rapper -i turtle -I - -o turtle -O - freebase-rdf-2013-06-02-00-00.ttl > /dev/null
    
    rapper: Parsing URI file:///...ttl with parser turtle and base URI -
    rapper: Serializing with serializer turtle
    Killed