Activity Vocabulary

This specification describes the Activity vocabulary. It is intended to be used in the context of the ActivityStreams 2.0 format and provides a foundational vocabulary for activity structures, and specific activity types.

## Author's Note

This draft is heavily influenced by the JSON Activity Streams 1.0 specification originally co-authored by Martin Atkins, Will Norris, Chris Messina, Monica Wilkinson, Rob Dolin and James Snell. The author is very thankful for their significant contributions and gladly stands on their shoulders. Some portions of the original text of Activity Streams 1.0 are used in this document.

## Introduction

The Activity Streams 2.0 Core Syntax defines the JSON syntax for Activity Streams. This document defines the vocabulary properties.

The Activity Streams 2.0 Vocabulary defines a set of abstract types and properties that describe past, present and future Activities. The vocabulary is defined in two parts:

1. A Core set of properties describing the generalized structure of an Activity; and
2. An Extended set of properties that cover specific types of Activities and Artifacts common to many social Web application systems.

While not all Activity Streams 2.0 implementations are expected to implement support for the Extended properties, all implementations MUST at least be capable of serializing and deserializing the Extended properties in accordance with the Activity Streams 2.0 Core Syntax.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [[!RFC2119]].

## Conventions

Unless otherwise specified, all properties defined as `xsd:dateTime` values MUST conform to the rules defined in Activity Streams 2.0 Core, Section 2.3.

The examples included in this document use the normative JSON serialization defined by this specification.

## Core Types

The Activity Vocabulary Core Types provide the basis for the rest of the vocabulary.

Base URI: `https://www.w3.org/ns/activitystreams#`.

The Activity Streams 2.0 Core Types include:

- `Object`
- `Link`
- `Activity`
- `IntransitiveActivity`
- `Collection`
- `OrderedCollection`
- `CollectionPage`
- `OrderedCollectionPage`

Class | Description | Example
--- | --- | ---
Object | URI: | `https://www.w3.org/ns/activitystreams#Object` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Object",
      "id": "http://www.test.example/object/1",
      "name": "A Simple, non-specific object"
    }
Notes: | Describes an object of any kind. The Object type serves as the base type for most of the other kinds of objects defined in the Activity Vocabulary, including other Core types such as `Activity`, `IntransitiveActivity`, `Collection` and `OrderedCollection`.
Disjoint With: | `Link`
Properties: | `attachment` | `attributedTo` | `audience` | `content` | `context` | `name` | `endTime` | `generator` | `icon` | `image` | `inReplyTo` | `location` | `preview` | `published` | `replies` | `startTime` | `summary` | `tag` | `updated` | `url` | `to` | `bto` | `cc` | `bcc` | `mediaType` | `duration`
Link | URI: | `https://www.w3.org/ns/activitystreams#Link` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Link",
      "href": "http://example.org/abc",
      "hreflang": "en",
      "mediaType": "text/html",
      "name": "An example link"
    }
Notes: | A Link is an indirect, qualified reference to a resource identified by a URL. The fundamental model for links is established by [[!RFC5988]]. Many of the properties defined by the Activity Vocabulary allow values that are either instances of `Object` or `Link`. When a `Link` is used, it establishes a qualified relation connecting the subject (the containing object) to the resource identified by the `href`. Properties of the `Link` are properties of the reference as opposed to properties of the resource.
Disjoint With: | `Object`
Properties: | `href` | `rel` | `mediaType` | `name` | `hreflang` | `height` | `width` | `preview`
Activity | URI: | `https://www.w3.org/ns/activitystreams#Activity` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Activity",
      "summary": "Sally did something to a note",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Note",
        "name": "A Note"
      }
    }
Notes: | An Activity is a subtype of `Object` that describes some form of action that may happen, is currently happening, or has already happened. The `Activity` type itself serves as an abstract base type for all types of activities. It is important to note that the `Activity` type itself does not carry any specific semantics about the kind of action being taken.
Extends: | `Object`
Properties: | `actor` | `object` | `target` | `result` | `origin` | `instrument` Inherits all properties from `Object`.
IntransitiveActivity | URI: | `https://www.w3.org/ns/activitystreams#IntransitiveActivity` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Travel",
      "summary": "Sally went to work",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "target": {
        "type": "Place",
        "name": "Work"
      }
    }
Notes: | Instances of `IntransitiveActivity` are a subtype of `Activity` representing intransitive actions. The `object` property is therefore inappropriate for these activities.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity` except `object`.
Collection | URI: | `https://www.w3.org/ns/activitystreams#Collection` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's notes",
      "type": "Collection",
      "totalItems": 2,
      "items": [
        {
          "type": "Note",
          "name": "A Simple Note"
        },
        {
          "type": "Note",
          "name": "Another Simple Note"
        }
      ]
    }
Notes: | A `Collection` is a subtype of `Object` that represents ordered or unordered sets of `Object or Link` instances. Refer to the Activity Streams 2.0 Core specification for a complete description of the `Collection` type.
Extends: | `Object`
Properties: | `totalItems` | `current` | `first` | `last` | `items` Inherits all properties from `Object`.
OrderedCollection | URI: | `https://www.w3.org/ns/activitystreams#OrderedCollection` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's notes",
      "type": "OrderedCollection",
      "totalItems": 2,
      "orderedItems": [
        {
          "type": "Note",
          "name": "A Simple Note"
        },
        {
          "type": "Note",
          "name": "Another Simple Note"
        }
      ]
    }
Notes: | A subtype of `Collection` in which members of the logical collection are assumed to always be strictly ordered.
Extends: | `Collection`
Properties: | Inherits all properties from `Collection`.
CollectionPage | URI: | `https://www.w3.org/ns/activitystreams#CollectionPage` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 1 of Sally's notes",
      "type": "CollectionPage",
      "id": "http://example.org/foo?page=1",
      "partOf": "http://example.org/foo",
      "items": [
        {
          "type": "Note",
          "name": "A Simple Note"
        },
        {
          "type": "Note",
          "name": "Another Simple Note"
        }
      ]
    }
Notes: | Used to represent distinct subsets of items from a `Collection`. Refer to the Activity Streams 2.0 Core for a complete description of the `CollectionPage` object.
Extends: | `Collection`
Properties: | `partOf` | `next` | `prev` Inherits all properties from `Collection`.
OrderedCollectionPage | URI: | `https://www.w3.org/ns/activitystreams#OrderedCollectionPage` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 1 of Sally's notes",
      "type": "OrderedCollectionPage",
      "id": "http://example.org/foo?page=1",
      "partOf": "http://example.org/foo",
      "orderedItems": [
        {
          "type": "Note",
          "name": "A Simple Note"
        },
        {
          "type": "Note",
          "name": "Another Simple Note"
        }
      ]
    }
Notes: | Used to represent ordered subsets of items from an `OrderedCollection`. Refer to the Activity Streams 2.0 Core for a complete description of the `OrderedCollectionPage` object.
Extends: | `OrderedCollection` | `CollectionPage`
Properties: | `startIndex` Inherits all properties from `OrderedCollection` and `CollectionPage`.

## Extended Types

Base URI: `https://www.w3.org/ns/activitystreams#`.

The Activity Streams 2.0 Extended Types include Activity and Object subtypes that are common to many social Web applications. They are divided into three sets:

- Activity Types
- Actor Types
- Object Types

Support for specific extended vocabulary types is expected to vary, with implementations only selecting the extended types and properties that make sense within the specific context and requirements of those applications. However, to avoid possible interoperability issues, implementations MUST avoid using extension types or properties that unduly overlap with or duplicate the extended vocabulary defined here.

## Activity Types

All Activity Types inherit the properties of the base Activity type. Some specific Activity Types are subtypes or specializations of more generalized Activity Types (for instance, the `Invite` Activity Type is a more specific form of the `Offer` Activity Type).

The Activity Types include:

- `Accept`
- `Add`
- `Announce`
- `Arrive`
- `Block`
- `Create`
- `Delete`
- `Dislike`
- `Flag`
- `Follow`
- `Ignore`
- `Invite`
- `Join`
- `Leave`
- `Like`
- `Listen`
- `Move`
- `Offer`
- `Question`
- `Reject`
- `Read`
- `Remove`
- `TentativeReject`
- `TentativeAccept`
- `Travel`
- `Undo`
- `Update`
- `View`

Class | Description | Example
--- | --- | ---
Accept | URI: | `https://www.w3.org/ns/activitystreams#Accept` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally accepted an invitation to a party",
      "type": "Accept",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Invite",
        "actor": "http://john.example.org",
        "object": {
          "type": "Event",
          "name": "Going-Away Party for Jim"
        }
      }
    }
    {
        "@context": "https://www.w3.org/ns/activitystreams",
        "summary": "Sally accepted Joe into the club",
        "type": "Accept",
        "actor": {
          "type": "Person",
          "name": "Sally"
        },
        "object": {
          "type": "Person",
          "name": "Joe"
        },
        "target": {
          "type": "Group",
          "name": "The Club"
        }
      }
Notes: | Indicates that the `actor` accepts the `object`. The `target` property can be used in certain circumstances to indicate the context into which the `object` has been accepted.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
TentativeAccept | URI: | `https://www.w3.org/ns/activitystreams#TentativeAccept` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally tentatively accepted an invitation to a party",
      "type": "TentativeAccept",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Invite",
        "actor": "http://john.example.org",
        "object": {
          "type": "Event",
          "name": "Going-Away Party for Jim"
        }
      }
    }
Notes: | A specialization of `Accept` indicating that the acceptance is tentative.
Extends: | `Accept`
Properties: | Inherits all properties from `Accept`.
Add | URI: | `https://www.w3.org/ns/activitystreams#Add` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally added an object",
      "type": "Add",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/abc"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally added a picture of her cat to her cat picture collection",
      "type": "Add",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Image",
        "name": "A picture of my cat",
        "url": "http://example.org/img/cat.png"
      },
      "origin": {
        "type": "Collection",
        "name": "Camera Roll"
      },
      "target": {
        "type": "Collection",
        "name": "My Cat Pictures"
      }
    }
Notes: | Indicates that the `actor` has added the `object` to the `target`. If the `target` property is not explicitly specified, the target would need to be determined implicitly by context. The `origin` can be used to identify the context from which the `object` originated.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Arrive | URI: | `https://www.w3.org/ns/activitystreams#Arrive` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally arrived at work",
      "type": "Arrive",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "location": {
        "type": "Place",
        "name": "Work"
      },
      "origin": {
        "type": "Place",
        "name": "Home"
      }
    }
