- From: Jindřich Mynarz <mynarzjindrich@gmail.com>
- Date: Sun, 20 Dec 2015 09:11:42 +0100
- To: public-linked-json@w3.org
- Message-ID: <CAE=8Bu8x_zJ9UF9ELVyEZeDjPdhtKVCZFCg08rh=Gg-K7rnGpg@mail.gmail.com>
Hi Gregg, thanks for your suggestion. I was able to reproduce it with http://rdf.greggkellogg.net/distiller. However, why do you need to change the input JSON-LD? I tried to follow the same procedure with my JSON-LD provided with the @context, but I ended up with rdf:first and rdf:rest instead of @list. Is there a problem in my @context? - Jindřich On Sun, Dec 20, 2015 at 2:05 AM, Gregg Kellogg <gregg@greggkellogg.net> wrote: > On Dec 19, 2015, at 9:56 AM, Jindřich Mynarz <mynarzjindrich@gmail.com> > wrote: > > Hi, > > is it possible to compact rdf:Seq? > > For example, let's have this JSON-LD: > > { > "@graph": [{ > "ex:list": "_:b1" > }, { > "@id": "_:b1", > "rdf:first": "_:b2", > "rdf:rest": "_:b3" > }, { > "@id": "_:b2", > "foaf:name": "Alice" > }, { > "@id": "_:b3", > "rdf:first": "_:b4", > "rdf:rest": "rdf:nil" > }, { > "@id": "_:b4", > "foaf:name": "Bob" > }] > } > > We try to compact it with this context: > > { > "@context": { > "ex": "http://example.com/", > "foaf": "http://xmlns.com/foaf/0.1/", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", > "ex:list": {"@container": "@list", > "@type": "@id"}, > "rdf:first": {"@type": "@id"}, > "rdf:rest": {"@type": "@id"} > } > } > > JSON-LD playground (jsonld.js) returns the following: > > { > "@context": { > "ex": "http://example.com/", > "foaf": "http://xmlns.com/foaf/0.1/", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", > "ex:list": { > "@container": "@list", > "@type": "@id" > }, > "rdf:first": { > "@type": "@id" > }, > "rdf:rest": { > "@type": "@id" > } > }, > "@graph": [ > { > "ex:list": [ > "_:b1" > ] > }, > { > "@id": "_:b1", > "rdf:first": "_:b2", > "rdf:rest": "_:b3" > }, > { > "@id": "_:b2", > "foaf:name": "Alice" > }, > { > "@id": "_:b3", > "rdf:first": "_:b4", > "rdf:rest": "rdf:nil" > }, > { > "@id": "_:b4", > "foaf:name": "Bob" > } > ] > } > > Is it possible to get to a compact representation of rdf:Seq ( > http://www.w3.org/TR/json-ld/#sets-and-lists), like the following? > > { > "@context": { > "ex": "http://example.com/", > "foaf": "http://xmlns.com/foaf/0.1/", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", > "ex:list": { > "@container": "@list", > "@type": "@id" > }, > "rdf:first": { > "@type": "@id" > }, > "rdf:rest": { > "@type": "@id" > } > }, > "@graph": [ > { > "ex:list": [ > "_:b2", "_:b4" > ] > }, > { > "@id": "_:b2", > "foaf:name": "Alice" > }, > { > "@id": "_:b4", > "foaf:name": "Bob" > } > ] > } > > > You can do much of what you want by going through RDF. If you turn the > original input into N-Quads, and then serialize that back to JSON-LD you’ll > get an @list. They playground doesn’t show N-Quads to JSON-LD, but you can > do this through my Distiller (http://rdf.greggkellogg.net/distiller). I > modified your input a bit: > > { > "@context": { > "ex": "http://example.com/", > "foaf": "http://xmlns.com/foaf/0.1/", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > }, > "@graph": [{ > "ex:list": {"@id": "_:b1"} > }, { > "@id": "_:b1", > "rdf:first": {"@id": "_:b2"}, > "rdf:rest": {"@id": "_:b3"} > }, { > "@id": "_:b2", > "foaf:name": "Alice" > }, { > "@id": "_:b3", > "rdf:first": {"@id": "_:b4"}, > "rdf:rest": {"@id": "rdf:nil"} > }, { > "@id": "_:b4", > "foaf:name": "Bob" > }] > } > > If you transform from JSON-LD to RDF and then serialize back to JSON-LD > you get the following: > > { > "@context": { > "foaf": "http://xmlns.com/foaf/0.1/" > }, > "@graph": [ > { > "@id": "_:b0", > "http://example.com/list": { > "@list": [ > { > "@id": "_:b2" > }, > { > "@id": "_:b4" > } > ] > } > }, > { > "@id": "_:b2", > "foaf:name": "Alice" > }, > { > "@id": "_:b4", > "foaf:name": "Bob" > } > ] > } > > To improve further requires framing, but not that it is using the @list > shorthand. You can use the playground with your context to get the > following: > > { > "@context": { > "ex": "http://example.com/", > "foaf": "http://xmlns.com/foaf/0.1/", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", > "ex:list": { > "@container": "@list", > "@type": "@id" > }, > "rdf:first": { > "@type": "@id" > }, > "rdf:rest": { > "@type": "@id" > } > }, > "@graph": [ > { > "@id": "_:b0", > "ex:list": [ > "_:b2", > "_:b4" > ] > }, > { > "@id": "_:b2", > "foaf:name": "Alice" > }, > { > "@id": "_:b4", > "foaf:name": "Bob" > } > ] > } > > Gregg > > - Jindřich > > -- > Jindřich Mynarz > http://mynarz.net/#jindrich > > >
Received on Sunday, 20 December 2015 08:12:31 UTC