- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Mon, 24 Mar 2014 16:14:48 +0100
- To: <public-hydra@w3.org>
- Cc: "'Gregg Kellogg'" <gregg@greggkellogg.net>
Changing the subject line
On Friday, March 21, 2014 5:45 PM, Gregg Kellogg wrote:
> On Mar 21, 2014, at 7:52 AM, Markus Lanthaler wrote:
> > On Wednesday, March 19, 2014 10:44 PM, Gregg Kellogg wrote:
> >> </GreggKellogg> a foaf:Person;
> >> foaf:knows
> >> [a foaf:Person; is hydra:member of </GreggKellogg/colleagues>],
> >> </MarkusLanthaler> .
> >>
> >> <MarkusLanthaler> a foaf:Person .
> >
> > Hmm... I think this is a bit too clever and still creates a triple
> > that you don't want.
>
> The notation is clever, just because Turtle doesn't allow me to express
> this. The notation in JSON-LD is straightforward IMO.
I think I disagree. You point to a blank node which is only there to be
referenced by the collection (in contrast to point to the collection) that
you are actually looking for. That's a bit too much magic IMHO.
> The concept of indirecting through another resource is basically a
> property path; it may be sophisticated, but it avoids asserting
> unnecessary triples (at least with IRI subjects). It does create
> additional BNode-subject triples, but in the context of Linked Data,
> these can be seen as necessary "semantic glue", and are easily
> filtered.
Well, everything is "easily filtered".. it doesn't really matter whether
it's a blank node or not I'd say.
[...]
> > While I don't really like the specific blank node solution you are
> > proposing, I find the principle quite interesting. We could avoid the
> > blank node, and thus a triple we don't want, entirely but just
> > including a member of collection directly:
> >
> > {
> > "@context": {
> > "foaf": "http://xmlns.com/foaf/0.1/",
> > "hydra": "http://www.w3.org/ns/hydra/core",
> > "memberOf": { "@reverse": "hydra:member" }
> > },
> > "@id" "GreggKellogg",
> > "foaf:knows": {
> > "@id": "MarkusLanthaler,
> > "memberOf": "GreggKellogg/colleagues"
> > }
> > }
> >
> > WDYT?
>
> This would work fine, except for empty collections.
Good point!
> I would settle on
> this as a compromise if the BNode-based relationship I suggested is not
> palatable. Personally, I think the use of a BNode is a better call to
> dereference the memberOf relation to get values, whereas filling in on
> value might not make it clear that it is just a single representative
> member of such a collection.
I don't have a problem with the blank node per se but find the use of a
reverse property quite confusing in this instance. Maybe we should consider
creating a more explicit description of the collection instead. Something
along the lines of
"@id" "/GreggKellogg/colleagues",
"managing": {
"subject": "/GreggKellogg/",
"property": "foaf:knows"
},
"member": [
{ "@id": "/MarkusLanthaler" }
]
We could then even define a simple inference rule such as ?member =>
?subject ?property ?member
> Considered as a SPARQL query, the use of a BNode indirection is
> something like the following:
>
> SELECT ?member ?p ?o
> WHERE {
> </GreggKellogg> a foaf:Person .
> ?container hydra:member ?member .
> ?member ?p ?o .
> }
>
> Which has a certain appeal to me.
I'm not sure what you want to illustrate with this SPARQL query.. copy and
paste error?
> I'd like to hear other people's thoughts on the merits of a direct
> collection relationship vs. an indirect relationship, and the problem
> that asserting a Collection as the value of a property who's range is
> something else presents.
Me too. I'll send a separate mail to public-lod and public-vocabs (of course
cc'ing this group) to get more opinions.
--
Markus Lanthaler
@markuslanthaler
Received on Monday, 24 March 2014 15:15:27 UTC