Notes: | An `IntransitiveActivity` that indicates that the `actor` has arrived at the `location`. The `origin` can be used to identify the context from which the `actor` originated. The `target` typically has no defined meaning.
Extends: | `IntransitiveActivity`
Properties: | Inherits all properties fom `IntransitiveActivity`.
Create | URI: | `https://www.w3.org/ns/activitystreams#Create` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally created a note",
      "type": "Create",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Note",
        "name": "A Simple Note",
        "content": "This is a simple note"
      }
    }
Notes: | Indicates that the `actor` has created the `object`.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Delete | URI: | `https://www.w3.org/ns/activitystreams#Delete` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally deleted a note",
      "type": "Delete",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/notes/1",
      "origin": {
        "type": "Collection",
        "name": "Sally's Notes"
      }
    }
Notes: | Indicates that the `actor` has deleted the `object`. If specified, the `origin` indicates the context from which the `object` was deleted.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Follow | URI: | `https://www.w3.org/ns/activitystreams#Follow` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally followed John",
      "type": "Follow",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Person",
        "name": "John"
      }
    }
Notes: | Indicates that the `actor` is "following" the `object`. Following is defined in the sense typically used within Social systems in which the actor is interested in any activity performed by or on the object. The `target` and `origin` typically have no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Ignore | URI: | `https://www.w3.org/ns/activitystreams#Ignore` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally ignored a note",
      "type": "Ignore",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/notes/1"
    }
Notes: | Indicates that the `actor` is ignoring the `object`. The `target` and `origin` typically have no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Join | URI: | `https://www.w3.org/ns/activitystreams#Join` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally joined a group",
      "type": "Join",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Group",
        "name": "A Simple Group"
      }
    }
Notes: | Indicates that the `actor` has joined the `object`. The `target` and `origin` typically have no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Leave | URI: | `https://www.w3.org/ns/activitystreams#Leave` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally left work",
      "type": "Leave",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Place",
        "name": "Work"
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally left a group",
      "type": "Leave",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Group",
        "name": "A Simple Group"
      }
    }
Notes: | Indicates that the `actor` has left the `object`. The `target` and `origin` typically have no meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Like | URI: | `https://www.w3.org/ns/activitystreams#Like` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally liked a note",
      "type": "Like",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/notes/1"
    }
Notes: | Indicates that the `actor` likes, recommends or endorses the `object`. The `target` and `origin` typically have no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Offer | URI: | `https://www.w3.org/ns/activitystreams#Offer` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered 50% off to Lewis",
      "type": "Offer",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "http://www.types.example/ProductOffer",
        "name": "50% Off!"
      },
      "target": {
        "type": "Person",
        "name": "Lewis"
      }
    }
Notes: | Indicates that the `actor` is offering the `object`. If specified, the `target` indicates the entity to which the `object` is being offered.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Invite | URI: | `https://www.w3.org/ns/activitystreams#Invite` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally invited John and Lisa to a party",
      "type": "Invite",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Event",
        "name": "A Party"
      },
      "target": [
        {
          "type": "Person",
          "name": "John"
        },
        {
          "type": "Person",
          "name": "Lisa"
        }
      ]
    }
Notes: | A specialization of `Offer` in which the `actor` is extending an invitation for the `object` to the `target`.
Extends: | `Offer`
Properties: | Inherits all properties from `Offer`.
Reject | URI: | `https://www.w3.org/ns/activitystreams#Reject` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally rejected an invitation to a party",
      "type": "Reject",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Invite",
        "actor": "http://john.example.org",
        "object": {
          "type": "Event",
          "name": "Going-Away Party for Jim"
        }
      }
    }
Notes: | Indicates that the `actor` is rejecting the `object`. The `target` and `origin` typically have no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
TentativeReject | URI: | `https://www.w3.org/ns/activitystreams#TentativeReject` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally tentatively rejected an invitation to a party",
      "type": "TentativeReject",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Invite",
        "actor": "http://john.example.org",
        "object": {
          "type": "Event",
          "name": "Going-Away Party for Jim"
        }
      }
    }
Notes: | A specialization of `Reject` in which the rejection is considered tentative.
Extends: | `Reject`
Properties: | Inherits all properties from `Reject`.
Remove | URI: | `https://www.w3.org/ns/activitystreams#Remove` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally removed a note from her notes folder",
      "type": "Remove",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/notes/1",
      "target": {
        "type": "Collection",
        "name": "Notes Folder"
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "The moderator removed Sally from a group",
      "type": "Remove",
      "actor": {
        "type": "http://example.org/Role",
        "name": "The Moderator"
      },
      "object": {
        "type": "Person",
        "name": "Sally"
      },
      "origin": {
        "type": "Group",
        "name": "A Simple Group"
      }
    }
Notes: | Indicates that the `actor` is removing the `object`. If specified, the `origin` indicates the context from which the `object` is being removed.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Undo | URI: | `https://www.w3.org/ns/activitystreams#Undo` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally retracted her offer to John",
      "type": "Undo",
      "actor": "http://sally.example.org",
      "object": {
        "type": "Offer",
        "actor": "http://sally.example.org",
        "object": "http://example.org/posts/1",
        "target": "http://john.example.org"
      }
    }
Notes: | Indicates that the `actor` is undoing the `object`. In most cases, the `object` will be an `Activity` describing some previously performed action (for instance, a person may have previously "liked" an article but, for whatever reason, might choose to undo that like at some later point in time). The `target` and `origin` typically have no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Update | URI: | `https://www.w3.org/ns/activitystreams#Update` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally updated her note",
      "type": "Update",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/notes/1"
    }
Notes: | Indicates that the `actor` has updated the `object`. Note, however, that this vocabulary does not define a mechanism for describing the actual set of modifications made to `object`. The `target` and `origin` typically have no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
View | URI: | `https://www.w3.org/ns/activitystreams#View` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally read an article",
      "type": "View",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": {
        "type": "Article",
        "name": "What You Should Know About Activity Streams"
      }
    }
Notes: | Indicates that the `actor` has viewed the object.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Listen | URI: | `https://www.w3.org/ns/activitystreams#Listen` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally listened to a piece of music",
      "type": "Listen",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/music.mp3"
    }
Notes: | Indicates that the `actor` has listened to the `object`.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Read | URI: | `https://www.w3.org/ns/activitystreams#Read` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally read a blog post",
      "type": "Read",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/posts/1"
    }
Notes: | Indicates that the `actor` has read the `object`.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Move | URI: | `https://www.w3.org/ns/activitystreams#Move` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally moved a post from List A to List B",
      "type": "Move",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/posts/1",
      "target": {
        "type": "Collection",
        "name": "List B"
      },
      "origin": {
        "type": "Collection",
        "name": "List A"
      }
    }
Notes: | Indicates that the `actor` has moved `object` from `origin` to `target`. If the `origin` or `target` are not specified, either can be determined by context.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Travel | URI: | `https://www.w3.org/ns/activitystreams#Travel` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally went home from work",
      "type": "Travel",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "target": {
        "type": "Place",
        "name": "Home"
      },
      "origin": {
        "type": "Place",
        "name": "Work"
      }
    }
Notes: | Indicates that the `actor` is traveling to `target` from `origin`. `Travel` is an `IntransitiveObject` whose `actor` specifies the direct object. If the `target` or `origin` are not specified, either can be determined by context.
Extends: | `IntransitiveActivity`
Properties: | Inherits all properties from `IntransitiveActivity`.
Announce | URI: | `https://www.w3.org/ns/activitystreams#Announce` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally announced that she had arrived at work",
      "type": "Announce",
      "actor": {
        "type": "Person",
        "id": "http://sally.example.org",
        "name": "Sally"
      },
      "object": {
        "type": "Arrive",
        "actor": "http://sally.example.org",
        "location": {
          "type": "Place",
          "name": "Work"
        }
      }
    }
Notes: | Indicates that the `actor` is calling the `target`'s attention the `object`. The `origin` typically has no defined meaning.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Block | URI: | `https://www.w3.org/ns/activitystreams#Block` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally blocked Joe",
      "type": "Block",
      "actor": "http://sally.example.org",
      "object": "http://joe.example.org"
    }
Notes: | Indicates that the `actor` is blocking the `object`. Blocking is a stronger form of `Ignore`. The typical use is to support social systems that allow one user to block activities or content of other users. The `target` and `origin` typically have no defined meaning.
Extends: | `Ignore`
Properties: | Inherits all properties from `Ignore`.
Flag | URI: | `https://www.w3.org/ns/activitystreams#Flag` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally flagged an inappropriate note",
      "type": "Flag",
      "actor": "http://sally.example.org",
      "object": {
        "type": "Note",
        "content": "An inappropriate note"
      }
    }
Notes: | Indicates that the `actor` is "flagging" the `object`. Flagging is defined in the sense common to many social platforms as reporting content as being inappropriate for any number of reasons.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Dislike | URI: | `https://www.w3.org/ns/activitystreams#Dislike` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally disliked a post",
      "type": "Dislike",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1"
    }
Notes: | Indicates that the `actor` dislikes the `object`.
Extends: | `Activity`
Properties: | Inherits all properties from `Activity`.
Question | URI: | `https://www.w3.org/ns/activitystreams#Question` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Question",
      "name": "What is the answer?",
      "oneOf": [
        {
          "type": "Note",
          "name": "Option A"
        },
        {
          "type": "Note",
          "name": "Option B"
        }
      ]
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Question",
      "name": "What is the answer?",
      "closed": "2016-05-10T00:00:00Z"
    }
Notes: | Represents a question being asked. Question objects are an extension of `IntransitiveActivity`. That is, the Question object is an Activity, but the direct object is the question itself and therefore it would not contain an `object` property. Either of the `anyOf` and `oneOf` properties MAY be used to express possible answers, but a Question object MUST NOT have both properties.
Extends: | `IntransitiveActivity`.
Properties: | `oneOf` | `anyOf` | `closed` Inherits all properties from `IntransitiveActivity`.

## Actor Types

Actor types are Object types that are capable of performing activities.

The core Actor Types include:

- `Application`
- `Group`
- `Organization`
- `Person`
- `Service`

Class | Description | Properties
--- | --- | ---
Application | URI: | `https://www.w3.org/ns/activitystreams#Application` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Application",
      "name": "Exampletron 3000"
    }
