Actions in Schema.org: target & object properties

Jim, you asked about adding "target" and "object" properties to
schema.org/Action.

Taking note of ActivityStrea.ms, we certainly considered adding "target"
and "object" to the Schema.org Actions proposal. However, we found that
such properties will create problems if our goal is to be able to fully
express actions in very precise and unambiguous ways.

Furthermore, relying on "target" and "object" also becomes a challenge in
the case of "potential" actions, where the "target" and "object" might
still be missing, since not decided yet.

For example, consider the following sentences:


   - "Yaar drove home"
   - "Yaar drove a Volvo"
   - "Yaar drove his kids"
   - "Yaar drove route #1 from SF to LA"
   - "Yaar drove at 45mph"
   - "Yaar drove carefully"
   - "Yaar drove his wife mad talking about schemas" // ok, ignore this one
   :)

Target & object can probably handle some of the sentences in satisfactory
ways, such as:

   - "Yaar (actor) drove (verb) home (target)"
   - "Yaar (actor) drove (verb) a Volvo (object)"

But will struggle with:

   - "Yaar (actor) drove (verb) at 45mph (mmm...)"
   - "Yaar (actor) drove (verb) route #1 (object?) from SF (mmm...) to LA
   (target?)

It certainly cannot easily express the following sentence:

"Yaar drove his kids home in his new car from SF to LA through route #1 at
60mph"
What is the target (home or LA)? What is the object (kids, Volvo, route
#1)? What do you do with the rest of the activity modifiers ("45mph",
"carefully")?

In schema.org Actions, we envision having DriveAction, with the following
driving-specific properties:


   - destination: Place
   - source: Place
   - passenger: Person
   - pet: Animal
   - vehicle: Vehicle
   - cargo: Thing
   - averageSpeed: Text
   - drivingStyle: DrivingStyle
   - ...


Allowing:

{
  type: DriveAction
  actor: Yaar
  destination: LA
  source: SF
  passenger: { Kid1, Kid2, Kid3 }  // didn't actually name them like that :)
  vehicle: { type: Car, brand: Volvo }
  averageSpeed: 45mph
  drivingStyle: careful
  ...
}

This also relates to "potential" actions. Imagine the following "potential"
action: "I want to drive somewhere with my kids and my dog"

Notice there is just a verb here (drive), but no target or object. But
there is crucial information here (kids and a dog) that an action system
will find very useful when trying to fulfill the action. The DriveAction
construct above could easily express that, but a schema relying solely on
verb names, targets and objects would not.

One additional consideration behind this decision was that the choice of
"target" and "object" values is sensitivity to locale. For example, while
an English publisher will express "I (actor) listen (verb) to the Radio
(target)", a French publisher will express "J'ecoute (actor + verb) la
radio (object)". A ListenAction simply has an explicit "listenedTo: Thing"
property that both French & English publishers can agree on the contents of.

That said, we are aware that not having explicit target & object properties
on each action will become a challenge for existing systems that model
activities as actor-verb-object-target entities. However, we don't think
its an insurmountable challenge and such systems could pretty easily
transform schema.org actions into actor-verb-object-target structures by
choosing which schema.org action properties are considered targets and
which are considered objects (and which are just ignored). Such systems
will need to know about all relevant schema.org action sub-types, but such
systems are typically domain specific and will only need to know about a
small sub-set of the actions and their properties.

I hope that this helps explain the choices in the proposal.

-Yaar

Received on Friday, 17 May 2013 10:18:30 UTC