W3C home > Mailing lists > Public > public-hydra@w3.org > June 2014

RE: Specifying both item's @id and @value for collections

From: Markus Lanthaler <markus.lanthaler@gmx.net>
Date: Thu, 26 Jun 2014 14:19:39 +0200
To: <public-hydra@w3.org>
Message-ID: <024d01cf9138$e746d9d0$b5d48d70$@gmx.net>
Hi Vagif,

On Wednesday, June 25, 2014 3:35 PM, Vagif Abilov wrote:
> I have a list of items ("interests") as a part of a JSON-LD document:
> 
> {
>     "@context": {
>       "@base": "http://localhost/",
>       "name": "http://localhost/name",
>       "interests": "http://localhost/interests",
>       "items": {
>         "@id": "http://localhost/interest",
>         "@container": "@list"
>       }
>     },
>     "@id": "http://localhost/john",
>     "name": "John",
>     "interests": {
>       "@context": {
>         "@base": "http://localhost/",
>         "items": {
>           "@id": "http://localhost/interest",
>           "@container": "@list"
>         }
>       },

There's no need to repeat the context here. You already have it in the top-level object.


>       "@id": "http://localhost/john/interests",
>       "@type": "http://localhost/array",
>       "items": [ "Reading", "Writing" ]

Since you are posting this to Hydra's list, you should probably use hydra:Collection and hydra:member instead of localhost:array and localhost:items... but you probably know that already :-)


>     }
>   }
> 
> My challenge is that I want to enrich "items" element with node id for
> each individual interest, something like this:
> 
> {
>     "@context": {
>       "@base": "http://localhost/",
>       "name": "http://localhost/name",
>       "interests": "http://localhost/interests",
>       "items": {
>         "@id": "http://localhost/interest",
>         "@container": "@list"
>       }
>     },
>     "@id": "http://localhost/john",
>     "name": "John",
>     "interests": {
[ removed redundant context]
>       "@id": "http://localhost/john/interests",
>       "@type": "http://localhost/array",
>       "items": [
>         {
>           "@id": "http://localhost/123",
>           "@value": "Reading"
>         },
>         {
>           "@id": "http://localhost/456",
>           "@value": "Writing"
>         }
>       ]
>     }
>   }
> 
> Unfortunately this approach doesn't work because @value can not be
> combined with @id in a JSON-LD node. I wonder if there is a way to
> attach a node id to a container element of a primitive type, e.g. I
> would like to keep "items" element values as strings without wrapping
> them in a new structure. I thought I could do this with @value
> specifier, but it doesn't work.

Could you please exaplain why you want to do that? If it is a primitive type, than why does it also need to have an IRI? Isn't the value itself enough? Perhaps what you really have in mind is to give that IRI a label that will be used in the user interface!? In that case, you could use something like rdfs:label, hydra:title, schema:name


--
Markus Lanthaler
@markuslanthaler
Received on Thursday, 26 June 2014 12:20:09 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 15:53:59 UTC