Notes: | Describes a software application.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Group | URI: | `https://www.w3.org/ns/activitystreams#Group` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Group",
      "name": "Big Beards of Austin"
    }
Notes: | Represents a formal or informal collective of Actors.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Organization | URI: | `https://www.w3.org/ns/activitystreams#Organization` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Organization",
      "name": "Example Co."
    }
Notes: | Represents an organization.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Person | URI: | `https://www.w3.org/ns/activitystreams#Person` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Person",
      "name": "Sally Smith"
    }
Notes: | Represents an individual person.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Service | URI: | `https://www.w3.org/ns/activitystreams#Service` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Service",
      "name": "Acme Web Service"
    }
Notes: | Represents a service of any kind.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.

## Object and Link Types

All Object Types inherit the properties of the base Object type. Link Types inherit the properties of the base Link type. Some specific Object Types are subtypes or specializations of more generalized Object Types (for instance, the `Like` Type is a more specific form of the `Activity` type).

The Object Types include:

- `Article`
- `Audio`
- `Document`
- `Event`
- `Image`
- `Note`
- `Page`
- `Place`
- `Profile`
- `Relationship`
- `Tombstone`
- `Video`

The Link Types include:

- `Mention`

Class | Description | Properties
--- | --- | ---
Relationship | URI: | `https://www.w3.org/ns/activitystreams#Relationship` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally is an acquaintance of John",
      "type": "Relationship",
      "subject": {
        "type": "Person",
        "name": "Sally"
      },
      "relationship": "http://purl.org/vocab/relationship/acquaintanceOf",
      "object": {
        "type": "Person",
        "name": "John"
      }
    }
Notes: | Describes a relationship between two individuals. The `subject` and `object` properties are used to identify the connected individuals. See for additional information.
Extends: | `Object`
Properties: | `subject` | `object` | `relationship` Inherits all properties from `Object`.
Article | URI: | `https://www.w3.org/ns/activitystreams#Article` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Article",
      "name": "What a Crazy Day I Had",
      "content": "<div>... you will never believe ...</div>",
      "attributedTo": "http://sally.example.org"
    }
Notes: | Represents any kind of multi-paragraph written work.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Document | URI: | `https://www.w3.org/ns/activitystreams#Document` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Document",
      "name": "4Q Sales Forecast",
      "url": "http://example.org/4q-sales-forecast.pdf"
    }
Notes: | Represents a document of any kind.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Audio | URI: | `https://www.w3.org/ns/activitystreams#Audio` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Audio",
      "name": "Interview With A Famous Technologist",
      "url": {
        "type": "Link",
        "href": "http://example.org/podcast.mp3",
        "mediaType": "audio/mp3"
      }
    }
Notes: | Represents an audio document of any kind.
Extends: | `Document`
Properties: | Inherits all properties from `Document`.
Image | URI: | `https://www.w3.org/ns/activitystreams#Image` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Image",
      "name": "Cat Jumping on Wagon",
      "url": [
        {
          "type": "Link",
          "href": "http://example.org/image.jpeg",
          "mediaType": "image/jpeg"
        },
        {
          "type": "Link",
          "href": "http://example.org/image.png",
          "mediaType": "image/png"
        }
      ]
    }
Notes: | An image document of any kind
Extends: | `Document`
Properties: | Inherits all properties from `Document`.
Video | URI: | `https://www.w3.org/ns/activitystreams#Video` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Video",
      "name": "Puppy Plays With Ball",
      "url": "http://example.org/video.mkv",
      "duration": "PT2H"
    }
Notes: | Represents a video document of any kind.
Extends: | `Document`
Properties: | Inherits all properties from `Document`.
Note | URI: | `https://www.w3.org/ns/activitystreams#Note` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Note",
      "name": "A Word of Warning",
      "content": "Looks like it is going to rain today. Bring an umbrella!"
    }
Notes: | Represents a short written work typically less than a single paragraph in length.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Page | URI: | `https://www.w3.org/ns/activitystreams#Page` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Page",
      "name": "Omaha Weather Report",
      "url": "http://example.org/weather-in-omaha.html"
    }
Notes: | Represents a Web Page.
Extends: | `Document`
Properties: | Inherits all properties from `Document`.
Event | URI: | `https://www.w3.org/ns/activitystreams#Event` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Event",
      "name": "Going-Away Party for Jim",
      "startTime": "2014-12-31T23:00:00-08:00",
      "endTime": "2015-01-01T06:00:00-08:00"
    }
Notes: | Represents any kind of event.
Extends: | `Object`
Properties: | Inherits all properties from `Object`.
Place | URI: | `https://www.w3.org/ns/activitystreams#Place` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "Work"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "Fresno Area",
      "latitude": 36.75,
      "longitude": 119.7667,
      "radius": 15,
      "units": "miles"
    }
Notes: | Represents a logical or physical location. See for additional information.
Extends: | `Object`
Properties: | `accuracy` | `altitude` | `latitude` | `longitude` | `radius` | `units` Inherits all properties from `Object`.
Mention | URI: | `https://www.w3.org/ns/activitystreams#Mention` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Mention of Joe by Carrie in her note",
      "type": "Mention",
      "href": "http://example.org/joe",
      "name": "Joe"
    }
Notes: | A specialized `Link` that represents an @mention.
Extends: | `Link`
Properties: | Inherits all properties from `Link`.
Profile | URI: | `https://www.w3.org/ns/activitystreams#Profile` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Profile",
      "summary": "Sally's Profile",
      "describes": {
        "type": "Person",
        "name": "Sally Smith"
      }
    }
Notes: | A Profile is a content object that describes another Object, typically used to describe Actor Type objects. The `describes` property is used to reference the object being described by the profile.
Extends: | `Object`
Properties: | `describes` Inherits all properties from `Object`.
Tombstone | URI: | `https://www.w3.org/ns/activitystreams#Tombstone` |
    {
      "type": "OrderedCollection",
      "totalItems": 3,
      "name": "Vacation photos 2016",
      "orderedItems": [
        {
          "type": "Image",
          "id": "http://image.example/1"
        },
        {
          "type": "Tombstone",
          "formerType": "Image",
          "id": "http://image.example/2",
          "deleted": "2016-03-17T00:00:00Z"
        },
        {
          "type": "Image",
          "id": "http://image.example/3"
        }
      ]
    }
Notes: | A Tombstone represents a content object that has been deleted. It can be used in Collections to signify that there used to be an object at this position, but it has been deleted.
Extends: | `Object`
Properties: | `formerType` | `deleted` Inherits all properties from `Object`.

## Properties

Base URI: `https://www.w3.org/ns/activitystreams#`.

The common properties include: `actor` | `attachment` | `attributedTo` | `audience` | `bcc` | `bto` | `cc` | `context` | `current` | `first` | `generator` | `icon` | `id` | `image` | `inReplyTo` | `instrument` | `last` | `location` | `items` | `oneOf` | `anyOf` | `closed` | `origin` | `next` | `object` | `prev` | `preview` | `result` | `replies` | `tag` | `target` | `to` | `type` | `url` | `accuracy` | `altitude` | `content` | `name` | `duration` | `height` | `href` | `hreflang` | `partOf` | `latitude` | `longitude` | `mediaType` | `endTime` | `published` | `startTime` | `radius` | `rel` | `startIndex` | `summary` | `totalItems` | `units` | `updated` | `width` | `subject` | `relationship` | `describes` | `formerType` | `deleted`

The "Domain" indicates the type of Object the property term applies to. The "Range" indicates the type of value the property term can have. Certain properties are marked as a "Subproperty Of" another term, meaning that the term is a specialization of the referenced term. For instance, `actor` is a subproperty of `attributedTo`. Properties marked as being "Functional" can have only one value. Items not marked as "Functional" can have multiple values.

Term | Description | Example
--- | --- | ---
id | URI: | `@id` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "Foo",
      "id": "http://example.org/foo"
    }
Notes: | Provides the globally unique identifier for an Object or Link.
Domain: | `Object` | `Link`
Range: | `anyURI`
Functional: | True
type | URI: | `@type` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A foo",
      "type": "http://example.org/Foo"
    }
Notes: | Identifies the Object or Link type. Multiple values may be specified.
Domain: | `Object` | `Link`
Range: | `anyURI`
actor | URI: | `https://www.w3.org/ns/activitystreams#actor` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered the Foo object",
      "type": "Offer",
      "actor": "http://sally.example.org",
      "object": "http://example.org/foo"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered the Foo object",
      "type": "Offer",
      "actor": {
        "type": "Person",
        "id": "http://sally.example.org",
        "summary": "Sally"
      },
      "object": "http://example.org/foo"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally and Joe offered the Foo object",
      "type": "Offer",
      "actor": [
        "http://joe.example.org",
        {
          "type": "Person",
          "id": "http://sally.example.org",
          "name": "Sally"
        }
      ],
      "object": "http://example.org/foo"
    }
Notes: | Describes one or more entities that either performed or are expected to perform the activity. Any single activity can have multiple `actor`s. The `actor` MAY be specified using an indirect `Link`.
Domain: | `Activity`
Range: | `Object` | `Link`
Subproperty Of: | `attributedTo`
attachment | URI: | `https://www.w3.org/ns/activitystreams#attachment` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Note",
      "name": "Have you seen my cat?",
      "attachment": [
        {
          "type": "Image",
          "content": "This is what he looks like.",
          "url": "http://example.org/cat.jpeg"
        }
      ]
    }
Notes: | Identifies a resource attached or related to an object that potentially requires special handling. The intent is to provide a model that is at least semantically similar to attachments in email.
Domain: | `Object`
Range: | `Object` | `Link`
attributedTo | URI: | `https://www.w3.org/ns/activitystreams#attributedTo` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Image",
      "name": "My cat taking a nap",
      "url": "http://example.org/cat.jpeg",
      "attributedTo": [
        {
          "type": "Person",
          "name": "Sally"
        }
      ]
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Image",
      "name": "My cat taking a nap",
      "url": "http://example.org/cat.jpeg",
      "attributedTo": [
        "http://joe.example.org",
        {
          "type": "Person",
          "name": "Sally"
        }
      ]
    }
Notes: | Identifies one or more entities to which this object is attributed. The attributed entities might not be Actors. For instance, an object might be attributed to the completion of another activity.
Domain: | `Link` | `Object`
Range: | `Link` | `Object`
audience | URI: | `https://www.w3.org/ns/activitystreams#audience` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "Holiday announcement",
      "type": "Note",
      "content": "Thursday will be a company-wide holiday. Enjoy your day off!",
      "audience": {
        "type": "http://example.org/Organization",
        "name": "ExampleCo LLC"
      }
    }
