- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Thu, 15 May 2014 11:21:18 -0700
- To: Markus Lanthaler <markus.lanthaler@gmx.net>
- Cc: public-hydra@w3.org
On another use case for collections, and the relationship to the referencing entity, I commonly use the same Collection subclass to manage members from either direction. For example, I might use a sub-class of Collection ArticleCollection, whose members are Articles referenced from something. I use the same ArticleCollection from the Article entity using a reverse property, to collect all of the things that the Article might be about (e.g., SFGiants and Buster Posey). If we use the :manages entity, as suggested, rather than using :subject, to identify the common subject of all members, I would use :object, to represent the common object of all members. The two collections might look like the following: </giants/articles> a :ArticleCollection; :manages [:subject </giants>; :property :article]; :member </articles/1>, </articles/2>, </articals/3>, ... </giants> :article </articles/1> . </giants> :article </articles/2> . ... From the other side, it might look like this: </articles/1/abouts> a ArticleCollection; :manages [:object </articles/1>; property :article]; :member </giants>, </BusterPosey>, ... </giants> :article </articles/1> . </BusterPosey> :article </articles/2> . Gregg Kellogg gregg@greggkellogg.net On May 14, 2014, at 12:17 PM, Markus Lanthaler <markus.lanthaler@gmx.net> wrote: > On Wednesday, May 14, 2014 12:49 AM Gregg Kellogg wrote: >> On May 13, 2014, at 11:22 AM, Markus Lanthaler wrote: >>>>> </gregg/knowsCollection> :manages [ >>>>> :subject </gregg/> ; >>>>> :property foaf:knows >>>>> ] . >>>> In your example, the seeAlso would presumably directly reference the >>>> collection, but would need to extract some useful properties of that >>>> collection, perhaps like this: >>>> >>>> </gregg> a foaf:Person; >>>> rdfs:seeAlso </gregg/friends> . >>>> </gregg/friends> a hydra:Collection; >>>> :manages [ >>>> :property foaf:knows; >>>> :subject </gregg> >>>> ] . >>> >>> That's indeed what I had in mind. >> >> So as not to bring in semantics from VOID, and potentially further > complicate Hydra, I >> think your :manages proposal is probably the most effective. > > The only thing I'm not entirely happy about yet is the usage of rdfs:seeAlso > as I find it too vague. Granted, the definition of rdfs:seeAlso fits quite > well (see below) but the way it is used in practice doesn't really reflect > this IMO. > > "rdfs:seeAlso is an instance of rdf:Property that is used to indicate a > resource > that might provide additional information about the subject resource. > > A triple of the form S rdfs:seeAlso O states that the resource O may > provide > additional information about S. It may be possible to retrieve > representations > of O from the Web, but this is not required. When such representations > may > be retrieved, no constraints are placed on the format of those > representations. > > The rdfs:domain of rdfs:seeAlso is rdfs:Resource. The rdfs:range of > rdfs:seeAlso > is rdfs:Resource. > > So I'm a bit on the fence. What are your thoughts on this? What about > something like a hydra:moreData or hydra:moreInformation property which > would be a sub-property of rdfs:seeAlso. Shall we require its values to be > dereferenceable, i.e., set its range to hydra:Resource and thus make it a > hydra:Link? > > >> Now, how to describe that in >> Hydra, so that a client looking for foaf:knows relationships will follow > the sameAs links, or >> do you think that's baked in so that _all_ Collection indirections are > down through >> rdf:seeAlso? Is there still a notion that foaf:knows, in some sense, is a > SupportedProperty, >> or perhaps an IndirectSupportedProperty? Maybe the Constraint/propertyPath > description >> handles this. > > That's a very good point. I think it still is a SupportedProperty because in > the collection members you use that property. I think what we really need to > think about is whether we need to separate the enumeration of supported > properties of a class in general and the constraints that apply when a class > is used in "expects". The assumption I made in the beginning was that, > within a single Web API, a class is always used the same way when it appears > in "expects" (and that it only appears in one or very few operations' > "expects" property). I'm not so sure about that anymore. > > Regarding your second question: yes, I do think that the Constraints design > we talked about previously helps in this regard but just if it is for > sending data. I haven't really thought about the reading/finding data case > enough yet. Do we really need to express this upfront? Can we expect the > client to find it itself? Or does this introduce too much complexity on the > client side? I have to thinker about that a bit more. What are your > thoughts? > > > -- > Markus Lanthaler > @markuslanthaler > >
Received on Thursday, 15 May 2014 18:21:48 UTC