Atom Activity Streams RDF mapping

Namespace Document 3 March 2010 - second draft

This version (latest):
20100303.html (RDF)
Namespace:
http://xmlns.notu.be/aair# (subject to change at the moment)
Previous version:
20091224.html
Authors:
Michele Minno, Davide Palmisano
Contributors:
Libby Miller and other members of the NoTube Project (NoTube) and the wider RDF and SemWeb developer community. See acknowledgements.

Abstract

This specification describes the Atom Activity Streams in RDF Vocabulary (AAIR), defined as a dictionary of named properties and classes using W3C's RDF technology, and specifically a mapping of the Atom Activity Streams work to RDF.

Status of This Document

This document is the second draft, and the first draft to have an RDF version

See the changes section for details of the changes in this version of the specification.

Notational Conventions

In this document, the following namespace prefixes are used for the given namespace URI from the referenced specification:

AliasNamespace URISpecification
aair:  http://xmlns.notu.be/aair#  Atom Activity Streams in RDF Vocabulary
foaf:  http://xmlns.com/foaf/0.1/  Friend-of-a-friend ontology
dcterms:  http://purl.org/dc/terms/  DCMI Metadata Terms
atom:  http://www.w3.org/2005/Atom  The Atom Syndication Format (, “The Atom Syndication Format,” .) [RFC4287]
thr:  http://purl.org/syndication/thread/1.0  Atom Threading Extensions (Snell, J., “Atom Threading Extensions,” September 2006.) [RFC4685]
activity:  http://activitystrea.ms/spec/1.0/  Atom Activity Extensions
media:  http://purl.org/syndication/atommedia  Atom Media Extensions
cal:  urn:ietf:params:xml:ns:xcal  xCal
pc:  http://portablecontacts.net/schema/1.0  PortableContacts
geo:  http://www.georss.org/georss  GeoRSS

The choices of namespace prefix are arbitrary and not semantically significant.

Table of Contents

Activity Streams

The Activity Streams Atom extensions format is work to create extensions to Atom to represent the kinds of activities that occur in social networking sites and applications such as Facebook and MySpace. This document is a mapping from that work to RDF and will follow it closely as it develops.

Here is an example of an Atom feed entry describing an activity stream. Most of the content within the tag is traditional Atom, and is the material that all popular Atom readers like Google Reader and NewzCrawler use to render the content. The and tags are drawn from the Activity Streams specification, and are the portions of the entry that applications should program against.

<entry> <title>Snapshot Smith uploaded a photo.</title> <id>http://www.facebook.com/album.php?aid=6&id=499225643&ref=at</id> <link href="http://www.facebook.com/album.php?aid=6&id=499225643&ref=at" /> <published>2009-04-06T21:23:00-07:00</published> <updated>2009-04-06T21:23:00-07:00</updated> <author> <name>Snapshot Smith</name> <uri>http://www.facebook.com/people/Snapshot-Smith/499225643</uri> </author> <category term="Upload Photos" label="Upload Photos" /> <activity:verb> http://activitystrea.ms/schema/1.0/post/ </activity:verb> <activity:object> <id>http://www.facebook.com/photo.php?pid=28&id=499225643&ref=at</id> <thumbnail>http://photos-e.ak.fbcdn.net/photos-ak-snc1/v2692/195/117/499225643/s499225643_28_6861716.jpg</thumbnail> <caption>A very attractive wall, indeed.</caption> <published>2009-04-06T21:23:00-07:00</published> <link rel="alternate" type="text/html" href="http://www.facebook.com/photo.php?pid=28&id=499225643&ref=at" /> <activity:object-type> http://activitystrea.ms/schema/1.0/photo/ </activity:object-type> </activity:object> </entry>

Atom Activity Streams in RDF Vocabulary (AAIR) at a glance

image of the schema

An a-z index of AAIR terms, by class (categories or types) and by property.