Notes: | Identifies one or more entities that represent the total population of entities for which the object can considered to be relevant.
Domain: | `Object`
Range: | `Object` | `Link`
bcc | URI: | `https://www.w3.org/ns/activitystreams#bcc` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered a post to John",
      "type": "Offer",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1",
      "target": "http://john.example.org",
      "bcc": [ "http://joe.example.org" ]
    }
Notes: | Identifies one or more Objects that are part of the private secondary audience of this Object.
Domain: | `Object`
Range: | `Object` | `Link`
bto | URI: | `https://www.w3.org/ns/activitystreams#bto` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered a post to John",
      "type": "Offer",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1",
      "target": "http://john.example.org",
      "bto": [ "http://joe.example.org" ]
    }
Notes: | Identifies an Object that is part of the private primary audience of this Object.
Domain: | `Object`
Range: | `Object` | `Link`
cc | URI: | `https://www.w3.org/ns/activitystreams#cc` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered a post to John",
      "type": "Offer",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1",
      "target": "http://john.example.org",
      "cc": [ "http://joe.example.org" ]
    }
Notes: | Identifies an Object that is part of the public secondary audience of this Object.
Domain: | `Object`
Range: | `Object` | `Link`
context | URI: | `https://www.w3.org/ns/activitystreams#context` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Activities in context 1",
      "type": "Collection",
      "items": [
        {
          "type": "Offer",
          "actor": "http://sally.example.org",
          "object": "http://example.org/posts/1",
          "target": "http://john.example.org",
          "context": "http://example.org/contexts/1"
        },
        {
          "type": "Like",
          "actor": "http://joe.example.org",
          "object": "http://example.org/posts/2",
          "context": "http://example.org/contexts/1"
        }
      ]
    }
Notes: | Identifies the context within which the object exists or an activity was performed. The notion of "context" used is intentionally vague. The intended function is to serve as a means of grouping objects and activities that share a common originating context or purpose. An example could be all activities relating to a common project or event.
Domain: | `Object`
Range: | `Object` | `Link`
current | URI: | `https://www.w3.org/ns/activitystreams#current` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's blog posts",
      "type": "Collection",
      "totalItems": 3,
      "current": "http://example.org/collection",
      "items": [
        "http://example.org/posts/1",
        "http://example.org/posts/2",
        "http://example.org/posts/3"
      ]
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's blog posts",
      "type": "Collection",
      "totalItems": 3,
      "current": {
        "type": "Link",
        "summary": "Most Recent Items",
        "href": "http://example.org/collection"
      },
      "items": [
        "http://example.org/posts/1",
        "http://example.org/posts/2",
        "http://example.org/posts/3"
      ]
    }
Notes: | In a paged `Collection`, indicates the page that contains the most recently updated member items.
Domain: | `Collection`
Range: | `CollectionPage` | `Link`
Functional: | True
first | URI: | `https://www.w3.org/ns/activitystreams#first` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's blog posts",
      "type": "Collection",
      "totalItems": 3,
      "first": "http://example.org/collection?page=0"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's blog posts",
      "type": "Collection",
      "totalItems": 3,
      "first": {
        "type": "Link",
        "summary": "First Page",
        "href": "http://example.org/collection?page=0"
      }
    }
Notes: | In a paged `Collection`, indicates the furthest preceeding page of items in the collection.
Domain: | `Collection`
Range: | `CollectionPage` | `Link`
Functional: | True
generator | URI: | `https://www.w3.org/ns/activitystreams#generator` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "content": "This is all there is.",
      "generator": {
        "type": "Application",
        "name": "Exampletron 3000"
      }
    }
Notes: | Identifies the entity (e.g. an application) that generated the object.
Domain: | `Object`
Range: | `Object` | `Link`
icon | URI: | `https://www.w3.org/ns/activitystreams#icon` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "content": "This is all there is.",
      "icon": {
        "type": "Image",
        "name": "Note icon",
        "url": "http://example.org/note.png",
        "width": 16,
        "height": 16
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "content": "A simple note",
      "icon": [
        {
          "type": "Image",
          "summary": "Note (16x16)",
          "url": "http://example.org/note1.png",
          "width": 16,
          "height": 16
        },
        {
          "type": "Image",
          "summary": "Note (32x32)",
          "url": "http://example.org/note2.png",
          "width": 32,
          "height": 32
        }
      ]
    }
Notes: | Indicates an entity that describes an icon for this object. The image should have an aspect ratio of one (horizontal) to one (vertical) and should be suitable for presentation at a small size.
Domain: | `Object`
Range: | `Image` | `Link`
image | URI: | `https://www.w3.org/ns/activitystreams#image` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "A simple note",
      "type": "Note",
      "content": "This is all there is.",
      "image": {
        "type": "Image",
        "name": "A Cat",
        "url": "http://example.org/cat.png"
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "A simple note",
      "type": "Note",
      "content": "This is all there is.",
      "image": [
        {
          "type": "Image",
          "name": "Cat 1",
          "url": "http://example.org/cat1.png"
        },
        {
          "type": "Image",
          "name": "Cat 2",
          "url": "http://example.org/cat2.png"
        }
      ]
    }
Notes: | Indicates an entity that describes an image for this object. Unlike the icon property, there are no aspect ratio or display size limitations assumed.
Domain: | `Object`
Range: | `Image` | `Link`
inReplyTo | URI: | `https://www.w3.org/ns/activitystreams#inReplyTo` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "content": "This is all there is.",
      "inReplyTo": {
        "summary": "Previous note",
        "type": "Note",
        "content": "What else is there?"
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "content": "This is all there is.",
      "inReplyTo": "http://example.org/posts/1"
    }
Notes: | Indicates one or more entities for which this object is considered a response.
Domain: | `Object`
Range: | `Object` | `Link`
instrument | URI: | `https://www.w3.org/ns/activitystreams#instrument` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally listened to a piece of music on the Acme Music Service",
      "type": "Listen",
      "actor": {
        "type": "Person",
        "name": "Sally"
      },
      "object": "http://example.org/foo.mp3",
      "instrument": {
        "type": "Service",
        "name": "Acme Music Service"
      }
    }
Notes: | Identifies one or more objects used (or to be used) in the completion of an `Activity`.
Domain: | `Activity`
Range: | `Object | Link`
last | URI: | `https://www.w3.org/ns/activitystreams#last` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A collection",
      "type": "Collection",
      "totalItems": 3,
      "last": "http://example.org/collection?page=1"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A collection",
      "type": "Collection",
      "totalItems": 5,
      "last": {
        "type": "Link",
        "summary": "Last Page",
        "href": "http://example.org/collection?page=1"
      }
    }
Notes: | In a paged `Collection`, indicates the furthest proceeding page of the collection.
Domain: | `Collection`
Range: | `CollectionPage` | `Link`
Functional: | True
location | URI: | `https://www.w3.org/ns/activitystreams#location` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Person",
      "name": "Sally",
      "location": {
        "name": "Over the Arabian Sea, east of Socotra Island Nature Sanctuary",
        "type": "Place",
        "longitude": 12.34,
        "latitude": 56.78,
        "altitude": 90,
        "units": "m"
      }
    }
Notes: | Indicates one or more physical or logical locations associated with the object.
Domain: | `Object`
Range: | `Object | Link`
items | URI: | `https://www.w3.org/ns/activitystreams#items` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's notes",
      "type": "Collection",
      "totalItems": 2,
      "items": [
        {
          "type": "Note",
          "name": "Reminder for Going-Away Party"
        },
        {
          "type": "Note",
          "name": "Meeting 2016-11-17"
        }
      ]
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's notes",
      "type": "OrderedCollection",
      "totalItems": 2,
      "orderedItems": [
        {
          "type": "Note",
          "name": "Meeting 2016-11-17"
        },
        {
          "type": "Note",
          "name": "Reminder for Going-Away Party"
        }
      ]
    }
Notes: | Identifies the items contained in a collection. The items might be ordered or unordered.
Domain: | `Collection`
Range: | `Object` | `Link` | Ordered List of [`Object` | `Link` ]
oneOf | URI: | `https://www.w3.org/ns/activitystreams#oneOf` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Question",
      "name": "What is the answer?",
      "oneOf": [
        {
          "type": "Note",
          "name": "Option A"
        },
        {
          "type": "Note",
          "name": "Option B"
        }
      ]
    }
Notes: | Identifies an exclusive option for a Question. Use of `oneOf` implies that the Question can have only a single answer. To indicate that a Question can have multiple answers, use `anyOf`.
Domain: | `Question`
Range: | `Object` | `Link`
anyOf | URI: | `https://www.w3.org/ns/activitystreams#anyOf` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Question",
      "name": "What is the answer?",
      "anyOf": [
        {
          "type": "Note",
          "name": "Option A"
        },
        {
          "type": "Note",
          "name": "Option B"
        }
      ]
    }
Notes: | Identifies an inclusive option for a Question. Use of `anyOf` implies that the Question can have multiple answers. To indicate that a Question can have only one answer, use `oneOf`.
Domain: | `Question`
Range: | `Object` | `Link`
closed | URI: | `https://www.w3.org/ns/activitystreams#closed` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Question",
      "name": "What is the answer?",
      "closed": "2016-05-10T00:00:00Z"
    }
Notes: | Indicates that a question has been closed, and answers are no longer accepted.
Domain: | `Question`
Range: | `Object` | `Link` | `xsd:dateTime` | `xsd:boolean`
origin | URI: | `https://www.w3.org/ns/activitystreams#origin` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally moved a post from List A to List B",
      "type": "Move",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1",
      "target": {
        "type": "Collection",
        "name": "List B"
      },
      "origin": {
        "type": "Collection",
        "name": "List A"
      }
    }
Notes: | Describes an indirect object of the activity from which the activity is directed. The precise meaning of the origin is the object of the English preposition "from". For instance, in the activity "John moved an item to List B from List A", the origin of the activity is "List A".
Domain: | `Activity`
Range: | `Object` | `Link`
next | URI: | `https://www.w3.org/ns/activitystreams#next` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 2 of Sally's blog posts",
      "type": "CollectionPage",
      "next": "http://example.org/collection?page=2",
      "items": [
        "http://example.org/posts/1",
        "http://example.org/posts/2",
        "http://example.org/posts/3"
      ]
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 2 of Sally's blog posts",
      "type": "CollectionPage",
      "next": {
        "type": "Link",
        "name": "Next Page",
        "href": "http://example.org/collection?page=2"
      },
      "items": [
        "http://example.org/posts/1",
        "http://example.org/posts/2",
        "http://example.org/posts/3"
      ]
    }
