- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Sun, 22 Feb 2015 20:43:28 +0100
- To: <public-hydra@w3.org>
On 16 Feb 2015 at 10:47, Dietrich Schulten wrote: > I want to re-phrase my proposal because my previous attempt appears to > cause misunderstandings. > > This is not only a reply to Andrew, I'd like to ask everybody to > consider my proposal. Thanks for bringing this discussion back to the topic and making a concrete proposal. > My proposal is: > > 1. Use hydra:Collection not as a container but as a descriptor, i.e. > keep the actual items outside of the hydra:Collection object and make > them direct values of the property they belong to. Drop hydra:member. So you have a collection without members? [...] > 5. In order to say things about the collection directly in the context > of the collection response, we must use something else but the > collection response body, because the body contains just items and there > is nothing to attach additional properties to the collection. Not sure I follow. In the body is what you put there. So why is there "nothing to attach additional properties"? > Example responses illustrating my proposal: > >> >> // server embeds a collection of people Alice knows >> { >> "@id": "/alice", >> "foaf:name": "Alice", >> "foaf:knows": [ >> {"@id":"/bob", "foaf:name": "Robert Rumbaugh"}, >> {"@id":"/zelda", "foaf:name": "Zelda Zackney"} >> ], >> "collection": [ >> { >> "@id": "/alice/friends", >> "@type": "Collection", >> "manages": { >> "property": "foaf:knows", >> "subject": "/alice" >> }, >> "search" : ... an iritemplate, >> "operation" : ... supportedOperations on /alice/friends >> ] >> } Apart from the missing hydra:member relationship this is exactly what we currently have. >> // server points to external resource with offset/limit >> { >> "@id" : "/alice" >> // plain link to friends: >> "foaf:knows" : { "@id": "/alice/friends" }, >> // saying things about the management of /alice/friends: So /alice/friends is intentionally a foaf:Person and a hydra:Collection at the same time? I say intentionally as you explicitly mentioned > 3. Let the list of items be a plain list without surrounding container > because such a container around the items causes problems in the RDF > model. ("/alice foaf:knows hydra:Collection" makes RDF tools think that > the hydra:Collection is a foaf:Person because foaf:knows defines that > its values are foaf:Person) >> "collection": [ >> { >> "@id": "/alice/friends", >> "@type": "Collection", >> "manages": { >> "property": "foaf:knows", >> "subject": "/alice" >> }, >> "partial": { >> "@type": "IriTemplate", >> "template": /alice/friends{?offset,limit} >> "mapping": [ >> { >> "@type": "IriTemplateMapping", >> "variable": "offset", >> "property": "hydra:offset" How is hydra:offset defined? >> }, >> { >> "@type": "IriTemplateMapping", >> "variable": "limit", >> "property": "hydra:limit", How is hydra:limit defined? >> } >> ] >> } >> } >> } > >> The target resource returned from /alice/friends is a json-ld set of >> foaf:Person, not a hydra:Collection. What's the advantage of that? > The response has the following link header to point to the > next page. > > Header: > Link: <http://example.com/alice/friends?page=2>; rel="next" > Body: >> [ >> {"@id":"/bob", >> "@type": "http://xmlns.com/foaf/0.1/Person", >> "http://xmlns.com/foaf/0.1/name": "Robert Rumbaugh" >> }, >> {"@id":"/zelda", >> "@type": "http://xmlns.com/foaf/0.1/Person", >> "http://xmlns.com/foaf/0.1/name": "Zelda Zackney" >> } >> ] How would a client know that /alice foaf:knows /zelda ? Should it infer that? Based on what information? -- Markus Lanthaler @markuslanthaler
Received on Sunday, 22 February 2015 19:43:59 UTC