Skip to content

HttpLoader: Suppress HTTP Content-Type validation #132

@jmvanel

Description

@jmvanel

Feature request is related to a problem

I'm frustrated when a JSON-LD source has a linked @context whose MIME type is not one of the JSON expected types.
In this case it is a raw github URL, that says test/plain .
This, or a file, is very convenient to develop and debug a new @context .
Moreover, being explicitly loaded as a @context , is is supposed to be application/ld+json .
I deserves a warning for sure, but not a blocking exception.

scala> JsonLd.toRdf("https://geb.ffspeleo.fr/api/api/v2/").get()
com.apicatalog.jsonld.JsonLdError: There was a problem encountered loading a remote context [code=LOADING_REMOTE_CONTEXT_FAILED].
  at com.apicatalog.jsonld.context.ActiveContextBuilder.fetch(ActiveContextBuilder.java:523)
  at com.apicatalog.jsonld.context.ActiveContextBuilder.create(ActiveContextBuilder.java:173)
  at com.apicatalog.jsonld.expansion.ObjectExpansion.initLocalContext(ObjectExpansion.java:202)
  at com.apicatalog.jsonld.expansion.ObjectExpansion.expand(ObjectExpansion.java:101)
  at com.apicatalog.jsonld.expansion.Expansion.compute(Expansion.java:116)
  at com.apicatalog.jsonld.processor.ExpansionProcessor.expand(ExpansionProcessor.java:124)
  at com.apicatalog.jsonld.processor.ToRdfProcessor.toRdf(ToRdfProcessor.java:69)
  at com.apicatalog.jsonld.processor.ToRdfProcessor.toRdf(ToRdfProcessor.java:58)
  at com.apicatalog.jsonld.api.ToRdfApi.get(ToRdfApi.java:175)
  ... 31 elided
Caused by: com.apicatalog.jsonld.JsonLdError: Unsupported media type 'text/plain'. Supported content types are [application/ld+json, application/json, +json, application/n-quads]
  at com.apicatalog.jsonld.document.DocumentParser.fireUnsupportedMediaType(DocumentParser.java:99)
  at com.apicatalog.jsonld.document.DocumentParser.parse(DocumentParser.java:60)
  at com.apicatalog.jsonld.loader.HttpLoader.createDocument(HttpLoader.java:242)
  at com.apicatalog.jsonld.loader.HttpLoader.loadDocument(HttpLoader.java:202)
  at com.apicatalog.jsonld.loader.SchemeRouter.loadDocument(SchemeRouter.java:62)
  at com.apicatalog.jsonld.context.ActiveContextBuilder.fetch(ActiveContextBuilder.java:519)
  ... 39 more

Other JSON-LD engines

JENA (with jsonld-java) processes such JSON-LD source well :
$JENA/bin/riot --output=turtle --syntax=jsonld https://geb.ffspeleo.fr/api/api/v2/
The Playground also accepts such input:

{
  "@context": "https://raw.githubusercontent.com/jmvanel/Karstlink-ontology/master/geb.ffspeleo.fr_context.jsonld",
  "@graph": [
    {
      "@id": "321",
      "@type": "UndergroundCavity",
      "name": "Biefs Bousset",
      "latitude": "46.99406",
      "longitude": "6.07472",
      "altitude": "770",
      "locates": [
        {
          "@id": "628",
          "@type": "geo:Point",
          "label": "station_321-590",
          "dwc:Occurrence": [
            {
              "@id": "4278",
              "@type": "dwc:Occurrence",
              "event date": "2010-03-07",
              "associated taxa": "Amilenus aurantiacus",
              "dwci:toTaxon": "http://taxref.mnhn.fr/lod/taxon/337326/13.0"
            }
            ]
        }
      ]
    }
  ]  
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions