W3C home > Mailing lists > Public > public-json-ld-wg@w3.org > June 2019

Relative URI references: interoperability problems

From: Graham Klyne <gk@ninebynine.org>
Date: Mon, 10 Jun 2019 12:39:32 +0100
Message-ID: <5CFE4174.1080802@ninebynine.org>
To: public-json-ld-wg@w3.org
CC: Graham Klyne <gklyne@gmail.com>
(Now that I've discovered this list, I'll mention a long-standing problem I've 
encountered...)

I'm using JSON-LD as a native storage format for a "linked data notebook" I've 
been working on (http://annalist.net).  One feature that's important for my use 
is portability of data between different server deployments, so I use relative 
URI references when defining @base and @context URIs;  e.g.

```
{
   "@context": [
     {
       "@base": "../../"
     },
     "../../coll_context.jsonld"
   ],
   "@id": "Place_merged/Opole_P",
    :
}
```

(Excerpt from 
https://demo.annalist.net/annalist/c/EMPlaces_defs/d/Place_merged/Opole_P/entity_data.jsonld, 
which is underlying data for 
https://demo.annalist.net/annalist/c/EMPlaces_defs/d/Place_merged/Opole_P/)

This allows me to save data collections in GitHub, and load them into a local or 
online deployment of my software as working conditions may require. (e.g. 
https://github.com/gklyne/EMPlaces_defs.)

(Here, things may get a bit hazy, because I'm reporting from memory a problem 
encountered some time ago...)

The above data is parsed fine by the Python rdflib libraries (and re-serializes 
as expected Turtle using same at 
https://demo.annalist.net/annalist/c/EMPlaces_defs/d/Place_merged/Opole_P/entity_data.ttl). 
  But when another developer tried to read and parse my JSON-LD data (I think it 
was with a Node library) they were unable to access the context file.

The problem, as I recall, was different handling of the external context URI 
Reference by the different libraries, particularly with respect to whether it 
was interpreted relative to the referring document URI, or relative to the 
previously declared "@base" URI.  At the time, I dug into the (JSON-LD 1.0) spec 
to try and find a definitive interpretation of how such a relative reference 
should be handled, and basically failed to find something I could use.  So I 
just went with what works in the library I'm using.

(The workaround adopted so far has been to generate Turtle, and have other 
developers read that.)

#g
--
Received on Monday, 10 June 2019 11:42:08 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:15:26 UTC