- From: Pat Hayes <phayes@ihmc.us>
- Date: Fri, 5 Jul 2013 23:27:38 -0500
- To: Gregg Kellogg <gregg@greggkellogg.net>
- Cc: Markus Lanthaler <markus.lanthaler@gmx.net>, <public-rdf-wg@w3.org>, <public-linked-json@w3.org>, "'Andy Seaborne'" <andy@apache.org>
On Jul 5, 2013, at 11:49 AM, Gregg Kellogg wrote: > > Gregg Kellogg > gregg@greggkellogg.net > > On Jul 5, 2013, at 4:02 AM, Markus Lanthaler <markus.lanthaler@gmx.net> wrote: > >> CC'ing public-linked-json as this discussion might result in a change to the >> algorithms and may help the OpenAnnotation people. >> >> >> On Thursday, July 04, 2013 10:21 PM, Andy Seaborne wrote: >>> The set of all heads of well-formed lists can be found quite easily. >>> >>> All lists have a common tail (rdf:nil). Just walk back up the list >>> checking nodes have exactly one rdf:first and one rdf:next triple. >>> This generates the list head. >> >> You are of course right and the necessary changes to the algorithm should be >> quite small. >> >> Currently a @list can never be the value of a rdf:first/rdf:rest. This kind >> of ensures that only "complete" lists are transformed to @list and that we >> don't produce lists of lists in JSON-LD. >> >> An example might clarify what I mean. Currently we would never produce >> something like >> >> { >> "@id": "http://example.com/", >> "rdf:first": "A", >> "rdf:rest": { "@list": [ "B", "C", "D" ] } >> } >> >> all the list bnodes would be preserved: >> >> [ >> { >> "@id": "http://example.com/", >> "rdf:first": "A", >> "rdf:rest": { "@list": [ "B", "C", "D" ] } >> }, >> { >> "@id": "_:b0", >> "rdf:first": "B" >> "rdf:rest": { "@id": "_:b1" } >> }, >> ... >> ] >> >> >> Arguably changing that would result in a nicer result. This might also be a >> quite elegant solution for the OpenAnnotation people. I think we could >> threat this change as an algorithmic bug fix (meaning, no need for another >> LC). >> >> I've created ISSUE-277 for this: >> https://github.com/json-ld/json-ld.org/issues/277 >> >> >> Thoughts? > > (From my comment on the issue:) > > The @id of the first object can't be "http://example.com/", surely? To be a list, the subject must be a BNode. That is true in Turtle but not in RDF, which imposes no restrictions on the use of the first/rest/LIst vocabulary. Just sayin'. Pat > > It also makes sense that @list can be the value of rdf:rest (and perhaps rdf:first, as well). The algorithm would find the list head at the first node having rdf:first/rest with only single well-formed values, as it does now; this should include those for which the subject is a non-well-formed value of an rdf:rest. > > An example @afs and I were working on offline is more like the following: > > Turtle: > > @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . > @prefix : <http://example/> . > > :x :list _:a . > > _:a rdf:first 1 . > _:a :additional "foo" . > _:a rdf:rest _:b . > > _:b rdf:first 2 . > _:b rdf:rest _:c . > > _:c rdf:first 3 . > _:c rdf:rest rdf:nil . > > JSON-LD: > > { > "@context": {...}, > "@id": "_:x", > "list": { > "additional": "foo", > "rdf:first": 1, > "rdf:rest: {"@list": [2, 3]} > } > } > > Gregg > >> -- >> Markus Lanthaler >> @markuslanthaler >> >> > > > ------------------------------------------------------------ IHMC (850)434 8903 or (650)494 3973 40 South Alcaniz St. (850)202 4416 office Pensacola (850)202 4440 fax FL 32502 (850)291 0667 mobile phayesAT-SIGNihmc.us http://www.ihmc.us/users/phayes
Received on Saturday, 6 July 2013 04:28:14 UTC