Vocabulary Modeling: Connect as Verb or Connection as Object?

Right now, the Vocabulary models "Connect" and "FriendRequest" as
Activity types. E.g.

to say "John requested a connection with Sally" or "John sent Sally a
friend request", we'd use something like:

  {
    "@type": "Connect",
    "actor": "http//john.example.org",
    "object": "http://sally.example.org"
  }

However, in many systems, Connections between people are modeled as
distinct artifacts and organized into collections... that is, the
relationships themselves are modeled as Objects with a distinct
lifecycle.

So... rather than modeling "Connect" and "FriendRequest" as
Activities, do we model "Connection" or "Relationship" as an object.
For instance:

{
  "@type": "Create",
  "actor": "http://john.example.org",
  "object": {
    "@type": "Connection",
    "subject": [
      "http://john.example.org",
      "http://sally@example.org"
    ]
  }
}

{
  "@type": "Request",
  "actor": "http://john.example.org",
  "object": {
    "@type": "Connection",
    "subject": [
      "http://john.example.org",
      "http://sally@example.org"
    ]
  }
}

etc

The difference in the modeling is subtle but important. By modeling
the Connection/Relationship as a noun, we essentially change how we
reason about it. The Activities become "Request", "Create", "Update",
"Delete", etc. This seems to be a much more natural approach given the
various example existing social platforms out there.

The specific changes to our Vocabulary would be:

Remove: "Connect" and "FriendRequest" as Activities

Add: "Connection" and "Friendship" as Object Types, with "Friendship"
modeled as a subclass of Connection. Implementations would be free to
define their own additional types of Connections if they so desire.

Received on Tuesday, 24 March 2015 18:38:13 UTC