将大型RDF文件加载到OpenRDF芝麻本体管理器中
题
我需要加载非常大的本体,以n-triples文件(1GB)表示到OpenRDF sesame应用程序。我正在使用Workbench接口来做到这一点。我知道这个文件太大,无法在一个请求中加载。为了解决这个问题,我将文件拆分为100MB的文件。但是我仍然会遇到一个错误表格OpenRDF sesame Server:
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芝麻或其他本体管理经理有很好的了解?
非常感谢您的投入
K.
解决方案
芝麻工作台实际上不是这些任务的理想工具 - 尽管我希望它能够应对100MB文件。您可能会在芝麻上运行的tomcat有一个邮政限制集?您可以在芝麻的MailingList上询问,那里也很少有知识渊博的人。但是,以下是完成工作的两个可能的想法:
处理此问题的一种方法是使用芝麻的存储库API以编程方式进行上传。查看有关的用户文档 芝麻网站 对于代码示例。
另外,如果您使用芝麻本地商店,则可以使用芝麻的命令行控制台进行“肮脏”的解决方法:创建本地本地三重商店并将数据上传到该本地商店(这应该会更快,因为没有http Communication是必要的)。然后,关闭芝麻服务器,通过服务器中的商店数据文件复制本地本地存储的数据文件,然后重新启动。
其他提示
我有同样的问题。当我尝试上传“大” RDF(大约40MB)时,上传过程失败了,错误:
无法重复未封闭的实体封闭请求。
我尝试了tomcat和芝麻的其他其他方法,但没有成功。然后,我尝试使用芝麻控制台和本地存储库(不是tomcat服务器上的本地主机 - 正如Jeen在另一个答案中所说),它向我展示了另一个错误:
畸形的文档:JAXP00010001:解析器在本文档中遇到的“ 64000”实体扩展;这是JDK施加的极限。 [第1行,第1列
因此,我认为关于实体限制的错误在tomcat中通过夸张实体的错误涵盖了某个地方。
然后我找到了这个话题 在我的风暴群中阅读AWS SQS队列时,是什么导致这些parseerror例外 并在tomcat开始之前添加此声明:
export JAVA_OPTS="${JAVA_OPTS} -Djdk.xml.entityExpansionLimit=0"
此语句禁用XML解析器中的实体限制(如错误消息所说,默认值为64 000)。在此步骤之后,我可能会加载“大” RDF(在40-800MB上进行了测试)。
我不知道您希望完成什么任务,但您可能想检查一下 这里 对于具有非正式(主要是自称)可伸缩性结果的可扩展三重商店列表。在此中,芝麻只报告处理70m的语句(不是很多...可能是您造成麻烦的原因。)