RE: How to avoid that collections "break" relationships (ISSUE-41) (was: hydra:Link)

On Monday, May 12, 2014 8:15 PM, Gregg Kellogg wrote:
> This topic's been quiet for a while, but for me, resolving this is pretty
much my top priority.
> At this point, I think there are two basic solutions:
> 
> 1) Use a separate _collection property_, which has some semantic
relationship to the base
> property, where the range is specifically a collection.  For example:
> 
>       </gregg> a foaf:Person; :knowsCollection </gregg/knowsCollection> .
>       :knowsCollection :collectionPropertyFor foaf:knows .

Interesting.. so you would set the link from knowsCollection to knows and
not vice-versa? What about asserting it on a, what we currently call,
SupportedProperty?


>   Then the collection can reference each member and re-assert the
relationship
> 
>       </gregg/knowsCollection> a hydra:Collection;
>         hydra:member </markus> .
>       </gregg> foaf:knows </markus> .
> 
> 2) In a separate email, @lanthaler described an alternate using an
intermediate object, such
> as the following:
> 
>       </gregg> a foaf:Person;
>         :hasRelationshipIndirector [foaf:knows </gregg/knowsCollection>] .
> 
>   This could then reference the same type of collection I described above.
It sort of breaks
> foaf:knows, except it does so on a blank resource, which could have some
_catch-all_
> semantic description, and it at least does not mess up the definition of
the primary Person
> resource.
> 
> I see many advantages to the 2nd proposal, but would really like to see
this more actively
> discussed.

I would also like to hear more opinions on this. I think it has a number of
advantages but, as Gregg points out, it is a bit weird from a semantical
point of view.

There's also a third option which would be somewhat similar to what LDP
does. Namely assert what subject-property pair the collection is managing.
Something like

    </gregg/knowsCollection> :manages [
       :subject  </gregg/> ;
       :property foaf:knows
    ] .

The link to the collection can then be done by something very generic such
as rdf:seeAlso.

Last but not least, for some vocabularies (most notably Schema.org) simply
sticking to the current approach would work as well but introduces an
undesired triple unless you remove it when you ingest the data

    </GreggKellog> schema:knows </gregg/knowsCollection>


Gregg, at this stage, what would be your preferred approach?


--
Markus Lanthaler
@markuslanthaler

Received on Monday, 12 May 2014 20:16:04 UTC