W3C home > Mailing lists > Public > public-socialweb@w3.org > March 2015

Re: Vocabulary Modeling: Connect as Verb or Connection as Object?

From: ☮ elf Pavlik ☮ <perpetual-tripper@wwelves.org>
Date: Wed, 25 Mar 2015 11:38:48 +0100
Message-ID: <55129038.6000609@wwelves.org>
To: James M Snell <jasnell@gmail.com>, "public-socialweb@w3.org" <public-socialweb@w3.org>
Hi James,

On 03/24/2015 07:37 PM, James M Snell wrote:
> 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.
I would also see it modeled not as an artifact (Thing/Object) but as
Statement (triple) entity + attribute + value (or subject predicate
object). I see Entity Attribute Value ~= Subject Predicate Object.

{
  "@type": "Person",
  "@id": "https://wwelves.org/perpetual-tripper",
  "name": "elf Pavlik",
  "friend": [
    {
      "@type": "Person",
      "@id": "http://www.chmod777self.com/",
      "name": "James M Snell",
    }, {
      "@type": "Person",
      "@id": "http://rhiaro.co.uk/",
      "name": "Amy Guy",
    }
  ]
}

How to group your friendships, followings in collections + 'follow your
nose'?
* https://www.w3.org/community/hydra/wiki/Collection_Design
* https://lists.w3.org/Archives/Public/public-socialweb/2015Mar/0130.html

If you really want artifact, we could also start with evaluating
applicability of *Reification*
http://www.w3.org/TR/rdf-schema/#ch_reificationvocab

> 
> 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.

What about *as:result*?
http://www.w3.org/TR/activitystreams-vocabulary/#dfn-result

> 
> 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.

I would prefer that we take a closer look at this issue before trying to
draw conclusions. I have impression that you may use rdfs:Class and
rdf:Property in unusual way. And I don't mean to say wrong but we may
just need more time to understand it better...

Cheers!



Received on Wednesday, 25 March 2015 10:39:08 UTC

This archive was generated by hypermail 2.3.1 : Thursday, 8 December 2016 15:48:21 UTC