- From: David Booth <david@dbooth.org>
- Date: Tue, 22 Jul 2014 12:30:46 -0400
- To: public-linked-json@w3.org, public-rdf-comments <public-rdf-comments@w3.org>
This does not directly address your question, but . . . Don't do that! ;) Seriously, I'm sure you have your reasons for wanting to do that, but it violates what I would call "Well Behaved RDF": http://dbooth.org/2013/well-behaved-rdf/Booth-well-behaved-rdf.pdf I would strongly advocate that if you want to create that kind of structure in RDF, you should use different predicates for it -- not the rdf:first and rdf:last predicates. Then the problem goes away. David On 07/22/2014 05:21 AM, Andy Seaborne wrote: > We are encountering an issue when converting RDF Datasets to JSON-LD. > > The problem is with blank nodes that are shared between graphs and lists. > > In TriG (yes, this is a synthetic reduced test case that captures a > smaller example that might appear for real): > > --------------------- > # Bnode references across graph and lists > PREFIX : <http://www.example.com/> > PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > :G { > # Written in short form it would be: > # :z :q ("cell-A" "cell-B") > # but we want to share the tail ("cell-B") > > :z :q _:z0 . > > _:z0 rdf:first "cell-A" . > _:z0 rdf:rest _:z1 . > > _:z1 rdf:first "cell-B" . > _:z1 rdf:rest rdf:nil . > } > > :G1 { > # This references the tail ("cell-B") > :x :p _:z1 . > } > --------------------- > > The triple in :G1 references into the list in :G. > > But as we understand the conversion algorithm, section 4 only considers > each graph in turn and so does not see the cross graph sharing. > > Is this a correct reading of the spec text? > > Part 4 of the conversion algorithm has > "For each name and graph object in graph map: " > > so 4.3.3.* walks back up the list in one graph only. > > (Conversion generated by jsonld-java : it does not matter if compaction > is applied or not): > --------------- > { > "@graph" : [ { > "@graph" : [ { > "@id" : ":z", > ":q" : { > "@list" : [ "cell-A", "cell-B" ] > } > } ], > "@id" : ":G" > }, { > "@graph" : [ { > "@id" : ":x", > ":p" : { > "@id" : "_:b1" > } > } ], > "@id" : ":G1" > } ], > "@context" : { > "@base" : "http://www.example.com/", > "" : "http://www.example.com/", > "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > } > } > --------------- > > There is no _:b1 in :G to refer to because the algorith generated @list > and its implicit bNodes don't have labels. > This is a different dataset with no shared bNode. > > If it is all the same graph (s/:G1/:G/), the RDF dataset structure is > correctly serialized. > > Andy > > > >
Received on Tuesday, 22 July 2014 16:31:22 UTC