Notes: | In a paged `Collection`, indicates the next page of items.
Domain: | `CollectionPage`
Range: | `CollectionPage` | `Link`
Functional: | True
object | URI: | `https://www.w3.org/ns/activitystreams#object` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally liked a post",
      "type": "Like",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Like",
      "actor": "http://sally.example.org",
      "object": {
        "type": "Note",
        "content": "A simple note"
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally liked a note",
      "type": "Like",
      "actor": "http://sally.example.org",
      "object": [
        "http://example.org/posts/1",
        {
          "type": "Note",
          "summary": "A simple note",
          "content": "That is a tree."
        }
      ]
    }
Notes: | When used within an `Activity`, describes the direct object of the activity. For instance, in the activity "John added a movie to his wishlist", the object of the activity is the movie added. When used within a `Relationship` describes the entity to which the `subject` is related.
Domain: | `Activity` | `Relationship`
Range: | `Object` | `Link`
prev | URI: | `https://www.w3.org/ns/activitystreams#prev` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 1 of Sally's blog posts",
      "type": "CollectionPage",
      "prev": "http://example.org/collection?page=1",
      "items": [
        "http://example.org/posts/1",
        "http://example.org/posts/2",
        "http://example.org/posts/3"
      ]
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 1 of Sally's blog posts",
      "type": "CollectionPage",
      "prev": {
        "type": "Link",
        "name": "Previous Page",
        "href": "http://example.org/collection?page=1"
      },
      "items": [
        "http://example.org/posts/1",
        "http://example.org/posts/2",
        "http://example.org/posts/3"
      ]
    }
Notes: | In a paged `Collection`, identifies the previous page of items.
Domain: | `CollectionPage`
Range: | `CollectionPage` | `Link`
Functional: | True
preview | URI: | `https://www.w3.org/ns/activitystreams#preview` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Video",
      "name": "Cool New Movie",
      "duration": "PT2H30M",
      "preview": {
        "type": "Video",
        "name": "Trailer",
        "duration": "PT1M",
        "url": {
          "href": "http://example.org/trailer.mkv",
          "mediaType": "video/mkv"
        }
      }
    }
Notes: | Identifies an entity that provides a preview of this object.
Domain: | `Link` | `Object`
Range: | `Link` | `Object`
result | URI: | `https://www.w3.org/ns/activitystreams#result` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally checked that her flight was on time",
      "type": ["Activity", "http://www.verbs.example/Check"],
      "actor": "http://sally.example.org",
      "object": "http://example.org/flights/1",
      "result": {
        "type": "http://www.types.example/flightstatus",
        "name": "On Time"
      }
    }
Notes: | Describes the result of the activity. For instance, if a particular action results in the creation of a new resource, the result property can be used to describe that new resource.
Domain: | `Activity`
Range: | `Object` | `Link`
replies | URI: | `https://www.w3.org/ns/activitystreams#replies` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "id": "http://www.test.example/notes/1",
      "content": "I am fine.",
      "replies": {
        "type": "Collection",
        "totalItems": 1,
        "items": [
          {
            "summary": "A response to the note",
            "type": "Note",
            "content": "I am glad to hear it.",
            "inReplyTo": "http://www.test.example/notes/1"
          }
        ]
      }
    }
Notes: | Identifies a `Collection` containing objects considered to be responses to this object.
Domain: | `Object`
Range: | `Collection`
Functional: | True
tag | URI: | `https://www.w3.org/ns/activitystreams#tag` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Image",
      "summary": "Picture of Sally",
      "url": "http://example.org/sally.jpg",
      "tag": [
        {
          "type": "Person",
          "id": "http://sally.example.org",
          "name": "Sally"
        }
      ]
    }
Notes: | One or more "tags" that have been associated with an objects. A tag can be any kind of Object. The key difference between `attachment` and `tag` is that the former implies association by inclusion, while the latter implies associated by reference.
Domain: | `Object`
Range: | `Object` | `Link`
target | URI: | `https://www.w3.org/ns/activitystreams#target` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered the post to John",
      "type": "Offer",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1",
      "target": "http://john.example.org"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered the post to John",
      "type": "Offer",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1",
      "target": {
        "type": "Person",
        "name": "John"
      }
    }
Notes: | Describes the indirect object, or target, of the activity. The precise meaning of the target is largely dependent on the type of action being described but will often be the object of the English preposition "to". For instance, in the activity "John added a movie to his wishlist", the target of the activity is John's wishlist. An activity can have more than one target.
Domain: | `Activity`
Range: | `Object` | `Link`
to | URI: | `https://www.w3.org/ns/activitystreams#to` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally offered the post to John",
      "type": "Offer",
      "actor": "http://sally.example.org",
      "object": "http://example.org/posts/1",
      "target": "http://john.example.org",
      "to": [ "http://joe.example.org" ]
    }
Notes: | Identifies an entity considered to be part of the public primary audience of an Object
Domain: | `Object`
Range: | `Object` | `Link`
url | URI: | `https://www.w3.org/ns/activitystreams#url` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Document",
      "name": "4Q Sales Forecast",
      "url": "http://example.org/4q-sales-forecast.pdf"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Document",
      "name": "4Q Sales Forecast",
      "url": {
        "type": "Link",
        "href": "http://example.org/4q-sales-forecast.pdf"
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Document",
      "name": "4Q Sales Forecast",
      "url": [
        {
          "type": "Link",
          "href": "http://example.org/4q-sales-forecast.pdf",
          "mediaType": "application/pdf"
        },
        {
          "type": "Link",
          "href": "http://example.org/4q-sales-forecast.html",
          "mediaType": "text/html"
        }
      ]
    }
Notes: | Identifies one or more links to representations of the object
Domain: | `Object`
Range: | `xsd:anyURI` | `Link`
accuracy | URI: | `https://www.w3.org/ns/activitystreams#accuracy` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "Liu Gu Lu Cun, Pingdu, Qingdao, Shandong, China",
      "type": "Place",
      "latitude": 36.75,
      "longitude": 119.7667,
      "accuracy": 94.5
    }
Notes: | Indicates the accuracy of position coordinates on a `Place` objects. Expressed in properties of percentage. e.g. "94.0" means "94.0% accurate".
Domain: | `Place`
Range: | `xsd:float` [>= 0.0f, <= 100.0f]
Functional: | True
altitude | URI: | `https://www.w3.org/ns/activitystreams#altitude` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "Fresno Area",
      "altitude": 15.0,
      "latitude": 36.75,
      "longitude": 119.7667,
      "units": "miles"
    }
Notes: | Indicates the altitude of a place. The measurement units is indicated using the `units` property. If `units` is not specified, the default is assumed to be "`m`" indicating meters.
Domain: | `Object`
Range: | `xsd:float`
Functional: | True
content | URI: | `https://www.w3.org/ns/activitystreams#content` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "content": "A <em>simple</em> note"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "contentMap": {
        "en": "A <em>simple</em> note",
        "es": "Una nota <em>sencilla</em>",
        "zh-Hans": "一段<em>简单的</em>笔记"
      }
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "mediaType": "text/markdown",
      "content": "## A simple note\nA simple markdown `note`"
    }
Notes: | The content or textual representation of the Object encoded as a JSON string. By default, the value of `content` is HTML. The `mediaType` property can be used in the object to indicate a different content type. The content MAY be expressed using multiple language-tagged values.
Domain: | `Object`
Range: | `xsd:string` | `rdf:langString`
name | URI: | `https://www.w3.org/ns/activitystreams#name` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Note",
      "name": "A simple note"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Note",
      "nameMap": {
        "en": "A simple note",
        "es": "Una nota sencilla",
        "zh-Hans": "一段简单的笔记"
      }
    }
Notes: | A simple, human-readable, plain-text name for the object. HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged values.
Domain: | `Object` | `Link`
Range: | `xsd:string` | `rdf:langString`
duration | URI: | `https://www.w3.org/ns/activitystreams#duration` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Video",
      "name": "Birds Flying",
      "url": "http://example.org/video.mkv",
      "duration": "PT2H"
    }
Notes: | When the object describes a time-bound resource, such as an audio or video, a meeting, etc, the `duration` property indicates the object's approximate duration. The value MUST be expressed as an `xsd:duration` as defined by [[!xmlschema11-2]], section 3.3.6 (e.g. a period of 5 seconds is represented as "`PT5S`").
Domain: | `Object`
Range: | `xsd:duration`
Functional: | True
height | URI: | `https://www.w3.org/ns/activitystreams#height` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Link",
      "href": "http://example.org/image.png",
      "height": 100,
      "width": 100
    }
Notes: | On a `Link`, specifies a hint as to the rendering height in device-independent pixels of the linked resource.
Domain: | `Link`
Range: | `xsd:nonNegativeInteger`
Functional: | True
href | URI: | `https://www.w3.org/ns/activitystreams#href` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Link",
      "href": "http://example.org/abc",
      "mediaType": "text/html",
      "name": "Previous"
    }
Notes: | The target resource pointed to by a `Link`.
Domain: | `Link`
Range: | `xsd:anyURI`
Functional: | True
hreflang | URI: | `https://www.w3.org/ns/activitystreams#hreflang` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Link",
      "href": "http://example.org/abc",
      "hreflang": "en",
      "mediaType": "text/html",
      "name": "Previous"
    }
Notes: | Hints as to the language used by the target resource. Value MUST be a [[!BCP47]] Language-Tag.
Domain: | `Link`
Range: | [[!BCP47]] Language Tag
Functional: | True
partOf | URI: | `https://www.w3.org/ns/activitystreams#partOf` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 1 of Sally's notes",
      "type": "CollectionPage",
      "id": "http://example.org/collection?page=1",
      "partOf": "http://example.org/collection",
      "items": [
        {
          "type": "Note",
          "name": "Pizza Toppings to Try"
        },
        {
          "type": "Note",
          "name": "Thought about California"
        }
      ]
    }
Notes: | Identifies the `Collection` to which a `CollectionPage` objects items belong.
Domain: | `CollectionPage`
Range: | `Link` | `Collection`
Functional: | True
latitude | URI: | `https://www.w3.org/ns/activitystreams#latitude` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "Fresno Area",
      "latitude": 36.75,
      "longitude": 119.7667,
      "radius": 15,
      "units": "miles"
    }
