Web Linking in JSON-LD

In looking at a number lot of JSON-based hypermedia formats such as HAL [1], 
Collection+JSON [2], and JSON Schema [3], it seems there's a greater focus on describing 
link relationships and not as much effort on describing the data. There is a lot of 
activity and usage around these formats. It also seemed that all of these formats could 
be expressed through JSON-LD as well. 

I tried to take a stab some at a context that borrows some ideas from all three formats 
for a URI Template validation  service I'm working on. I started with JSON Schema, but 
now looking at JSON-LD more and more. My first pass at a "Linking" context is here:

http://mashinator.io/2013/Linking

And here's a rough example:

{
    "@context": "http://mashinator.io/2013/Linking",
    "@id": "http://uri-templates.herokuapp.com/uriTemplate",
    "links": [
        {
            "href": "http://uri-templates.herokuapp.com/schema/uriTemplateStructure",
            "rel": "describedBy",
            "method": "GET",
            "type": "application/schema+json"
        },
        {
            "template": "http://uri-templates.herokuapp.com/uri-template{?template}",
            "method": "GET",
            "rel": "self",
            "enctype": "application/www-form-urlencoded",
            "type": "application/json"
        }
    ],
    "error": {
        "title": "An error happened",
        "code": "1234",
        "message": "it was kinda bad. "
    }
}

It's wicked half baked at the moment and probably has other issues I haven't thought of 
yet. A few things came to mind while hacking this together:

* In JSON-LD, the @id should be a dereferencable IRI. In that case, would one need a property like "href" on a 
  Link, when you could just use @id? I think probably not, but I'm not entirely sure.

* HAL uses the "_embedded" property and Collection+JSON uses terms like "collection" and "items". Obviously 
  both of these values can be modeled in JSON-LD, but it seems more efficient to use some type of @container

* When I look at HAL through RDF glasses, I see two named graphs: once containing the data and the other 
  containing the control information. 

I'm planning on taking these further as I think there's been a lot of great ideas 
presented in all three of these formats, but I'd like to see them all play nicely within
JSON-LD. I'd appreciate any feedback on this as I'm still new to JSON-LD, but have a good
deal of time with RDF.

Ryan-
http://damnhandy.com

[1] http://stateless.co/hal_specification.html
[2] http://amundsen.com/media-types/collection/format/
[3] http://json-schema.org

Received on Thursday, 26 September 2013 16:21:52 UTC