- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Sat, 19 Dec 2015 17:05:37 -0800
- To: Jindřich Mynarz <mynarzjindrich@gmail.com>
- Cc: public-linked-json@w3.org
- Message-Id: <62EB99DE-E7AA-4E6C-9AAF-4E0743AAEBE5@greggkellogg.net>
> 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/ <http://example.com/>", > "foaf": "http://xmlns.com/foaf/0.1/ <http://xmlns.com/foaf/0.1/>", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns# <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/ <http://example.com/>", > "foaf": "http://xmlns.com/foaf/0.1/ <http://xmlns.com/foaf/0.1/>", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns# <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 <http://www.w3.org/TR/json-ld/#sets-and-lists>), like the following? > > { > "@context": { > "ex": "http://example.com/ <http://example.com/>", > "foaf": "http://xmlns.com/foaf/0.1/ <http://xmlns.com/foaf/0.1/>", > "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns# <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 <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 <http://mynarz.net/#jindrich>
Received on Sunday, 20 December 2015 01:06:09 UTC