Re: How to avoid that collections "break" relationships

The conversation split between just the Hydra mailing list, and the wider mailing list including Web Schemas and LOD.

In my opinion, we have a way forward: For a generic Hydra interface use a rdfs:seeAlso predicate to reference a void:Linkset annotated with the predicate it relates to (based on Niklas' suggestion). For example, the example we've been using might be described as follows:

</markus> a foaf:Person;
  rdfs:seeAlso [
    a void:Linkset;
    void:subjectsTarget </markus>;
    void:objectsTarget </markus/friends>;
    void:linkPredicate foaf:knows
  ] .

The resource at </markus/friends> is a hydra:Collection, but also contains triples that assert the individual foaf:knows relations:

</markus/friends> a hydra:Collection; hydra:member </gregg>, ...
</markus> foaf:knows </gregg> .

In a schema.org variety, this might simply be done with a more direct relationship:

</markus> a schema:Person; rdfs:seeAlso </markus/friends> .
</markus/friends>  schema:about schema:knows .

Then in the </markus/friends> resource:

</markus/friends> a schema:ItemList; schema:itemListMember </gregg>, ...
</markus> schema:knows </gregg> .

In the first (pure) example, the void:Linkset specifically relates subects in </markus> with objects in </markus/friends> using the foaf:knows predicate. An API client would know to dereference the </markus/friends> if it is interested in following foaf:knows relationships.

In the second example, a client knows which of possibly several rdfs:seeAlso relationships are follow because each object is described as being "about" whatever the predicate used within the ItemList uses. It's less accurate than the void:Linkset, but seems more in keeping with the simplicity of schema.org. A schema:seeAlso predicate might also be useful.

Gregg Kellogg
gregg@greggkellogg.net

On Mar 25, 2014, at 11:55 AM, Vuk Milicic <vuk.milicic@eurecom.fr> wrote:

> Markus,
> 
>> OK.. this is quite similar to what we discussed in the Hydra CG (and what
>> LDP does):
>> 
>>    </markus> a schema:Person ;
>> 
>>    </markus/friends/>:manages [
>>       :subject </markus> ;
>>       :property schema:knows
>>    ] ;
>> 
>> The thing I don't really like with these approaches is that you have to peek
>> into the container to find out whether it contains/manages the information
>> you are interested in.
> 
> Conceptually, </marcus/friends> is not a container, but a class -- my point from the beginning.
> That RDF is basically equivalent to what I wrote in [1] using OWL, why reinventing the wheel?
> 
> [1] http://lists.w3.org/Archives/Public/public-lod/2014Mar/0111.html
> 
> -
> Vuk MIilcic
> @faviki

Received on Friday, 28 March 2014 20:16:21 UTC