- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Mon, 13 Oct 2014 19:04:27 +0200
- To: <public-hydra@w3.org>
On 10 Okt 2014 at 12:15, Dietrich Schulten wrote: > Am 10.10.2014 10:31, schrieb ☮ elf Pavlik ☮: >> On 10/10/2014 09:52 AM, Dietrich Schulten wrote: >>> Am 09.10.2014 09:33, schrieb ☮ elf Pavlik ☮: >>>> On 10/09/2014 07:17 AM, Dietrich Schulten wrote: >>>>> Properties like schema:review allow list or single values, >>>>> but normally that is represented by an item of the target >>>>> type or an array thereof. If I make the value of review a >>>>> link, it seems perfectly okay if the link dereferences a >>>>> Review or a Review[]. But can it point to a >>>>> hydra:Collection? >>>> have your read >>>> https://github.com/HydraCG/Specifications/issues/41 ? >>> >>> I did and from my understanding, the discussion seemed related to >>> my question but there was no agreement about the solution yet. I There is, and it is also noted in the issue. See https://github.com/HydraCG/Specifications/issues/41#issuecomment-48588100 RESOLVED: Introduce four new properties, namely hydra:collection , hydra:manages , hydra:subject , and hydra:object , to describe collections and associate them to entities. Declare it a best practice to inline the "manages block" in collection representations. So, to answer your question. Schema.org doesn't use rdfs:range but the weaker schema.org/rangeIncludes. The difference is that rangeIncludes is merely a hint about what a client might find whereas rdfs:range defines the type of the value. If review would have a rdfs:range of Review, then following document { "@id": "/product", "review": { "@id": "/xyz", "@type": "hydra:Collection" } } would actually be interpreted as { "@id": "/product", "review": { "@id": "/xyz", "@type": [ hydra:Collection", "Review" ] } } because a client infers that all values of the "review" property are of type "Review". This is the reason we had ISSUE-41. Schema.org, however, does *not* use rdfs:range and thus the first example above is completely fine. [...] > After looking at the use of fragment identifiers in the hydra vocab, > it seems a url with fragment identifier points to an object having an > @id with exactly that url with fragment identifier somewhere in a > surrounding object identified by the url without fragment identifier. Exactly. That's how it works. > So the problem seems to be that the array of reviews has no > identifier, for RDF the array is simply not there, rather it sees > repeated triples of > /products/1/reviews - member - review/1 > /products/1/reviews - member - review/2 Right. That's why we introduce as separate resource in between (the collection) so that we can reference it: /products/1 - review - /products/1/reviews /products/1/reviews - member - review/1 /products/1/reviews - member - review/2 As long as the client "understands" what a Hydra Collection is, everything is fine. There also exists a "purer" approach that works with all vocabularies. I'm going to explain that in a separate email in a couple of minutes. Cheers, Markus -- Markus Lanthaler @markuslanthaler
Received on Monday, 13 October 2014 17:05:02 UTC