Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-1378

RDFDataMgr does not perform conneg when reading remote RDF resources

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Jena 3.4.0
    • Jena 3.5.0
    • ARQ
    • None

    Description

      In the past, I have been able to use RDFDataMgr.read(Graph, String) to fetch vocabularies like so:

      final Graph graph = Factory.createDefaultGraph();
      RDFDataMgr.read(graph, "http://purl.org/dc/terms");

      This no longer works in 3.4.0. The error is:

      org.apache.jena.riot.RiotException: Failed to determine the content type: (URI=http://purl.org/dc/terms/ : stream=text/html)

      The key thing about these remote resources is that they involve content negotiation in order to get to the RDF serialization; otherwise an HTML page is returned that cannot be parsed by RIOT.

      Adding a Lang attribute to the read() function does not help.

      This appears to be due to the RDFParser library not including an Accept header in the HTTP request to the remote resource: https://git.io/v7sTV

      Perhaps a good solution would be to provide a default accept header ("text/turtle, application/rdf+xml, application/ld+json") or, even better, that accept header could be configurable by a client.

      A work-around for me is to just use the HttpOp.execHttpGet function directly, but it would be nice if this functioned as it once did.

      Attachments

        Issue Links

          Activity

            People

              andy Andy Seaborne
              acoburn Aaron Coburn
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: