Notification Pattern

Announce Relationship

Description: This pattern is used to announce a relationship between two resources
Pattern Categories: Announcements

Properties

@context

The @context must include:

id

Notify payloads must describe an AS 2.0 activity. The activity has an id which must be a URI, and the use of URN:UUID is recommended. An HTTP URI may be used instead, but in such cases the URI should resolve to a useful resource.

type

The activity has a type which should include Announce & coar-notify:RelationshipAction

actor

The actor describes the party responsible for this activity. The actor has:

  • An id which must be a URI identifying the actor (HTTP URIs are preferred, but any valid URI is permitted)
  • A type which should be one of: Application, Group, Organization, Person or Service from AS 2.0.
  • The actor may also have a name

origin

The origin describes the system which has sent the notification. The origin has:

  • An id which is an HTTP URI identifying the sending system
  • A type which should include the value Service from AS 2.0.
  • An inbox which is the HTTP URI of the LDN inbox for the origin

context

When the object describes the result of some service acting on a resource, the context may be used to refer to that second resource. This particular example has the following properties:

  • An id which is the HTTP URI of the "landing page" for the resource.
  • A type which should include the value AboutPage from schema.org.
  • An ietf:cite-as which contains the persistent HTTP URI (sometimes called the "PID") which is to be used to cite or link to the resource.
  • A url containing the details of the actual content resource. The url has:
    • An id containing the HTTP URI of the content file for the resource.
    • A type describing the content file.
    • A mediaType which contains the MIME Type of the content file.

object

The object describes the resource which is the main focus of this notification. This particular example has the following properties:

  • An id which contains the URI for the relationship with the target-hosted resource
  • A type which should describes the type of the relationship and should include a value from AS 2.0
  • A 'triple' describing the relationship, in the form:
    • as:subject: containing the URI for the local resource
    • as:relationship: containing a relationship URI
    • as:object: containing the URI for the remote resource

target

The target describes the system which is intended to receive the notification. The target has:

  • An id which is an HTTP URI identifying the receiving system
  • A type which should include the value Service from AS 2.0.
  • An inbox which is the HTTP URI of the LDN inbox for the target

Example JSON-LD Payload

{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://purl.org/coar/notify"
  ],
  "actor": {
    "id": "https://research-organisation.org",
    "name": "Research Organisation",
    "type": "Organization"
  },
  "context": {
    "id": "https://another-research-organisation.org/repository/datasets/item/201203421/",
    "ietf:cite-as": "https://doi.org/10.5555/999555666",
    "type": "sorg:AboutPage",
    "url": {
      "id": "https://another-research-organisation.org/repository/datasets/item/201203421/data_archive.zip",
      "mediaType": "application/zip",
      "type": [
        "Article",
        "sorg:Dataset"
      ]
    }
  },
  "id": "urn:uuid:94ecae35-dcfd-4182-8550-22c7164fe23f",
  "object": {
    "as:object": "https://another-research-organisation.org/repository/datasets/item/201203421/",
    "as:relationship": "http://purl.org/vocab/frbr/core#supplement",
    "as:subject": "https://research-organisation.org/repository/item/201203/421/",
    "id": "urn:uuid:74FFB356-0632-44D9-B176-888DA85758DC",
    "type": "Relationship"
  },
  "origin": {
    "id": "https://research-organisation.org/repository",
    "inbox": "https://research-organisation.org/inbox/",
    "type": "Service"
  },
  "target": {
    "id": "https://another-research-organisation.org/repository",
    "inbox": "https://another-research-organisation.org/inbox/",
    "type": "Service"
  },
  "type": [
    "Announce",
    "coar-notify:RelationshipAction"
  ]
}

Example scenarios which use this pattern

ID Scenario Participating Systems
10 Repository announces relationship between local resource and second resource hosted on another repository Repository <-> Repository