- From: James M Snell <jasnell@gmail.com>
- Date: Fri, 31 Oct 2014 09:34:42 -0700
- To: "public-socialweb@w3.org" <public-socialweb@w3.org>
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