ActivityStreams - формат представления социальной активности пользователя

Помимо материалов, публикуемых пользователем в сети, еще одним ресурсом является его сетевая активность. Она включает в себя следующие действия: изменение статуса, создание заметки, публикация фотографии или альбома, отметка понравившихся материалов других пользователей и т. д. Данная активность собранная с различных аккаунтов позволяет быть в курсе действий пользователя. Чтобы формализовать эту активность был создан формат ActivityStreams [1].

Участие в разработке спецификации ActivityStreams принимали участие представители известных компаний. На следующем снимке представлена одна из рабочих встреч, посвященная обсуждению этого формата [2]:

Данный формат основывается на следующих составных частях: автор (actor), действие (verb), объект (object) и цель (target).

Примеры активности, представлены ниже:

Сетевая активность
actor verb | object | target
Person shared link target
Person started following Person target
Иван Васильевич меняет профессию царские палаты
Вася разместил фотографию picasaweb

Форматы представления сетевой активности могут быть следующие: JSON и Atom. В случае Atom возможна интеграция в уже существующий feed.

Вот простой пример записи в формате JSON, взятый из спецификации [3] :

{
    "published": "2011-02-10T15:04:55Z",
    "actor": {
      "url": "http://example.org/martin",
      "objectType" : "person",
      "id": "tag:example.org,2011:martin",
      "image": {
        "url": "http://example.org/martin/image",
        "width": 250,
        "height": 250
      },
      "displayName": "Martin Smith"
    },
    "verb": "post",
    "object" : {
      "url": "http://example.org/blog/2011/02/entry",
      "id": "tag:example.org,2011:abc123/xyz"
    },
    "target" : {
      "url": "http://example.org/blog/",
      "objectType": "blog",
      "id": "tag:example.org,2011:abc123",
      "displayName": "Martin's Blog"
    }
  }

В следующем примере демонстрируется интеграция в формат Atom:

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/">
  <id>tag:photopanic.example.com,2009:activity/4859/4352</id>
  <title>Geraldine posted a Photo on PhotoPanic</title>
  <published>2009-11-02T15:29:00Z</published>
  <link rel="alternate" type="text/html" href="http://example.com/geraldine/activities/4352" />
  <activity:verb>post</activity:verb>
  <activity:object>
    <id>tag:photopanic.example.com,2009:photo/4352</id>
    <title>My Cat</title>
    <published>2009-11-02T15:29:00Z</published>
    <link rel="alternate" type="text/html" href="http://example.com/geraldine/photos/4352" />
    <activity:object-type>photo</activity:object-type>
  </activity:object>
  <content type="html">
    &lt;p&gt;Geraldine posted a Photo on PhotoPanic&lt;/p&gt;
    &lt;img src="/geraldine/photos/4352.jpg"&gt;
  </content>
 </entry>

Определение пространства имен для формата ActivityStreams производится следующей строкой:

<entry xmlns:activity="http://activitystrea.ms/spec/1.0/" >

Формат AcvtivityStreams используется в распределенных социальных сетях, как формат передачи пользовательских событий. Так в протоколе Salmon, при создании пользователем комментария к статье на каком-либо ресурсе, производится идентификация автора и последующий импорт текста комментария или сообщения. Таким образом формат ActivityStreams вполне можно сопоставить с системой событий в операционной системе. Только вместо операционной системы - глобальная сеть Internet.

[1]Формат представления сетевой активности ActivityStreams. http://activitystrea.ms/

[2]Встреча в офисе Six Apart, посвященная формату ActivityStreams. http://www.readwriteweb.com/archives/google_facebook_myspace_activitystreams.php

[3] Спецификация JSON Activity Streams 1.0. http://activitystrea.ms/specs/json/1.0/