You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Andy Seaborne (JIRA)" <ji...@apache.org> on 2013/11/28 20:17:35 UTC
[jira] [Resolved] (JENA-598) SPARQL Load requires correct http
content-type, should fall back to file ending
[ https://issues.apache.org/jira/browse/JENA-598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andy Seaborne resolved JENA-598.
--------------------------------
Resolution: Fixed
Fix Version/s: Jena 2.11.1
Assignee: Andy Seaborne
> SPARQL Load requires correct http content-type, should fall back to file ending
> -------------------------------------------------------------------------------
>
> Key: JENA-598
> URL: https://issues.apache.org/jira/browse/JENA-598
> Project: Apache Jena
> Issue Type: Bug
> Components: Jena
> Affects Versions: Fuseki 1.0.0
> Reporter: HÃ¥vard Ottestad
> Assignee: Andy Seaborne
> Priority: Trivial
> Fix For: Fuseki 1.0.1, Jena 2.11.1
>
> Original Estimate: 6h
> Remaining Estimate: 6h
>
> A SPARQL Update query with a LOAD command requires a correct HTTP content-type (mime-type) to be returned with the GET request when downloading the file.
> Should have 2 failovers:
> 1. Attempt to use file ending. .ttl == TTL .xml == RDF/XML and so on
> 2. Attempt to read the file with a different language (eg. if TTL fails, try RDF/XML)
> The code for this seems to be here: https://svn.apache.org/repos/asf/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java
> @Override
> public void visit(UpdateLoad update)
> {
> String source = update.getSource() ;
> Node dest = update.getDest() ;
> try {
> // Read into temporary storage to protect against parse errors.
> TypedInputStream s = RDFDataMgr.open(source) ;
> Lang lang = RDFLanguages.contentTypeToLang(s.getContentType()) ; //--- THIS IS WHERE THE BUG IS ---//
> if ( RDFLanguages.isTriples(lang) ) {
> // Triples
> Graph g = GraphFactory.createGraphMem() ;
> StreamRDF stream = StreamRDFLib.graph(g) ;
> RDFDataMgr.parse(stream, s, source) ;
> Graph g2 = graph(graphStore, dest) ;
> GraphUtil.addInto(g2, g) ;
> } else {
> // Quads
> if ( dest != null )
> throw new UpdateException("Attempt to load quads into a graph") ;
> DatasetGraph dsg = DatasetGraphFactory.createMem() ;
> StreamRDF stream = StreamRDFLib.dataset(dsg) ;
> RDFDataMgr.parse(stream, s, source) ;
> Iterator<Quad> iter = dsg.find() ;
> for ( ; iter.hasNext() ; )
> {
> Quad q = iter.next() ;
> graphStore.add(q) ;
> }
> }
> } catch (RuntimeException ex)
> {
> if ( ! update.getSilent() )
> {
> if ( ex instanceof UpdateException )
> throw (UpdateException)ex ;
> throw new UpdateException("Failed to LOAD '"+source+"'", ex) ;
> }
> }
> }
--
This message was sent by Atlassian JIRA
(v6.1#6144)