1. In a discussion with Monica W. and Will N. today we went through
some recent explorations the Schema.org folks have had around
Activities. One of the ideas that came up is the notion of an activity
result... A similar notion appears in the Tin Can / Scorm stuff [1]...
it's a concept that currently does not exist in the AS model but does
prove to be semantically useful.
[1]
http://scorm.com/wp-content/assets/tincandocs/TinCanAPI.pdf
For instance, imagine the following:
{
"actor": {"displayName": "Joe"},
"verb": "flagged-as-inappropriate",
"object": {"objectType": "article", ... },
"target": {"objectType": "service", "displayName": "Admin Service"},
"result": {
"objectType": "abuse",
"displayName": "abuse report",
"reasons": ["
http://example.org/InappropriateContent"] }
}
This tells us several things...
1. Joe reported an article as being in appropriate.
2. That report was sent to the "Admin Service"
3. The activity resulted in the creation on a new "abuse" object that
describes the report
I think the result is something that is fundamental to many activities
and providing a common extension property for result, I think, will
make it easier to more naturally express the correct semantics for
many types of activities.
Another example taken directly from the conversation with Monica and
Will earler today:
{
"actor": {"displayName": "Joe"},
"verb": "reviewed",
"object": {"objectType": "product", ... },
"target": {"objectType": "service", "displayName": "Review Service"},
"result": {
"objectType": "review",
"displayName": "Review",
"rating": 3.5
}
2. Another much more abstract notion that I've seen in a number of
areas (including scorm, tin can, and opensocial) is the notion that an
activity can occur within a given context, and that when communicating
about the activity, understanding the context within which the
activity occurred is important. For instance, if the activity occurred
within the context of a project or class. The Tin can documentation
introduces a "context" property to the Activity whose value is an
object that describes the context. What I'm wondering is if there
would be value in generalizing the concept as a common "context"
extension property. For instance,
{
"actor": {"displayName": "Joe"},
"verb": "completed",
"object": {"objectType": "http://.../Assignment", ... },
"context": {
"objectType": "http://.../Class",
"displayName": "My Training Course",
"id": "http://.../classes/123"
}
For certain verbs, there may be some fuzzy overlap between the
"context" and "target" but that should be ok.
3. One of the other things that popped up in the conversation today
was the notion that, currently, we do not have a common mechanism for
referencing what a particular object is about. That is, for instance,
say we have a "review" object... how do we indicate what is being
reviewed? Say we have an "abuse" object that describes a report that
some content is inappropriate... how do we identify the object that
was reported? It's simple to come up with type specific properties
that handle the job, but it would be better to come up with a generic
property that would work independently of object type.
Recently, I came up with the Links for Activity Streams mechanism and
suggested a new "about" link relation in a separate document.. in
theory, these can be combined and used for this purpose.. e.g.
{
"objectType": "review",
"rating": 3.5,
"$about": "http://.../uri/of/thing/being/reviewed"
}
But that is fairly limiting in terms of being able to provide
additional metadata... in the discussion today we discussed the idea
of having a new generic "about" extension property whose value is an
array of objects... just like we have with the "tags" and
"attachments" properties. The meaning would be, "here's a list of
things this object is about" ... for instance:
{
"objectType": "review",
"rating": 3.5,
"about": [{
"objectType": "product",
"id": "http://.../uri/of/thing/being/reviewed"}]
}
The combination of these three new extension fields, I think, would
sufficiently round out our model for a broad range of use cases. They
would be defined as additional extension fields within the Schema
document (Section 5) and would be entirely optional.
Thoughts?
- James