Classes: | Activity | Actor | Annotation | Application | Article | Audio | Bookmark | Comment | Context | Event | File | Group | GroupOfUsers | Join | Located | Location | MakeFriend | MarkAsFavorite | MediaCollection | MediaContent | Mood | Note | Object | Person | Photo | PhotoAlbum | Place | Playlist | Post | RSVP | Replies | Save | Service | Share | Song | StartFollowing | Tag | Time | User | Verb | Video |

Properties: | RSVPConnotation | activityActor | activityContext | activityObject | activityVerb | audioStream | avatar | commenter | content | date | description | email | endDate | fileUrl | geographicCoordinates | largerImage | name | playerApplet | serviceUrl | startDateAndTime | summary | targetName | targetUrl | thumbnail | url | videoStream |

AAIR terms, grouped in broad categories.

Actor types

Object types

Verb types

Context types

AAIR cross-reference: Listing AAIR Classes and Properties

AAIR introduces the following classes and properties. The RDF/XML version is linked from the top of this document.

Classes: | Activity | Actor | Annotation | Application | Article | Audio | Bookmark | Comment | Context | Event | File | Group | GroupOfUsers | Join | Located | Location | MakeFriend | MarkAsFavorite | MediaCollection | MediaContent | Mood | Note | Object | Person | Photo | PhotoAlbum | Place | Playlist | Post | RSVP | Replies | Save | Service | Share | Song | StartFollowing | Tag | Time | User | Verb | Video |

Properties: | RSVPConnotation | activityActor | activityContext | activityObject | activityVerb | audioStream | avatar | commenter | content | date | description | email | endDate | fileUrl | geographicCoordinates | largerImage | name | playerApplet | serviceUrl | startDateAndTime | summary | targetName | targetUrl | thumbnail | url | videoStream |

Classes and Properties (full detail)


Classes

Class: aair:Activity

Activity - A generic activity an agent performs on the web.
Status: unstable
Properties include: activityContext activityObject activityActor activityVerb

