Verbs

We need to think about Verbs for a bit. (I apologize in advance for
the long-ish note)

First,

At the face-to-face, the discussion was raised about whether it is
better to model Verbs as Nouns or as Predicates. The differences are
subtle, but important.

The Verbs as Predicates model is the approach originally taken by
Activity Streams 1.0 and carried through to the current 2.0 draft. It
is expressed using the "verb" property:

  {
    "@context": "http://asjsonld.mybluemix.net",
    "actor": "acct:sally@example.org",
    "verb": "urn:example:Like",
    "object": "http://example.org/post/1"
  }

This is interpreted as "Sally liked 'http://example.org/post/1'"

The Verbs as Nouns approach recasts the model a bit to express things
in the form: "This object is a Like, created by Sally, and referencing
"http://example.org/post/1"

{
  "@context": "http://asjsonld.mybluemix.net",
  "@type": "urn:example:Like",
  "actor": "acct:sally@example.org",
  "object": "http://example.org/post/1"
}

So far, the question has been cast as an either-or proposition: Either
we can model Activities as Predicates or we can model Activities as
Nouns. After looking at it, I believe we can actually achieve both
points of view by simply mapping the "verb" property to "@type" in the
AS JSON-LD @context. By doing so, both of the above examples produce
the same result. Consumers can then choose whichever point of view
suits them the best. It is a relatively simple change that, I believe,
would be worthwhile.

Second,

This one is a bit more abstract. Currently, the Activity Streams model
uses "object" to identify the direct object of the activity and
"target" to identify the indirect object. "target" is the thing to
which the activity has been directed but is not the thing that was
directly acted upon. Take the following examples for instance:

  "Sally uploaded a photo" -- in this, there is an "actor" and an
"object", but there is no "target".

But...

  "Sally uploaded a photo to an album" -- in this we have all three:
"actor", "object" and "target", with the "target" being the album.

Now consider the following two statements:

  "Sally added an annotation to the article"
  vs.
  "Sally annotated the article with a note"

These are equivalent statements but the way they are structured
changes the direct object. In the first statement, the "object" is the
annotation, the "target" is the article. In the second statement, the
"object" is the article. The Activity Streams model is fluid enough to
allow us to express both of these statements appropriately. The
challenge, however, is that it can often be difficult for developers
using Activity Streams to pick a model, and if two different
implementers pick different approaches, we can end up with more than
one way of expressing the same concept, leading to potential interop
(or at least interpretation) issues on the consuming side. We can see
an example of this in the on-list discussion yesterday around the
Annotation WG cases.

My question is: at some point... should the WG try to provide some
guidance here on the "best" way to structure Activity statements or is
it ok to leave this open and allow implementers to do their own thing?

Third,

Even more abstract: Another bit that was discussed at the face-to-face
is the fact that we do not currently define a vocabulary for the verbs
themselves. There is an existing set of verbs defined in Activity
Streams 1.0 by the so-called "Base Schema" document but those are
largely informal. Lots of implementations use various combinations of
those but they've never been formally spec'd. The question is: Do we
need a formal definition of the verbs? And if so, what form should
that take? We have a couple of options:

1. Take a loose "registry" type of approach like that in the Basic
Schema document. In this approach, there's really no "ontology"
approach, it's really just define a handful of common verbs with
specified meanings.

2. Take a more formal ontological and hierarchical approach the way
schema.org does with their Actions vocabulary
(https://schema.org/Action). In this case we'd be looking at defining
abstract classes of verbs with formal derivations, semantic roles, and
so forth.

Both approaches have their pros and cons and given the diverse
community we have in the Social WG, I'd like to get a sense of which
approach folks prefer. Additionally, I'd like to get a sense of
whether this is something the WG ought to do or do we simply leave it
up to others to define the specific Verbs.

That's it for now

- James

Received on Friday, 31 October 2014 16:35:30 UTC