- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Sun, 29 Sep 2013 18:59:32 +0200
- To: "'Ryan J. McDonough'" <ryan@damnhandy.com>
- Cc: "'Linked JSON'" <public-linked-json@w3.org>, <public-hydra@w3.org>
On Saturday, September 28, 2013 6:55 PM, Ryan J. McDonough wrote:
> Just following up on the HAL example. I've been taking a look at the
> HAL+JSON example here:
>
> http://stateless.co/hal_specification.html
>
> And I've been looking to see how this might be expressed in terms of
> JSON-LD. As I stated in my initial email, it seems that the "_embedded"
> property could be expressed as named graphs. Here's a sample I hacked
> up:
>
> {
> "@context": {
> "@vocab": "http://mashinator.io/2013/Linking#",
> "xsd": "http://www.w3.org/2001/XMLSchema#",
[...]
> },
> "@graph": [ {
> "_default" : {
[...]
> }, {
> "_embedded": {
[...]
> }
> } ]
> }
>
> I'm not so sure about the named graph labels, but I was merely trying
> to see how/if HAL could be expressed in JSON-LD.
This doesn't create two named graphs but puts two blank nodes, i.e., nodes
without an identifier, in the default graph. To create two named graphs, you
need a structure as follows:
{
"@context": ...,
"@graph": [
{
"@id": "named-graph-1",
"@graph": [
... contents of the named graph ...
]
},
{
"@id": "named-graph-2",
"@graph": [
... contents of the named graph ...
]
}
]
}
> As you've already
> pointed out, HAL's "_embedded" resource offers much value since this
> is easily handled in JSON-LD already. It's a little more compact than
> the HAL version with the added benefit of being able to provide more
> detail about what the properties mean. But again, my motivations here
> are to see who to bridge the gap between something like HAL and JSON-LD
> as to illustrate how one would be able migrate to JSON-LD and/or Hydra.
I'm not sure I would model this with named graphs. Why do you need to
separate the statements about the /orders node from the /orders/123? I would
simply model it as follows:
{
"@context": ...
"@id: "/orders",
"currentlyProcessing": 14,
"shippedToday": 20,
"next": "/orders?page=2",
"ea:find": { "template": "/orders{?id}" },
"ea:admin": [
{ "@id": "/admins/2", "title": "Fred" },
{ "@id": "/admins/5", "title": "Kate" }
],
"ea:order": [
{
"@id": "/orders/123",
"ea:basket": "/baskets/98712" ,
"ea:customer": "/customers/7809"
"total": 30.00,
"currency": "USD",
"status": "shipped"
},
{
"@id": "/orders/124",
"ea:basket": "/baskets/97213",
"ea:customer": "/customers/12369"
"total": 20.00,
"currency": "USD",
"status": "processing"
}
]
}
HTH,
Markus
--
Markus Lanthaler
@markuslanthaler
Received on Sunday, 29 September 2013 17:00:06 UTC