$schema: ../codegen/schema.yaml
name: Link
compactName: Link
uri: "https://www.w3.org/ns/activitystreams#Link"
entity: false
description: |
  A Link is an indirect, qualified reference to a resource identified by a URL.
  The fundamental model for links is established by RFC 5988. Many of the
  properties defined by the Activity Vocabulary allow values that are either
  instances of {@link Object} or {@link Link}. When a {@link 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 Link} are properties of the reference as opposed to properties of
  the resource.
defaultContext: "https://www.w3.org/ns/activitystreams"

properties:
- singularName: href
  functional: true
  compactName: href
  uri: "https://www.w3.org/ns/activitystreams#href"
  description: "The target resource pointed to by a {@link Link}."
  range:
  - "http://www.w3.org/2001/XMLSchema#anyURI"

- pluralName: rels
  singularName: rel
  singularAccessor: true
  compactName: rel
  uri: "https://www.w3.org/ns/activitystreams#rel"
  description: |
    A link relation associated with a {@link Link}. The value MUST conform to
    both the HTML5 and RFC 5988 "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 comma (U+002C) characters can
    be used as a valid link relation.
  range:
  - "http://www.w3.org/2001/XMLSchema#string"

- singularName: mediaType
  functional: true
  compactName: mediaType
  uri: "https://www.w3.org/ns/activitystreams#mediaType"
  description: |
    When used on a {@link Link}, identifies the MIME media type of the
    referenced resource.
  range:
  - "http://www.w3.org/2001/XMLSchema#string"

- pluralName: names
  singularName: name
  singularAccessor: true
  compactName: name
  uri: "https://www.w3.org/ns/activitystreams#name"
  description: |
    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.
  range:
  - "http://www.w3.org/2001/XMLSchema#string"
  - "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"

- singularName: language
  functional: true
  compactName: hreflang
  uri: "https://www.w3.org/ns/activitystreams#hreflang"
  description: |
    Hints as to the language used by the target resource.
    Value MUST be a BCP 47 Language-Tag.
  range:
  - "fedify:langTag"

- singularName: height
  functional: true
  compactName: height
  uri: "https://www.w3.org/ns/activitystreams#height"
  description: |
    On a {@link Link}, specifies a hint as to the rendering height in
    device-independent pixels of the linked resource. 
  range:
  - "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"

- singularName: width
  functional: true
  compactName: width
  uri: "https://www.w3.org/ns/activitystreams#width"
  description: |
    On a {@link Link}, specifies a hint as to the rendering width in
    device-independent pixels of the linked resource.
  range:
  - "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"

- pluralName: previews
  singularName: preview
  compactName: preview
  uri: "https://www.w3.org/ns/activitystreams#preview"
  description: "Identifies an entity that provides a preview of this object."
  range:
  - "https://www.w3.org/ns/activitystreams#Link"
  - "https://www.w3.org/ns/activitystreams#Object"
