我需要将表示为N-triples文件(1 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.
发布于 2010-09-20 19:56:58
对于这些类型的任务,Sesame Workbench确实不是理想的工具--尽管我希望它能够处理100MB的文件。可能是你运行Sesame的Tomcat设置了POST限制?你可以在Sesame的邮件列表上打听一下,那里也没有多少有见识的人。但这里有两个可能的想法来完成任务:
处理此问题的一种方法是使用Sesame的Repository API以编程方式进行上传。有关代码示例,请参阅Sesame website上的用户文档。
或者,如果您正在使用Sesame本机存储,您可以使用Sesame的命令行控制台做一个“脏”的变通办法:创建一个本地本机三重存储并将您的数据上传到该本地存储(这应该要快得多,因为不需要HTTP通信)。然后,关闭您的Sesame服务器,将本地本地存储的数据文件复制到服务器中的存储数据文件上,然后重新启动。
发布于 2015-10-16 21:45:23
我也有同样的问题。当我尝试上传“大型”RDF (大约40MB)时,上传过程失败并出现错误:
无缓冲实体封装请求不能重复。
我尝试了其他版本的Tomcat和芝麻,但没有成功。然后我尝试使用芝麻控制台和本地存储库(而不是tomcat服务器上的localhost -正如Jeen在另一个答案中所说的),它显示了另一个错误:
JDK格式错误的文档: JAXP00010001:解析器在此文档中遇到了超过"64000“个实体扩展;这是
施加的限制。第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上测试)。
发布于 2010-09-16 08:40:39
我不确切地知道您希望完成什么任务,但是您可能想查看here,以获得具有非正式(主要是自称)可伸缩性结果的可伸缩三元组存储的列表。在这种情况下,Sesame只报告处理了7000万条语句(不是很多...可能是您遇到麻烦的原因。)
https://stackoverflow.com/questions/3545975
复制相似问题