2017-02-16 7 views
0

SystemInformation:Pas en mesure d'ajouter des fichiers à repo supérieur à 1,5 MB

Information sur la demande Nom de l'application serveur RDF4J-
Version 2.2
Informations Durée:
Système d'exploitation Linux 3.10.0-327.36.2. el7.x86_64 (amd64)
Java Runtime Oracle Corporation OpenJDK 64 bits serveur VM (1.8.0_102)

J'utilise le api RDF4J vouloir écrire NTriples à un référentiel dans le serveur RDF4J. Les données sont dans un fichier et je peux télécharger le fichier en utilisant workbench, mais en utilisant l'API il jette une exception. Cela se produit uniquement si la taille du fichier est supérieure à 1,5 Mo.
Si j'utilise curl, il fonctionne également avec des fichiers de plus de 1,5 Mo.

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

Donc la question est. Pourquoi échoue sur mimefile si le fichier est plus grand que 1,5 Mo?
Pourquoi le fichier est-il créé en tant que texte/brut; ?
Le fichier a été créé comme une extension .nt et je l'ai ajouté à /etc/mime.types les éléments suivants

#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) 

code:

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(); 
     } 
    } 
} 

Répondre

1

Avez-vous déjà essayé HTTPRepository au lieu de SPARQLRepository? Peut-être que cela résout le problème pour vous.

+0

Mec ... C'était tout !!! Merci beaucoup. – Michael

+0

Encore une exception étrange cependant. – Michael

+0

Toujours heureux de vous aider: D oui très étrange, vous devriez créer un problème ici https://github.com/eclipse/rdf4j/issues et ensuite les gars rdf4j vont y jeter un coup d'oeil. – ChristophE