【问题标题】:Loading verly large RDF file into openrdf Sesame ontology manager将非常大的 RDF 文件加载到 openrdf Sesame 本体管理器中
【发布时间】:2011-04-02 12:54:40
【问题描述】:

我需要将表示为 N-triples 文件 (1gb) 的非常大的本体加载到 openrdf Sesame 应用程序。我正在使用工作台界面来做到这一点。我知道这个文件太大而无法在一个请求中加载。为了解决这个问题,我将文件拆分为 100mb 大小的文件。但是我仍然从 openrdf Sesame 服务器收到错误消息:

HTTP ERROR 500

Problem accessing /openrdf-workbench/repositories/business/add. Reason:

    Unbuffered entity enclosing request can not be repeated.
Caused by:

org.apache.commons.httpclient.ProtocolException: Unbuffered entity enclosing request can not be repeated.
 at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:487)

有没有人对我可以用于我的任务的 openrdf Sesame 或其他本体管理器有很好的了解?

非常感谢您的意见

K.

【问题讨论】:

    标签: rdf ontology sesame


    【解决方案1】:

    Sesame Workbench 确实不是这类任务的理想工具——尽管我希望它能够处理 100MB 的文件。可能是您运行 Sesame 的 Tomcat 设置了 POST 限制?你可以在 Sesame 的邮件列表上四处询问,那里也很少有知识渊博的人。但这里有两个可能的想法来完成任务:

    处理此问题的一种方法是使用 Sesame 的存储库 API 以编程方式进行上传。查看Sesame website 上的用户文档以获取代码示例。

    或者,如果您使用 Sesame 本地存储,您可以使用 Sesame 的命令行控制台做一个“肮脏”的解决方法:创建一个本地本地三重存储并将您的数据上传到该本地存储(这应该更快,因为没有HTTP 通信是必要的)。然后,关闭 Sesame 服务器,将本地本地存储的数据文件复制到服务器中的存储数据文件上,然后重新启动。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。当我尝试上传“大”RDF(大约 40MB)时,上传过程失败并出现错误:

      未缓冲的实体封闭请求不能重复。

      我尝试了其他版本的Tomcat和芝麻,但没有成功。然后我尝试使用芝麻控制台和本地存储库(不是tomcat服务器上的localhost - 正如Jeen在另一个答案中所说)它向我显示另一个错误:

      格式错误的文档:JAXP00010001:解析器在此文档中遇到了超过“64000”个实体扩展;这是 JDK 施加的限制。 [第 1 行,第 1 列]

      所以我认为关于实体限制的错误在 tomcat 的某个地方被关于 Umbuffered 实体的错误所覆盖。

      然后我找到了这个话题What's causing these ParseError exceptions when reading off an AWS SQS queue in my Storm cluster,在tomcat启动前添加了这个语句:

      export JAVA_OPTS="${JAVA_OPTS} -Djdk.xml.entityExpansionLimit=0"
      

      此语句禁用 XML 解析器中的实体限制(默认为 64 000,如错误消息所示)。在这一步之后,我可以加载“大”RDF(在 40-800MB 上测试)。

      【讨论】:

      • 您能否具体说明您在何处添加了这一行?
      • 我记得,我在运行tomcat的用户主目录的.bashrc文件中添加了该行。但是有很多地方可以添加它。我认为可以在tomcat的bin文件夹中的startup.sh或catalina.sh文件之上添加这一行。
      【解决方案3】:

      我不确切知道您希望完成什么任务,但您可能想查看here 以获取具有非正式(主要是自称)可扩展性结果的可扩展三重存储列表。在这方面,Sesame 只报告处理了 70M 条语句(不是那么多……可能是你的麻烦的原因。)

      【讨论】:

      • 该列表严重过时恕我直言,芝麻的报告数量也是如此。它能够处理数亿个三元组(如果将 OWLIM 算作芝麻商店,则有数十亿个)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2014-12-05
      • 2014-06-29
      相关资源
      最近更新 更多