Skip to content

Disjointness of Activity Streams types #641

Open
@silverpill

Description

@silverpill

Activity Streams 2.0 defines 8 core types and a bigger number of extended types. All of them are sub-types of either Object or Link, which are described as disjoint, but specification doesn't say anything about disjointedness of derived types.

There are two situations where disjointness may matter:

  • Sub-typing. Is it possible to define a new type that extends two or more core types (e.g. Activity and Collection)?
  • Multi-typing. Is it possible to create an object with two or more extended types (e.g. ["Accept", "Person"])?

Most (if not all) of these combinations don't make sense, and as an implementer I would prefer to not deal with them, and fortunately I don't have to, because existing implementations don't use combinations. However, while there is no guidance on working with combinations of standard types, they are not explicitly forbidden. One of the core types, OrderedCollectionPage, is even defined as a sub-type of both OrderedCollection and CollectionPage, implying that multiple inheritance is possible.

Proposal

  • Discourage the use of type combinations in a Primer page (both multiple inheritance and multi-typing). Note that this only applies to standard types; for extension types, multi-typing is required by the standard.
  • Make this a requirement in AS-next. Re-define OrderedCollectionPage as a sub-type of CollectionPage.

Further work (optional)

  • Introduce Actor core type, which is disjoint with Activity and Collection (discussion).
  • Introduce SpecializedObject core type, which extends Object and is disjoint with Activity, Collection and Actor.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs primer pageNeed to add a page at https://www.w3.org/wiki/Activity_Streams/Primer on this topicNext versionThings that should probably be resolved in a next version of AS2

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions