Загрузка очень большого файла RDF в OpenRDF Seaname Ontology Manager

StackOverflow https://stackoverflow.com/questions/3545975

  •  30-09-2019
  •  | 
  •  

Вопрос

Мне нужно загрузить очень большую онтологию, представленную в виде N-Triples File (1 ГБ) к приложению openrdf seaname. Я использую интерфейс Workbench, чтобы сделать это. Я знаю, что этот файл слишком большой, чтобы загружаться в один запрос. Чтобы обойти это, я разбиваю свои файлы в файлах размером 100 МБ. Но я все еще получаю ошибку форму openrdf seaname 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 Seaname или другой менеджер на онтологии, который я мог бы использовать для моей задачи?

Большое спасибо для вашего ввода

K.

Это было полезно?

Решение

Workbench Seaname действительно не является идеальным инструментом для таких задач - хотя я ожидаю, что он сможет справиться с файлами 100 МБ. Может быть, что Tomcat, на котором вы запускаете SESAME, имеет набор пределов поста? Вы можете спросить вокруг по почте кунжута, там мало знающих людей. Но вот два возможных идеи, чтобы сделать вещи:

Один из способов справиться с этим - это программно выполнять загрузку, используя API репозитория SeSame. Посмотрите на документацию пользователя на Seaname сайт Для примеров кода.

В качестве альтернативы, если вы используете средний магазин SESAME, вы можете сделать «грязный» обходной путь с использованием консоли командной строки SESAMES: создать локальный нативный тройной магазин и загрузить свои данные в этот локальный магазин (это должно быть намного быстрее, потому что нет HTTP Communication необходимо). Затем выключите сервер Seesame, скопируйте данные Datafiles из локального стандарта в файлах данных магазина на своем сервере и перезапустите.

Другие советы

У меня такая же проблема. Когда я пытался загрузить «большой» RDF (около 40 МБ) отказоустойчивый процесс загрузки с ошибкой:

Невероятное требование привязанного лица не может быть повторена.

Я пробую другую серьеру Tomcat, а также кунжут, но без успеха. Затем я пытаюсь использовать консоль кунжута и локальный репозиторий (не localhost на Tomcat Server - поскольку jeen скажет в другом ответе), он покажет мне еще одну ошибку:

Необработанный документ: JAXP00010001: Парсер столкнулся с расширениями объекта более чем «64000» в этом документе; Это предел, налагаемый JDK. [строка 1, столбец 1

Поэтому я думаю, что ошибка о пределе сущности покрывается где-то в Tomcat по ошибке по зонтированию сущности.

Тогда я нашел эту тему Что вызывает эти исключения ParseError при чтении от очереди AWS SQS в моем штормом кластере И добавьте это утверждение перед началом Tomcat:

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

Это утверждение отключает предел сущности в XML Parser (по умолчанию 64 000 по мере сообщения об ошибке). После этого шага можно загрузить «большой» RDF (проверено на 40-800 МБ).

Я точно не знаю, какую задачу вы надеетесь достичь, но вы можете проверить здесь Для списка масштабируемых тройных магазинов с неформальными (главным образом выгодными) результатами масштабируемости. В этом кунжут только сообщает, что обрабатывает 70 м.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top