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

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

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

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

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

Сетевая активность
actorverbobjecttarget
Personsharedlinktarget
Personstarted followingPersontarget
Иван Васильевичменяетпрофессиюцарские палаты
Васяразместилфотографию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/