Notes: | The latitude of a place
Domain: | `Place`
Range: | `xsd:float`
Functional: | True
longitude | URI: | `https://www.w3.org/ns/activitystreams#longitude` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "Fresno Area",
      "latitude": 36.75,
      "longitude": 119.7667,
      "radius": 15,
      "units": "miles"
    }
Notes: | The longitude of a place
Domain: | `Place`
Range: | `xsd:float`
Functional: | True
mediaType | URI: | `https://www.w3.org/ns/activitystreams#mediaType` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Link",
      "href": "http://example.org/abc",
      "hreflang": "en",
      "mediaType": "text/html",
      "name": "Next"
    }
Notes: | When used on a Link, identifies the MIME media type of the referenced resource. When used on an Object, identifies the MIME media type of the value of the `content` property. If not specified, the `content` property is assumed to contain `text/html` content.
Domain: | `Link` | `Object`
Range: | MIME Media Type
Functional: | True
endTime | URI: | `https://www.w3.org/ns/activitystreams#endTime` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Event",
      "name": "Going-Away Party for Jim",
      "startTime": "2014-12-31T23:00:00-08:00",
      "endTime": "2015-01-01T06:00:00-08:00"
    }
Notes: | The date and time describing the actual or expected ending time of the object. When used with an `Activity` object, for instance, the `endTime` property specifies the moment the activity concluded or is expected to conclude.
Domain: | `Object`
Range: | `xsd:dateTime`
Functional: | True
published | URI: | `https://www.w3.org/ns/activitystreams#published` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "A simple note",
      "type": "Note",
      "content": "Fish swim.",
      "published": "2014-12-12T12:12:12Z"
    }
Notes: | The date and time at which the object was published
Domain: | `Object`
Range: | `xsd:dateTime`
Functional: | True
startTime | URI: | `https://www.w3.org/ns/activitystreams#startTime` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Event",
      "name": "Going-Away Party for Jim",
      "startTime": "2014-12-31T23:00:00-08:00",
      "endTime": "2015-01-01T06:00:00-08:00"
    }
Notes: | The date and time describing the actual or expected starting time of the object. When used with an `Activity` object, for instance, the `startTime` property specifies the moment the activity began or is scheduled to begin.
Domain: | `Object`
Range: | `xsd:dateTime`
Functional: | True
radius | URI: | `https://www.w3.org/ns/activitystreams#radius` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "Fresno Area",
      "latitude": 36.75,
      "longitude": 119.7667,
      "radius": 15,
      "units": "miles"
    }
Notes: | The radius from the given latitude and longitude for a Place. The units is expressed by the `units` property. If `units` is not specified, the default is assumed to be "`m`" indicating "meters".
Domain: | `Place`
Range: | `xsd:float` [>= 0.0f]
Functional: | True
rel | URI: | `https://www.w3.org/ns/activitystreams#rel` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Link",
      "href": "http://example.org/abc",
      "hreflang": "en",
      "mediaType": "text/html",
      "name": "Preview",
      "rel": ["canonical", "preview"]
    }
Notes: | A link relation associated with a `Link`. The value MUST conform to both the [[HTML5]] and [[RFC5988]] "link relation" definitions. In the [[HTML5]], any string not containing the "space" U+0020, "tab" (U+0009), "LF" (U+000A), "FF" (U+000C), "CR" (U+000D) or "," (U+002C) characters can be used as a valid link relation.
Domain: | `Link`
Range: | [[!RFC5988]] or [HTML5] Link Relation
startIndex | URI: | `https://www.w3.org/ns/activitystreams#startIndex` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Page 1 of Sally's notes",
      "type": "OrderedCollectionPage",
      "startIndex": 0,
      "orderedItems": [
        {
          "type": "Note",
          "name": "Density of Water"
        },
        {
          "type": "Note",
          "name": "Air Mattress Idea"
        }
      ]
    }
Notes: | A non-negative integer value identifying the relative position within the logical view of a strictly ordered collection.
Domain: | `OrderedCollectionPage`
Range: | `xsd:nonNegativeInteger`
Functional: | True
summary | URI: | `https://www.w3.org/ns/activitystreams#summary` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "Cane Sugar Processing",
      "type": "Note",
      "summary": "A simple <em>note</em>"
    }
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "Cane Sugar Processing",
      "type": "Note",
      "summaryMap": {
        "en": "A simple <em>note</em>",
        "es": "Una <em>nota</em> sencilla",
        "zh-Hans": "一段<em>简单的</em>笔记"
      }
    }
Notes: | A natural language summarization of the object encoded as HTML. Multiple language tagged summaries MAY be provided.
Domain: | `Object`
Range: | `xsd:string` | `rdf:langString`
totalItems | URI: | `https://www.w3.org/ns/activitystreams#totalItems` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's notes",
      "type": "Collection",
      "totalItems": 2,
      "items": [
        {
          "type": "Note",
          "name": "Which Staircase Should I Use"
        },
        {
          "type": "Note",
          "name": "Something to Remember"
        }
      ]
    }
Notes: | A non-negative integer specifying the total number of objects contained by the logical view of the collection. This number might not reflect the actual number of items serialized within the `Collection` object instance.
Domain: | `Collection`
Range: | `xsd:nonNegativeInteger`
Functional: | True
units | URI: | `https://www.w3.org/ns/activitystreams#units` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "Fresno Area",
      "latitude": 36.75,
      "longitude": 119.7667,
      "radius": 15,
      "units": "miles"
    }
Notes: | Specifies the measurement units for the `radius` and `altitude` properties on a `Place` object. If not specified, the default is assumed to be "`m`" for "meters".
Domain: | `Place`
Range: | "`cm`" | "`feet`" | "`inches`" | "`km`" | "`m`" | "`miles`" | `xsd:anyURI`
Functional: | True
updated | URI: | `https://www.w3.org/ns/activitystreams#updated` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "Cranberry Sauce Idea",
      "type": "Note",
      "content": "Mush it up so it does not have the same shape as the can.",
      "updated": "2014-12-12T12:12:12Z"
    }
Notes: | The date and time at which the object was updated
Domain: | `Object`
Range: | `xsd:dateTime`
Functional: | True
width | URI: | `https://www.w3.org/ns/activitystreams#width` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Link",
      "href": "http://example.org/image.png",
      "height": 100,
      "width": 100
    }
Notes: | On a `Link`, specifies a hint as to the rendering width in device-independent pixels of the linked resource.
Domain: | `Link`
Range: | `xsd:nonNegativeInteger`
Functional: | True
subject | URI: | `https://www.w3.org/ns/activitystreams#subject` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally is an acquaintance of John's",
      "type": "Relationship",
      "subject": {
        "type": "Person",
        "name": "Sally"
      },
      "relationship": "http://purl.org/vocab/relationship/acquaintanceOf",
      "object": {
        "type": "Person",
        "name": "John"
      }
    }
Notes: | On a `Relationship` object, the `subject` property identifies one of the connected individuals. For instance, for a Relationship object describing "John is related to Sally", `subject` would refer to John.
Domain: | `Relationship`
Range: | `Link` | `Object`
Functional: | True
relationship | URI: | `https://www.w3.org/ns/activitystreams#relationship` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally is an acquaintance of John's",
      "type": "Relationship",
      "subject": {
        "type": "Person",
        "name": "Sally"
      },
      "relationship": "http://purl.org/vocab/relationship/acquaintanceOf",
      "object": {
        "type": "Person",
        "name": "John"
      }
    }
Notes: | On a `Relationship` object, the `relationship` property identifies the kind of relationship that exists between `subject` and `object`.
Domain: | `Relationship`
Range: | `Object`
describes | URI: | `https://www.w3.org/ns/activitystreams#describes` |
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's profile",
      "type": "Profile",
      "describes": {
        "type": "Person",
        "name": "Sally"
      },
      "url": "http://sally.example.org"
    }
Notes: | On a `Profile` object, the `describes` property identifies the object described by the Profile.
Domain: | `Profile`
Range: | `Object`
Functional: | True
formerType | URI: | `https://www.w3.org/ns/activitystreams#formerType` |
    {
    "@context": "https://www.w3.org/ns/activitystreams",
    "summary": "This image has been deleted",
    "type": "Tombstone",
    "formerType": "Image",
    "url": "http://example.org/image/2"
    }
Notes: | On a `Tombstone` object, the `formerType` property identifies the type of the object that was deleted.
Domain: | `Tombstone`
Range: | `Object`
Functional: | False
deleted | URI: | `https://www.w3.org/ns/activitystreams#deleted` |
    {
    "@context": "https://www.w3.org/ns/activitystreams",
    "summary": "This image has been deleted",
    "type": "Tombstone",
    "deleted": "2016-05-03T00:00:00Z"
    }
Notes: | On a `Tombstone` object, the `deleted` property is a timestamp for when the object was deleted.
Domain: | `Tombstone`
Range: | `xsd:dateTime`
Functional: | True

## Implementation Notes

### Audience Targeting

Conceptually, every Object has both a Primary and Secondary audience. The Primary audience consists of those entities directly involved or owning the object. The Secondary audience consists of the collection of entities sharing an interest in the object but who might not be directly involved (e.g."followers").

For instance, suppose a social network of three individuals: Bob, Joe and Jane. Bob and Joe are each friends with Jane but are not friends with one another. Bob has chosen to "follow" activities for which Jane is directly involved. Jane shares a file with Joe.

In this example, Jane and Joe are each directly involved in the file sharing activity and together make up the Primary Audience for that event. Bob, having an interest in activities involving Jane, is the Secondary Audience. Knowing this, a system that produces or consumes the activity can intelligently notify each person of the event.

While there are means (based on the action type, actor, object and target of the activity) to infer the primary audience for many types of activities, heuristics do not work in every case and do not provide a means of identifying the secondary audience. The `to`, `cc`, `bto` and `bcc` properties MAY be used within an Object to explicitly identify the Primary and Secondary audiences.

The prototypical use case for an Object containing these properties is the publication and redistribution of objects through an intermediary. That is, an event source generates the object and publishes it to the intermediary which determines a subset of items to display to specific individual users or groups. Such a determination can be made, in part, by identifying the Primary and Secondary Audiences for each object.

When the event source generates the object and specifies values for the `to` and `cc` fields, the intermediary SHOULD redistribute that object with the values of those fields intact, allowing any processor to see who the object has been targeted to. This is precisely the same model used by the `to` and `cc` fields in email systems.

