On 03/31/2014 08:48 AM, Ruben Verborgh wrote:
</people/markus> foaf:knows [ hydra:memberOf </people/markus/friends> ].
means “Markus knows somebody who is a member of collection X".
But that's not what this says. It says that Markus knows some entity that is
related by an unknown relationship to some unknown other entity.
Well, obviously we'd have to define the hydra:memberOf predicate…
It's not helpful to interpret "foaf:knows" as "knows"
but "hydra:memberOf" as "unknown relationship”.
In this case it certainly is. You want to depend on a particular reading of
this non-RDF predicate, and have this reading trigger inferences. A system
that only uses the RDF semantics will have no knowledge of this extra
semantics and will thus not perform these essential inferences.
Yes, when one is being totally formal one should not change from foaf:knows to
knows, but there is no formal fallout from this shadiness.
And “unknown entity” is intended; this is why you have to fetch it if you're
curious.
If you want more semantics, just add them:
</people/markus/friends> :isACollectionOf [
:hasPredicate foaf:knows;
:hasSubject </people/Markus
]
But that is _not_ needed to achieve my 1 and 2.
Well this certainly adds more triples. Whether it adds more meaning is a
separate issue.
Obviously, we'd define isACollectionOf as well.
Again making a significant addition to RDF.
It appears that you feel that adding significant new expressive power is
somehow less of a change than adding new syntax.
I'm not adding any new expressive power. Can you point exactly to where you
think I'm doing that?
Yes, I define a memberOf predicate that clients have to understand.
That's new expressive power.
But that's a given if we just define it was owl:inverseProperty hydra:member.
Which is precisely my point. You are using OWL, not just RDF. If you want to
do this in a way that fits in better with RDF, it would be better to add to
the syntax of RDF without adding to the semantics of RDF.
Best,
Ruben
peter