reverse properties

JSON-LD has the ability to define terms which, when used as properties, cause a reverse relationship to be asserted. For example:

{
  "@context": {
    ...,
    "isMemberOf": {"@reverse": "member", "@type": "@id", "@container": "@set"}
  }
}

N3 has a similar is xxx of construct, and RDFa has @rev, which all do similar things. The value of these constructs is that it prevents the anti-pattern of creating inverse versions of each property. For example, if I had a sports team with several members, I might describe it as follows:

:49ers a schema:SportsTeam
  schema:member :ColinKaepernick, :FrankGore, ...

When describing each team member, I'd like to use the same predicate to describe the reverse relationship

:ColinKaepernick a schema:Person;
  is schema:member of :49ers .

However, SupportedProperty requires that I define a property for each of these, particularly when it describes a Link or has operations. It might be nice to be able to define a SupportedProperty to be reversed, such as the following:

[ a hydra:SupportedProperty;
  hydra:property schema:member;
  hydra:readonly true;
  hydra:writeonly false;
  hydra:reversed true
]

Or, perhaps use something like hydra:reversedProperty. That way, if schema:Person was a hydra:Class, it could describe properties that appear in the lexical form within that entity. This would also be a good use of LDF, where an associated pattern would have the predicate and object values specified and wild-card the subject.

Gregg Kellogg
gregg@greggkellogg.net

Received on Saturday, 15 March 2014 00:21:54 UTC