There are situations, however, in which disclosing the identity of specific members of the audience may be inappropriate. For instance, a user may not wish to let other users know that they are interested in various topics, individuals or types of events. To support this option, an implementation generating an object MAY use the `bto` and `bcc` properties to list entities to whom the object should be privately targeted. When an intermediary receives an object containing these properties, it MUST remove those values prior to redistributing the object. The intent is that systems MUST consider entities listed within the `bto` and `bcc` properties as part of the Primary and Secondary audience but MUST NOT disclose that fact to any other party.

Audience targeting information included within an Object only describes the intent of the object creator. With clear exception given to the appropriate handling of `bto` and `bcc`, this specification leaves it up to implementations to determine how the audience targeting information is used.

#### Audience and Context

Activities are rarely isolated events. Often, multiple individual activities will be performed around a similar context or audience. For instance, a collaborators working on a shared project might perform multiple related activities in the process of achieving some goal. Such activities can be logically grouped together using the `context` property, and scoped to a particular audience using the `audience` property.

For instance, the following shows two related activities that share a common `context` and `audience`:

    {
     "@context": "https://www.w3.org/ns/activitystreams",
     "summary": "Activities in Project XYZ",
     "type": "Collection",
     "items": [
       {
         "summary": "Sally created a note",
         "type": "Create",
         "id": "http://activities.example.com/1",
         "actor": "http://sally.example.org",
         "object": {
          "summary": "A note",
           "type": "Note",
           "id": "http://notes.example.com/1",
           "content": "A note"
         },
         "context": {
           "type": "http://example.org/Project",
           "name": "Project XYZ"
         },
         "audience": {
           "type": "Group",
           "name": "Project XYZ Working Group"
         },
         "to": "http://john.example.org"
       },
       {
         "summary": "John liked Sally's note",
         "type": "Like",
         "id": "http://activities.example.com/1",
         "actor": "http://john.example.org",
         "object": "http://notes.example.com/1",
         "context": {
           "type": "http://example.org/Project",
           "name": "Project XYZ"
         },
         "audience": {
           "type": "Group",
           "name": "Project XYZ Working Group"
         },
         "to": "http://sally.example.org"
       }
     ]
    }

### Representing Relationships Between Entities

The `Relationship` object is used to represent relationships between individuals. It can be used, for instance, to describe that one person is a friend of another, or that one person is a member of a particular organization. The intent of modeling Relationship in this way is to allow descriptions of activities that operate on the relationships in general, and to allow representation of Collections of relationships.

For instance, many social systems have a notion of a "friends list". These are the collection of individuals that are directly connected within a person's social graph. Suppose we have a user, Sally, with direct relationships to users Joe and Jane. Sally follows Joe's updates while Sally and Jane have a mutual relationship.

Using the `Relationship` object, we can model these relationships as:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally's friends list",
      "type": "Collection",
      "items": [
        {
          "summary": "Sally is influenced by Joe",
          "type": "Relationship",
          "subject": {
            "type": "Person",
            "name": "Sally"
          },
          "relationship": "http://purl.org/vocab/relationship/influencedBy",
          "object": {
            "type": "Person",
            "name": "Joe"
          }
        },
        {
          "summary": "Sally is a friend of Jane",
          "type": "Relationship",
          "subject": {
            "type": "Person",
            "name": "Sally"
          },
          "relationship": "http://purl.org/vocab/relationship/friendOf",
          "object": {
            "type": "Person",
            "name": "Jane"
          }
        }
      ]
    }

The `relationship` property specifies the kind of relationship that exists between the two individuals identified by the `subject` and `object` properties. Used together, these three properties form what is commonly known as a "reified statement" where `subject` identifies the subject, `relationship` identifies the predicate, and `object` identifies the object.

While use of reified statements can be problematic and confusing in certain situations, their use within the Activity Streams vocabulary to describe relationships provides a straightforward mechanism of describing changes to an individual's social graph. For instance, to indicate that Sally has created a new relationship to user Matt, an implementer can use the `Relationship` object together with the `Create` activity:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally became a friend of Matt",
      "type": "Create",
      "actor": "http://sally.example.org",
      "object": {
        "type": "Relationship",
        "subject": "http://sally.example.org",
        "relationship": "http://purl.org/vocab/relationship/friendOf",
        "object": "http://matt.example.org",
        "startTime": "2015-04-21T12:34:56"
      }
    }

Additionally, modeling the relationship in this way allows implementers to articulate additional properties of the relationship itself. For instance, the date and time at which the relationship began or ended.

Implementations may reuse existing vocabularies that have been developed for the purpose of describing relationships, or create their own guided by requirements of their particular implementation. Existing vocabularies include the "Friend of a Friend" and "Relationship" vocabularies.

#### Modeling "friend requests"

One common use case for many social platforms is the establishment of symmetrical "friend" relationships, in which one user initially extends a request to another user to establish a new connection. Once the connection is made, both users automatically begin receiving notifications about activities performed by the other, and the established relationship becomes visible in either user's "friends list".

The initial "friend request" can be modeled by composing the `Offer` and `Relationship` object types as in the following example:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "id": "http://example.org/connection-requests/123",
      "summary": "Sally requested to be a friend of John",
      "type": "Offer",
      "actor": "acct:sally@example.org",
      "object": {
        "summary": "Sally and John's friendship",
        "id": "http://example.org/connections/123",
        "type": "Relationship",
        "subject": "acct:sally@example.org",
        "relationship": "http://purl.org/vocab/relationship/friendOf",
        "object": "acct:john@example.org"
      },
      "target": "acct:john@example.org"
    }

Assuming the "friend request" is accepted, the remaining steps in this common application scenario can be represented as a set of distinct activities:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "Sally and John's relationship history",
      "type": "Collection",
      "items": [
        {
          "summary": "John accepted Sally's friend request",
          "id": "http://example.org/activities/122",
          "type": "Accept",
          "actor": "acct:john@example.org",
          "object": "http://example.org/connection-requests/123",
          "inReplyTo": "http://example.org/connection-requests/123",
          "context": "http://example.org/connections/123",
          "result": [
            "http://example.org/activities/123",
            "http://example.org/activities/124",
            "http://example.org/activities/125",
            "http://example.org/activities/126"
          ]
        },
        {
          "summary": "John followed Sally",
          "id": "http://example.org/activities/123",
          "type": "Follow",
          "actor": "acct:john@example.org",
          "object": "acct:sally@example.org",
          "context": "http://example.org/connections/123"
        },
        {
          "summary": "Sally followed John",
          "id": "http://example.org/activities/124",
          "type": "Follow",
          "actor": "acct:sally@example.org",
          "object": "acct:john@example.org",
          "context": "http://example.org/connections/123"
        },
        {
          "summary": "John added Sally to his friends list",
          "id": "http://example.org/activities/125",
          "type": "Add",
          "actor": "acct:john@example.org",
          "object": "http://example.org/connections/123",
          "target": {
            "type": "Collection",
            "summary": "John's Connections"
          },
          "context": "http://example.org/connections/123"
        },
        {
          "summary": "Sally added John to her friends list",
          "id": "http://example.org/activities/126",
          "type": "Add",
          "actor": "acct:sally@example.org",
          "object": "http://example.org/connections/123",
          "target": {
            "type": "Collection",
            "summary": "Sally's Connections"
          },
          "context": "http://example.org/connections/123"
        }
      ]
    }

As illustrated in this example, accepting the "friend request" results in four additional activities including: John following Sally, Sally following John, John adding the relationship with Sally to his collection of Connections, and Sally adding the relationship with John to her collection of Connections.

In this example,

1. The optional `result` property is used within the `Accept` activity to identify the additional activities that occurred as a result of the accept.
2. The optional `context` property is used to relate the various activities back to a common reference point, which in this example is the relationship being established. The `context` allows an implementation to efficiently group related activities together for display or analytic purposes.

### Representing Places

The `Place` object is used to represent both physical and logical locations. While numerous existing vocabularies exist for describing locations in a variety of ways, inconsistencies and incompatibilities between those vocabularies make it difficult to achieve appropriate interoperability between implementations. The `Place` object is included within the Activity vocabulary to provide a minimal, interoperable starting point for describing locations consistently across Activity Streams 2.0 implementations.

The `Place` object is intentionally flexible. It can, for instance, be used to identify a location simply by name:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "San Francisco, CA"
    }

Or, by `longitude` and `latitude`:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Place",
      "name": "San Francisco, CA",
      "longitude": "122.4167",
      "latitude": "37.7833"
    }

The `Place` object can also describe an area around a given point using the `radius` property, the `altitude` of the location, and a degree of `accuracy`.

While publishers are not required to use these specific properties and MAY make use of other mechanisms for describing locations, consuming implementations that support the `Place` object MUST support the use of these properties.

### Representing Questions

The `Question` object can be used to express various types of inquiries.

For instance, simple open-ended questions similar to those posted to crowd-sourced question and answer websites:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "A question about robots",
      "id": "http://help.example.org/question/1",
      "type": "Question",
      "content": "I'd like to build a robot to feed my cat. Should I use Arduino or Raspberry Pi?"
    }

Multiple-choice questions or "polls" are also supported using either the `oneOf` or `anyOf` properties:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "id": "http://polls.example.org/question/1",
      "name": "A question about robots",
      "type": "Question",
       "content": "I'd like to build a robot to feed my cat. Which platform is best?",
       "oneOf": [
         {"name": "arduino"},
         {"name": "raspberry pi"}
       ]
     }

Responses to questions are expressed as `Objects` containing an `inReplyto` property referencing the Question.

    {
     "@context": "https://www.w3.org/ns/activitystreams",
     "attributedTo": "http://sally.example.org",
     "inReplyTo": "http://polls.example.org/question/1",
     "name": "arduino"
    }

Because `Question` objects are also instances of `Activity`, the `result` property can be used to express the results or outcome of the Question (as appropriate):

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "A question about robots",
      "id": "http://polls.example.org/question/1",
      "type": "Question",
       "content": "I'd like to build a robot to feed my cat. Which platform is best?",
       "oneOf": [
         {"name": "arduino"},
         {"name": "raspberry pi"}
       ],
       "replies": {
         "type": "Collection",
         "totalItems": 3,
         "items": [
           {
             "attributedTo": "http://sally.example.org",
             "inReplyTo": "http://polls.example.org/question/1",
             "name": "arduino"
           },
           {
             "attributedTo": "http://joe.example.org",
             "inReplyTo": "http://polls.example.org/question/1",
             "name": "arduino"
           },
           {
             "attributedTo": "http://john.example.org",
             "inReplyTo": "http://polls.example.org/question/1",
             "name": "raspberry pi"
           }
         ]
       },
       "result": {
         "type": "Note",
         "content": "Users are favoriting &quot;arduino&quot; by a 33% margin."
       }
     }

