- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Sat, 29 Mar 2014 22:41:44 +0100
- To: "'john.walker'" <john.walker@semaku.com>
- Cc: <public-hydra@w3.org>, <public-lod@w3.org>, "'W3C Web Schemas Task Force'" <public-vocabs@w3.org>
On Thursday, March 27, 2014 10:19 AM, john.walker wrote: > > March 27, 2014 9:49 AM Gregg Kellogg wrote: > > > That's an interesting idea; in a JSON-LD representation, it might > > > look like the following: > > > > > > { > > > "@id": "/markus", > > > "@type": "schema:Person", > > > "rdfs:seeAlso": { > > > "@id": "/markus/friends", > > > "foaf:primaryTopic": "schema:knows" > > > } > > > } > > > > > > { > > > "@id": "/markus/knows", > > > "@type": "hydra:Container", > > > "hydra:member": "/gregg" > > > } > > > > > > The only problem I see from a Linked Data perspective is that > > > </markus/friends> appears to be defined in the </markus> node definition, > > > so it wouldn't be obvious that you would do a further redirection to get > > > the container. > > Based on AAA assumption, would it be wrong to assume that just because > </markus/friends> is the subject of some triples in </markus> > resource, that I would not get additional information by following the > link? Yes, it would. In general, the only authoritative representation of a resource is the one you retrieve by dereferencing its URL. So you should also look there. > For example in the friends list, I would expect it is reasonable and > useful to include the foaf:name of all the people you know so you can > present these to the user without having to follow each of those links > individually to fetch the persons name. Yep, that's actually a best practice as Niklas explained already in a different thread. > In fact doing this kind of flexible denormalization in the data > publishing layer is one of the strong points of RDF and Linked Data > IMHO. Sticking to a world view where data is only published in > normalized form is losing a lot of useful points. > > In the above example, I would expect the use of rdfs:seeAlso gives a > strong hint to the user agent to follow that link, plus including some > info about that resource gives a hint of what you can expect to find > there. Right > > Sorry, I have no knowledge of Hydra. > > My though was to skip the container completely and only serve > > a bunch of raw > > </markus> schema:knows [] . > > triples from </markus/friends> or the redirection target </markus/friends.rdf> > > > > Paging seems like overkill but I guess it could be necessary in other > > situations. > > > > Tore > > Based on the JSON-LD example from Markus, what seems logical for me is > as follows. I minted a new hydra:relation property that tells you by > which property the primary topic of the list is linked to the members > by. > > { > "@id": "/markus", > "@type": "schema:Person", > "rdfs:seeAlso": { > "@id": "/markus/friends", > "@type": "hydra:Container", > "foaf:primaryTopic": "/markus", > "hydra:relation": "schema:knows" > } > } > > { > "@id": "/markus/friends", > "@type": "hydra:Container", > "rdfs:label": "List of Markus' friends" , > "foaf:primaryTopic": "/markus", > "hydra:relation": "schema:knows" , > "hydra:member": [ > { "@id": "/gregg" }, > { "@id": "/bill" } > ] > } > > So with appropriate inference rules you could entail that markus knows > gregg and bill, or also just state these triples explicitly in the > friends list. > > When Markus is a very popular guy the list can also be paginated. > > Hope that makes sense. Yes it does. It is, however, "just" a variation of Niklas' proposal... however with more commonly known properties. -- Markus Lanthaler @markuslanthaler
Received on Saturday, 29 March 2014 21:42:20 UTC