Невозможно добавить файл в репозиторий размером более 1,5 МБ.

Системная информация:

Информация о приложении Имя приложения RDF4J-server
Версия 2.2
Информация о среде выполнения:
Операционная система Linux 3.10.0-327.36.2.el7.x86_64 (amd64)
Среда выполнения Java Oracle Corporation OpenJDK 64-разрядный сервер ВМ (1.8.0_102)

Я использую API RDF4J, чтобы записать NTriples в репозиторий на сервере RDF4J. Данные находятся в файле, и я могу загрузить файл с помощью workbench, но с помощью API он выдает исключение. Это происходит только в том случае, если размер файла превышает 1,5 МБ.
Если я использую curl, он также работает с файлами размером более 1,5 МБ.

curl -X POST -H "Content-type: text/plain" --data-binary @central-ReadOnly.nt http://localhost:8080/rdf4j-server/repositories/testOfUpload/statements

Итак, вопрос. Почему происходит сбой mimetype, если размер файла превышает 1,5 МБ?
Почему файл создается как text/plain; ?
Файл был создан с расширением .nt, и я добавил в /etc/mime.types следующее

#MIME type                                      Extensions
application/n-triples                           nt

-

org.eclipse.rdf4j.query.UpdateExecutionException: Unsupported MIME type:   application/x-www-form-urlencoded
Message!!error executing transaction
org.eclipse.rdf4j.repository.RepositoryException: error executing transaction
at     org.eclipse.rdf4j.repository.sparql.SPARQLConnection.commit(SPARQLConnection.java:438)
at dk.skat.rdfconsolidation.Application.writeStatementsToRepository(Application.java:215)
at dk.skat.rdfconsolidation.Application.run(Application.java:72)
at dk.skat.rdfconsolidation.Application.main(Application.java:34)

Код:

protected void writeStatementsToRepository(String endpoint, String fileName) throws IOException {
    File inputfile = new File(fileName);

    Repository repo = new SPARQLRepository(endpoint);
    repo.initialize();

    try (RepositoryConnection con = repo.getConnection()) {
        con.begin();
        try {
            con.add(inputfile, null, RDFFormat.NTRIPLES);
            con.commit();
        } catch (RepositoryException e) {
            System.out.println("ERROR!!" + e.getCause());
            System.out.println("Message!!" + e.getMessage());
            e.printStackTrace();
            System.out.println("endpoint" + endpoint);
            System.out.println("inputfile" + inputfile);
            System.out.println("fileName" + fileName);
            con.rollback();
        }
    }
}

person Michael    schedule 16.02.2017    source источник


Ответы (1)


Вы уже пробовали HTTPRepository вместо SPARQLRepository? Возможно, это решит проблему для вас.

person ChristophE    schedule 16.02.2017
comment
Тем не менее, странное исключение. - person Michael; 16.02.2017
comment
Всегда рад помочь :D да, очень странно, вы должны создать задачу здесь github.com/eclipse/rdf4j/ проблемы, а затем ребята из rdf4j рассмотрят ее. - person ChristophE; 16.02.2017