### Inverse Activities and "Undo"

Several of the core Activity types are defined as natural inversions of one another. These include:

- `Accept` and `Reject`,
- `Arrive` and `Leave`,
- `Join` and `Leave`,
- `Create` and `Delete`,
- `Like` and `Dislike`

It is important to note that these types of activities are semantically distinct from one another and have no direct relationship on the other. That is, for example, if an actor "likes" a note at one point in time then later "dislikes" it, the "dislike" activity does not "undo" or negate out the prior "like".

The appropriate interpretation for the following is that Sally first liked, then later disliked John's note:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "summary": "History of John's note",
      "type": "Collection",
      "items": [
        {
          "summary": "Sally liked John's note",
          "type": "Like",
          "actor": "http://sally.example.org",
          "id": "http://activities.example.com/1",
          "published": "2015-11-12T12:34:56Z",
          "object": {
            "summary": "John's note",
            "type": "Note",
            "id": "http://notes.example.com/1",
            "attributedTo": "http://john.example.org",
            "content": "My note"
          }
        },
        {
          "summary": "Sally disliked John's note",
          "type": "Dislike",
          "actor": "http://sally.example.org",
          "id": "http://activities.example.com/2",
          "published": "2015-12-11T21:43:56Z",
          "object": {
            "summary": "John's note",
            "type": "Note",
            "id": "http://notes.example.com/1",
            "attributedTo": "http://john.example.org",
            "content": "My note"
          }
        }
      ]
     }

The `Undo` activity type is defined to provide the specific ability to undo or cancel out a prior activity. The appropriate interpretation for the following, then, is that Sally liked John's note at one point but has explicitly redacted that like later on.

    {
     "@context": "https://www.w3.org/ns/activitystreams",
     "summary": "History of John's note",
     "type": "Collection",
     "items": [
       {
         "summary": "Sally liked John's note",
         "type": "Like",
         "id": "http://activities.example.com/1",
         "actor": "http://sally.example.org",
         "published": "2015-11-12T12:34:56Z",
         "object": {
           "summary": "John's note",
           "type": "Note",
           "id": "http://notes.example.com/1",
           "attributedTo": "http://john.example.org",
           "content": "My note"
         }
       },
       {
         "summary": "Sally no longer likes John's note",
         "type": "Undo",
         "id": "http://activities.example.com/2",
         "actor": "http://sally.example.org",
         "published": "2015-12-11T21:43:56Z",
         "object": "http://activities.example.com/1"
       }
     ]
    }

The end result of the former example is that Sally has indicated that she changed her opinion about John's note and now dislikes it, while in the latter example she currently neither likes or dislikes it.

## Mentions, Tags and Other Common Social Microsyntaxes

Many social software systems use special text-based microsyntaxes that allow users to define special addressing for notifications, linking, or categorization within objects. For example, including text such as "`@username`" within an object's content will often route the object to a special "mentions" or "inbox" stream for a particular user. Likewise, including text such as "`#topic`" within the object's content will often mark the object as being related to the topic "`topic`". Such mechanisms are commonly referred to as "mentions" and "hashtags", respectively.

While such microsyntaxes MAY be used within the values of the `content`, `name`, and `summary` properties on an Activity Streams `Object`, implementations SHOULD NOT be required to parse the values of those properties in order to determine the appropriate routing of notifications, categorization or linking between objects. Instead, publishers SHOULD make appropriate use of the vocabulary terms provided specifically for these purposes.

For example, suppose that an author wishes to send a note of thanks to another user named "@sally" with a hashtag of "#givingthanks". A typical way this message would appear within the content of a note is shown below:

A simple note with a mention an a hashtag:

     "Thank you @sally for all your hard work! #givingthanks"

A typical social software implementation would typically render such a content such that "`@sally`" is replaced with a hyperlink to "@sally"'s social profile page and "`#givingthanks`" is replaced with a hyperlink to a listing of other notes that have been "tagged" with the same topic. Most implementations would also send a special notification to sally letting her know that a note mentioning her has been created.

The following illustrates an equivalent Activity Streams `Note` object:

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "A thank-you note",
      "type": "Note",
      "content": "Thank you <a href='http://sally.example.org'>@sally</a>
          for all your hard work!
          <a href='http://example.org/tags/givingthanks'>#givingthanks</a>",
      "to": {
        "name": "Sally",
        "type": "Person",
        "id": "http://sally.example.org"
      },
      "tag": {
        "id": "http://example.org/tags/givingthanks",
        "name": "#givingthanks"
      }
    }

The `to` property indicates that the user "@sally" is to be considered part of the primary audience of the note and should therefore receive notification. The `tag` property associates the Note with a reference to "`http://example.org/tags/givingthanks`". Note that the `content` still includes the "`@sally`" and "`#givingthanks`" microsyntaxes but that consuming implementations are not required to parse those in order to make the appropriate associations.

In the case a publisher wishes to indicate a mention without an associated notification, the publisher can use the `Mention` object type as a value of the `tag` property.

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "name": "A thank-you note",
      "type": "Note",
      "content": "Thank you @sally for all your hard work! #givingthanks",
      "tag": [
        {
          "type": "Mention",
          "href": "http://example.org/people/sally",
          "name": "@sally"
        },
        {
          "id": "http://example.org/tags/givingthanks",
          "name": "#givingthanks"
        }
      ]
    }

### Origin and Target

The `origin` and `target` properties of an Activity respectively identify the entities from which and to which the action is directed. For instance, in the English statement, "Sally moved the file from Folder A to Folder B", the `origin` is "Folder A" and the `target` is "Folder B". This activity is illustrated in the example below:

    {
        "@context": "https://www.w3.org/ns/activitystreams",
        "summary": "Sally moved the sales figures from Folder A to Folder B",
        "type": "Move",
        "actor": "http://sally.example.org",
        "object": {
          "type": "Document",
          "name": "sales figures"
        },
        "origin": {
          "type": "Collection",
          "name": "Folder A"
        },
        "target": {
          "type": "Collection",
          "name": "Folder B"
        }
      }

The `origin` property is applicable to any type of activity for which the English preposition "from" can be considered applicable in the sense of identifying the origin, source or provenance of the activity's `object`.

The `target` property is applicable to any type of activity for which the English preposition "to" can be considered applicable in the sense of identifying the indirect object or destination of the activity's `object`.

### Activity Type Motivating Use Cases

The Activity types defined in this vocabulary have been primarily selected to address the commonly implemented social use cases described below.

#### Content Management

The Content Management use case primarily deals with activities that involve the creation, modification or deletion of content. This includes, for instance, activities such as "John created a new note", "Sally updated an article", and "Joe deleted the photo".

Relevant Activities:

- `Create`
- `Delete`
- `Update`

#### Collection Management

The Collection Management use case primarily deals with activities involving the management of content within collections. Examples of collections include things like folders, albums, friend lists, etc. This includes, for instance, activities such as "Sally added a file to Folder A", "John moved the file from Folder A to Folder B", etc.

Relevant Activities:

- `Add`
- `Move`
- `Remove`

#### Reactions

The Reactions use case primarily deals with reactions to content. This can include activities such as liking or disliking content, ignoring updates, flagging content as being inappropriate, accepting or rejecting objects, etc.

Relevant Activities:

- `Accept`
- `Block`
- `Dislike`
- `Flag`
- `Ignore`
- `Like`
- `Reject`
- `TentativeAccept`
- `TentativeReject`

#### Event RSVP

The Event RSVP use case primarily deals with invitations to events and RSVP type responses.

Relevant Activities:

- `Accept`
- `Ignore`
- `Invite`
- `Reject`
- `TentativeAccept`
- `TentativeReject`

#### Group Management

The Group Management use case primarily deals with management of groups. It can include, for instance, activities such as "John added Sally to Group A", "Sally joined Group A", "Joe left Group A", etc.

Relevant Activities:

- `Add`
- `Join`
- `Leave`
- `Remove`

#### Content Experience

The Content Experience use case primarily deals with describing activities involving listening to, reading, or viewing content. For instance, "Sally read the article", "Joe listened to the song".

Relevant Activities:

- `Listen`
- `Read`
- `View`

#### Geo-Social Events

The Geo-Social Events use case primarily deals with activities involving geo-tagging type activities. For instance, it can include activities such as "Joe arrived at work", "Sally left work", and "John is travel from home to work".

Relevant Activities:

- `Arrive`
- `Leave`
- `Travel`

#### Notification

The Notification use case primarily deals with calling attention to particular objects or notifications.

Relevant Activities:

- `Announce`

#### Questions

the Questions use case primarily deals with representing inquiries of any type. See for more information.

Relevant Activities:

- `Question`

#### Relationship Management

The Relationship Management use case primarily deals with representing activities involving the management of interpersonal and social relationships (e.g. friend requests, management of social network, etc). See for more information.

Relevant Activities:

- `Accept`
- `Add`
- `Block`
- `Create`
- `Delete`
- `Follow`
- `Ignore`
- `Invite`
- `Reject`

#### Negating Activity

The Negating Activity use case primarily deals with the ability to redact previously completed activities. See for more information.

Relevant Activities:

- `Undo`

#### Offers

The Offers use case deals with activities involving offering one object to another. It can include, for instance, activities such as "Company A is offering a discount on purchase of Product Z to Sally", "Sally is offering to add a File to Folder A", etc.

Relevant Activities:

- `Offer`

## Non-normative Ontology Definition

A non-normative turtle definition of the Activity Streams 2.0 vocabulary is provided here and/or at the namespace as a convenience for implementers wishing to use RDF mechanisms for processing Activity Streams 2.0. Note, however, that this document provides the normative definition of the Activity Streams 2.0 vocabulary.

## Changelog

The following notable changes have been made to this document since the previous candidate recommendation of 2016-12-15.

- Removed the four normative `relationship` values for lack of implementation. Changed examples to use terms from the Relationship vocabulary.
- Removed process sections, especially those noting exit criteria and at-risk features.
- Fixed a typo in `deleted` range.
- Added `datetime` and `boolean` to range of `closed` property.
- Set the domain of the `first`, `last`, and `current` properties to `Collection`.