2010-08-23 5 views
3

openrdf Sesame 어플리케이션에 N-triples file (1gb)로 표시된 매우 큰 온톨로지를로드해야합니다. 그렇게하기 위해 워크 벤치 인터페이스를 사용하고 있습니다. 이 파일이 너무 커서 한 요청에로드 할 수 없다는 것을 알고 있습니다. 이 문제를 해결하기 위해 파일 크기가 100MB 인 파일을 분할했습니다. 하지만 난 여전히 오류가 openrdf 참깨 서버를 형성 얻을 :대용량 RDF 파일을 openrdf에로드 참깨 온톨로지 매니저

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.

답변

3

세서미 워크 벤치는 실제로 이러한 유형의 작업에 이상적인 도구가 아닙니다. 100MB 파일을 처리 할 수 ​​있어야합니다. 세서미를 실행하는 Tomcat의 POST 한계가 설정되었을 수도 있습니다. 참깨의 메일 링리스트를 둘러 볼 수는 있습니다. 지식이있는 사람도 거의 없습니다. 그러나 일을 끝내기위한 가능한 두 가지 아이디어는 다음과 같습니다.

이 문제를 처리하는 한 가지 방법은 Sesame의 Repository API를 사용하여 프로그래밍 방식으로 업로드하는 것입니다. 코드 예는 Sesame website의 사용자 설명서를 참조하십시오.

참깨 네이티브 저장소를 사용하는 경우 세서미의 명령 줄 콘솔을 사용하여 '더티 (dirty)'해결 방법을 수행 할 수 있습니다. 로컬 네이티브 트리플 저장소 만들기 및 해당 로컬 저장소에 데이터 업로드 (훨씬 빠르고 HTTP 통신이 필요 없음). 그런 다음 세서미 서버를 종료하고 로컬 네이티브 저장소의 데이터 파일을 서버의 저장소 데이터 파일로 복사 한 다음 다시 시작하십시오.

-1

난 당신이 달성하기 위해 희망 정확하게 작업 모르겠지만, 당신이 비공식적으로 확장 트리플 상점의 목록을 here을 체크 아웃 할 수 있습니다 (주로 자기 주장) 확장 성 결과. 이것에서, 참깨는 단지 70M 문을 처리한다고보고합니다. (많은 것이 아니라 ... 당신의 문제의 원인 일 수 있습니다.)

+0

그 목록은 오래된 IMHO이며, 참깨에 대한보고 된 번호도 마찬가지입니다. 그것은 수억의 세배를 처리 할 수 ​​있습니다 (그리고 OWLIM을 세서미 스토어로 계산하면 수십억). –

1

같은 문제가있었습니다. 내가 (40메가바이트 정도) "큰"RDF 오류로 업로드 프로세스 faild을 업로드하려고 할 때 :

Unbuffered entity enclosing request can not be repeated.

나는 다른 톰캣의 wersion 또한 참깨하지만 성공하지보십시오. 그럼 난 참깨 콘솔 및 로컬 저장소를 사용하려고 (안 바람둥이 서버에 로컬 호스트 - 투입 Jeen는 다른 답변에서 말한대로)은 나에게 또 다른 오류 보여

Malformed document: JAXP00010001: The parser has encountered more than "64000" entity expansions in this document; this is the limit imposed by the JDK. [line 1, column 1]

그래서 내가 엔티티 제한에 대한 오류에 의해 바람둥이 어딘가에 덮여 생각을 Umbuffered 엔티티에 대한 오류.

은 그 때 나는이 주제 What's causing these ParseError exceptions when reading off an AWS SQS queue in my Storm cluster을 발견하고 바람둥이 시작하기 전에이 문을 추가 :

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

XML 파서에서이 문 비활성화 엔티티 제한 (기본값은 오류 메시지가 말한대로 64 000). 이 단계 후에 "큰"RDF (40-800MB에서 테스트 됨)를로드 할 수 있습니다.

+0

정확히 어디에이 행을 추가했는지 지정할 수 있습니까? – kurious

+1

내가 기억 하듯이, 그 행을 바람둥이 인 사용자의 홈 디렉토리에있는 .bashrc 파일에 추가한다. 그러나 추가 할 수있는 곳이 많이 있습니다.나는이 행을 Tomcat의 bin 폴더에있는 startup.sh 또는 catalina.sh 파일 위에 추가하는 것이 가능하다고 생각합니다. – PeterMacko