>> </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”. 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. > 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. But that's a given if we just define it was owl:inverseProperty hydra:member. Best, Ruben