Andy, Rob, 

Thanks for your quick responses. I will try to implement this. The whole 
program using this is a little 'follow your nose' spider, so I will have to see 
where to integrate custom code for this domain until they fix the erroneus 
content type header. But at least I know now what's the reason; that was a huge 
help. 

I will also try to find out how to report this bug. 


Best Regards
Andreas


>>> Andy Seaborne <[email protected]> 16.12.19 11.11 Uhr >>>


On 16/12/2019 09:50, Rob Vesse wrote:
> The server does not appear to be sending an appropriate Content-Type header.  
> Note that if you read the stack trace you can see that Jena thinks the URI is 
> returning JSON/LD and invoking its JSON/LD parser hence why you hit a parsing 
> error.  I would consider filing a bug report with the server operators about 
> this
> 
> As you note in your email the data is actually RDF/XML so you can force Jena 
> to request (and treat) the data as that by passing the language parameter to 
> the RDFDataMgr.loadModel() call e.g.
> 
> RDFDataMgr.loadModel("http://viaf.org/viaf/32182557";, Lang.RDFXML);

It would if the far end returns no content type. The Lang argument is an 
override when no other mechanism to deduce the syntax (and including 
"text/plain" being a common situation).

When the server actively sends back JSON-LD, that RDFDataMgr call 
follows that.  The JSON-LD is reported as bad by jsonld-java.

So many ways things can go wrong!

RDFParser.create()
           .httpAccept(WebContent.contentTypeRDFXML)
           .source("http://viaf.org/viaf/32182557";)
           .parse(m);

> 
> Rob
> 
> On 16/12/2019, 09:24, "Andreas Kahl" <[email protected]> wrote:
> 
>      Hello everyone,
>      
>      I got this error while trying to load data from a URI to a Jena model:
>      http://viaf.org/viaf/32182557 (RDF-URL:
>      https://viaf.org/viaf/32182557/rdf.xml )
>      
>      2019-12-16 09:55:09 WARN  Spider:490 - Error parsing data from URI:
>      http://viaf.org/viaf/32182557
>      org.apache.jena.riot.RiotException: invalid term definition: empty key
>      for value 'http://viaf.org/viaf/terms#'
>          at
>      
> org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.error(ErrorHandlerFactory.java:140)
>          at
>      org.apache.jena.riot.lang.JsonLDReader.read$(JsonLDReader.java:162)
>          at
>      org.apache.jena.riot.lang.JsonLDReader.read(JsonLDReader.java:101)
>          at org.apache.jena.riot.RDFParser.read(RDFParser.java:352)
>          at org.apache.jena.riot.RDFParser.parseURI(RDFParser.java:321)
>          at org.apache.jena.riot.RDFParser.parse(RDFParser.java:295)
>          at
>      org.apache.jena.riot.RDFParserBuilder.parse(RDFParserBuilder.java:506)
>          at org.apache.jena.riot.RDFDataMgr.parseFromURI(RDFDataMgr.java:890)
>          at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:221)
>          at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:102)
>          at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:93)
>          at org.apache.jena.riot.RDFDataMgr.loadModel(RDFDataMgr.java:335)
>      
>      If I paste the rdf.xml to W3C's validator, it validates successfully.
>      (URL: source of https://viaf.org/viaf/32182557/rdf.xml ->
>      https://www.w3.org/RDF/Validator )
>      
>      Is there any setting that should be used in order to make Riot more
>      tolerant to this?
>      
>      The Jena version used is 3.13.1.
>      
>      Thanks for your advice.
>      
>      Best Regards
>      Andreas
>      
>      
>      
>      
>      
>      
> 
> 
> 
> 

Reply via email to