[#] [back to top]


Class: aair:Actor

Actor - The agent who performs the activity, modelled as atom:author
Status: unstable
Properties include: email url
Used with: activityActor
Has Subclass GroupOfUsers User Application

[#] [back to top]


Class: aair:Annotation

Annotation - an extra text-based note added to an activity by the user.
Status: unstable

[#] [back to top]


Class: aair:Application

Application - An actor that is also an application @@can't find this in the spec@@.
Status: unstable
Subclass Of Actor

[#] [back to top]


Class: aair:Article

Article - Articles generally consist of paragraphs of text, in some cases incorporating embedded media such as photos and inline hyperlinks to other resources.
Status: unstable
Properties include: content summary
Subclass Of Object
Has Subclass Audio

[#] [back to top]


Class: aair:Audio

Audio - audio content.
Status: unstable
Properties include: audioStream
Subclass Of Article

[#] [back to top]


Class: aair:Bookmark

Bookmark - pointer to some URL -- typically a web page.
Status: unstable
Properties include: thumbnail targetName targetUrl
Subclass Of Object

[#] [back to top]


Class: aair:Comment

Comment - a textual response to another object. The comment object type MUST NOT be used for other kinds of replies, such as video replies or reviews. If an object has no explicit type but the object element has a thr:in-reply-to element a consumer SHOULD consider that object to be a comment.
Status: unstable
Properties include: commenter content
Subclass Of Object

[#] [back to top]


Class: aair:Context

Context - describes the context of an activity.
Status: unstable
Used with: activityContext
Has Subclass Time Service Mood Location Replies

[#] [back to top]


Class: aair:Event

Event - an event that occurs in a certain place during a particular interval of time.
Status: unstable
Properties include: startDateAndTime endDate summary
Subclass Of Object

[#] [back to top]


Class: aair:File

File - some document or other file with no additional machine-readable semantics.
Status: unstable
Properties include: fileUrl
Subclass Of Object

[#] [back to top]


Class: aair:Group

Group - a collection of people which people can join and leave.
Status: unstable
Properties include: avatar
Subclass Of Object

[#] [back to top]


Class: aair:GroupOfUsers

GroupOfUsers - An actor that is also a group of users. @@eh? and where's this from?@@
Status: unstable
Subclass Of Actor

[#] [back to top]


Class: aair:Join

Join - the Actor has become a member of the Object. This specification only defines the meaning of this Verb when its Object is a group.
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:Located

Located - the Actor is located in the Object.
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:Location

Location - the location where the user was at the time the activity was performed. This may be an accurate geographic coordinate, a street address, a free-form location name or a combination of these.
Status: unstable
Subclass Of Context

[#] [back to top]


Class: aair:MakeFriend

MakeFriend - the Actor sets the creation of a friendship that is reciprocated by the object.
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:MarkAsFavorite

MarkAsFavorite - the Actor marked the Object as an item of special interest.
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:MediaCollection

MediaCollection - Generic collection of media items.
Status: unstable
Properties include: thumbnail
Subclass Of Object
Has Subclass PhotoAlbum Playlist

[#] [back to top]


Class: aair:MediaContent

MediaContent - a media item.
Status: unstable
Subclass Of Object
Has Subclass Video Photo

[#] [back to top]


Class: aair:Mood

Mood - the mood of the user when the activity was performed. This is usually collected via an extra field in the user interface used to perform the activity. For the purpose of this schema, a mood is a freeform, short mood keyword or phrase along with an optional mood icon image.
Status: unstable
Subclass Of Context

[#] [back to top]


Class: aair:Note

Note - is intended for use in "micro-blogging" and in systems where users are invited to publish a timestamped "status".
Status: unstable
Properties include: content
Subclass Of Object

[#] [back to top]


Class: aair:Object

Object - the generic object of the activity.
Status: unstable
Properties include: name description url
Has Subclass Place File Group MediaContent Comment Bookmark Article Note MediaCollection Song Event Person

[#] [back to top]


Class: aair:Person

Person - a user account. This is often a person, but might also be a company or ficticious character that is being represented by a user account.
Status: unstable
Properties include: avatar
Subclass Of Object

[#] [back to top]


Class: aair:Photo

Photo - a graphical still image.
Status: unstable
Properties include: largerImage thumbnail content
Subclass Of MediaContent

[#] [back to top]


Class: aair:PhotoAlbum

PhotoAlbum - a collection of images.
Status: unstable
Subclass Of MediaCollection

[#] [back to top]


Class: aair:Place

Place - a location on Earth. @@can this be same as Location if Location is also?@@
Status: unstable
Properties include: geographicCoordinates
Subclass Of Object

[#] [back to top]


Class: aair:Playlist

Playlist - an ordered list of time-based media items, such as video and audio objects.
Status: unstable
Subclass Of MediaCollection

[#] [back to top]


Class: aair:Post

describes the act of posting or publishing an Object on the web. The implication is that before this Activity occurred the Object was not posted, and after the Activity has occurred it is posted or published. - @@sameAs sioc something?@@
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:RSVP

RSVP - indicates that the actor has made a RSVP ("R\xe9pondez s'il vous pla\xeet") for the object, that is, he/she replied to an invite. This specification only defines the meaning of this verb when its object is an event. The use of this Verb is only appropriate when the RSVP was created by an explicit action by the actor. It is not appropriate to use this verb when a user has been added as an attendee by an event organiser or administrator.
Status: unstable
Properties include: RSVPConnotation
Subclass Of verb

[#] [back to top]


Class: aair:Replies

Replies - Most social applications have a concept of "comments", "replies" or "responses" to social Objects. In many cases these are simple text messages, but any Object can in practice be a reply. A text-only reply SHOULD be represented using the comment object type. Replies of other types MUST carry the appropriate type and MUST NOT carry the comment object type. Replies, regardless of object type, SHOULD be represented using the thr:in-reply-to element. The act of posting a reply is represented by the post Verb as with "top-level" Objects.
Status: unstable
Subclass Of Context

[#] [back to top]


Class: aair:Save

Save - the Actor has called out the Object as being of interest primarily to him- or herself. Though this action MAY be shared publicly, the implication is that the Object has been saved primarily for the actor's own benefit rather than to show it to others as would be indicated by the "share" Verb .
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:Service

Service - the Web Service where the activity is performed by the Actor.
Status: unstable
Properties include: name
Subclass Of Context

[#] [back to top]


Class: aair:Share

Share - the Actor has called out the Object to readers. In most cases, the actor did not create the Object being shared, but is instead drawing attention to it.
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:Song

Song - a song or a recording of a song. Objects of type Song might contain information about the song or recording, or they might contain some representation of the recording itself. In the latter case, the song SHOULD also be annotated with the "audio" object type and use its properties. Type "song" SHOULD only be used when the publisher can guarantee that the object is a song rather than merely a generic audio stream.
Status: unstable
Subclass Of Object

[#] [back to top]


Class: aair:StartFollowing

StartFollowing - the Actor began following the activity of the Object. In most cases, the Object of this Verb will be a user, but it can potentially be of any type that can sensibly generate activity.
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:Tag

Tag - the Actor has identified the presence of a Target inside an Object. The target of the "tag" verb gives the object in which the tag has been added. For example, if a user appears in a photo, the activity:object is the user and the activity:target is the photo.
Status: unstable
Subclass Of verb

[#] [back to top]


Class: aair:Time

Time - contextual information about time
Status: unstable
Properties include: date
Subclass Of Context

[#] [back to top]


Class: aair:User

User - A user involved in an activity
Status: unstable
Subclass Of Actor

[#] [back to top]


Class: aair:Video

Video - video content, which usually consists of a motion picture track and an audio track.
Status: unstable
Properties include: thumbnail videoStream content playerApplet
Subclass Of MediaContent

[#] [back to top]


Properties

Property: aair:RSVPConnotation

RSVPConnotation - the connotation of the RSVP
Status: unstable
Domain: RSVP
Range: String

[#] [back to top]


Property: aair:activityActor

activityActor - relates the activity to its actor.
Status: unstable
Domain: Activity
Range: Actor

[#] [back to top]


Property: aair:activityContext

activityContext - relates the activity to its context.
Status: unstable
Domain: Activity
Range: Context

[#] [back to top]


Property: aair:activityObject

activityObject - relates the activity to its object.
Status: unstable
Domain: Activity
Range: verb

[#] [back to top]


Property: aair:activityVerb

activityVerb - relates the activity to its verb.
Status: unstable
Domain: Activity
Range: verb

[#] [back to top]


Property: aair:audioStream

audioStream - he URL and metadata for the audio content itself. The URL is represented as the value of the href attribute on an atom:link element with rel enclosure and a type that matches audio/*.
Status: unstable
Domain: Audio
Range: String

[#] [back to top]


Property: aair:avatar

avatar - the URL and metadata for an image that represents the user or the group. The URL is represented as the value of the href attribute on an atom:link element with rel avatar and a type of either image/jpeg, image/png or image/gif. Publishers SHOULD include media:width and media:height attributes on the atom:link element describing the dimensions of the linked image. Processors MAY ignore avatars that are of an inappropriate size for their user interface. Publishers MAY include several images of different sizes.
Status: unstable
Domain: Person Group
Range: String

[#] [back to top]


Property: aair:commenter

commenter - who wrote the comment. Included as the content of the atom:title element. Many systems do not have the concept of a title or Actor for a comment; such systems MUST include an atom:title element with no text content. Processors SHOULD refer to such comments as simply being "a comment", with appropriate localization, if they are to be described in a sentence.
Status: unstable
Domain: Comment
Range: String

[#] [back to top]


Property: aair:content

content - contains the content of atom:content element, either contains or links to the content of the entry.
Status: unstable
Domain: Comment Video Photo Article Note
Range: String

[#] [back to top]


Property: aair:date

date - the dateTime @@?@@
Status: unstable
Domain: Time
Range: String

[#] [back to top]


Property: aair:description

description - The description or long caption assigned by the author. Included as the content of the media:description element (optional).
Status: unstable
Domain: Object
Range: String

[#] [back to top]


Property: aair:email

email - the actor email.
Status: unstable
Domain: Actor
Range: String

[#] [back to top]


Property: aair:endDate

endDate - the date and time that the event ends. Included via a cal:dtend element as defined in xCal.
Status: unstable
Domain: Event
Range: String

[#] [back to top]


Property: aair:fileUrl

fileUrl - the value of the href attribute on an atom:link element with rel enclosure. Should there be multiple links with rel enclosure with different type attribute value, they are considered to be alternate representations of the file.
Status: unstable
Domain: File

[#] [back to top]


Property: aair:geographicCoordinates

geographicCoordinates - @@sameas w3c geo? @@ the latitude and longitude of the place as a point on Earth. Included via the geo:point element, i.e.: 45.256 -71.92.
Status: unstable
Domain: Place
Range: String

[#] [back to top]


Property: aair:largerImage

largerImage - The URL and metadata for a larger, ideally full-size version of the photo intended for standalone viewing. The URL is represented as the value of the href attribute on an atom:link element with rel enclosure and a type of either image/jpeg, image/png or image/gif. Publishers SHOULD include media:width and media:height attributes on the atom:link element describing the dimensions of the linked image.
Status: unstable
Domain: Photo
Range: String

[#] [back to top]


Property: aair:name

name - contains the content of atom:title element, set by the creator for Group, by the organizer for Event.
Status: unstable
Domain: Object Service
Range: String

[#] [back to top]


Property: aair:playerApplet

playerApplet - the URL and metadata for some kind of applet that will allow a user to view the video. The URL is represented as the value of the href attribute on an atom:link element with rel alternate and an appropriate type. Publishers SHOULD include media:width and media:height attributes on the atom:link element describing the ideal dimensions of the linked applet.
Status: unstable
Domain: Video
Range: String

[#] [back to top]


Property: aair:serviceUrl

serviceUrl -
Status: unstable
Range: String

[#] [back to top]


Property: aair:startDateAndTime

startDateAndTime - the date and time that the event begins. Included via a cal:dtstart element as defined in xCal.
Status: unstable
Domain: Event
Range: String

[#] [back to top]


Property: aair:summary

summary - an introduction to or a summary of the full content (optional) for Article, a short description as provided by its organiser for Event, included as the content of the atom:summary element.
Status: unstable
Domain: Article Event
Range: String

[#] [back to top]


Property: aair:targetName

targetName - the name of the item that is the target of the bookmark. Represented as the value of the title attribute on the atom:link element from which the target URL was obtained.
Status: unstable
Domain: Bookmark
Range: String

[#] [back to top]


Property: aair:targetUrl

targetUrl - the URL of the item that is the target of the bookmark. Represented as the value of the href attribute on an atom:link element with rel "related".
Status: unstable
Domain: Bookmark
Range: String

[#] [back to top]


Property: aair:thumbnail

thumbnail - @@not sure this is really a literal@@ the URL and metadata for a thumbnail version of the item. The URL is represented as the value of the href attribute on an atom:link element with rel preview and a type of either image/jpeg, image/png or image/gif. Publishers SHOULD include media:width and media:height attributes on the atom:link element describing the dimensions of the linked item.
Status: unstable
Domain: Video Bookmark Photo MediaCollection
Range: String

[#] [back to top]


Property: aair:url

url - he value of the href attribute on an atom:link element with a rel value of alternate and a type value of text/html.
Status: unstable
Domain: Object Actor
Range: String

[#] [back to top]


Property: aair:videoStream

videoStream - @@not really a literal@@ the URL and metadata for the video content itself. The URL is represented as the value of the href attribute on an atom:link element with rel enclosure and a type that matches video/*.
Status: unstable
Domain: Video
Range: String

[#] [back to top]


Validation queries

Recent Changes

Previous Changes