SEO.JSONLD.MediaObject (SEO v0.3.0-rc.0)

View Source

A media object, such as an image, video, audio, or text object embedded in a web page or a downloadable dataset i.e. DataDownload. Note that a creative work may have many media objects associated with it on the same web page. For example, a page about a single song (MusicRecording) may have a music video (VideoObject), and a high and low bandwidth audio stream (2 AudioObject's).

Helper for building a Schema.org MediaObject JSON-LD structure.

Summary

Types

t()

A JSON-LD map ready to be nested or rendered. String-keyed, always includes "@type" set to "MediaObject", plus any camelCased field keys the caller provided (see build/1). "@context" is added at render time by SEO.JSONLD.meta/1 on the top-level node only.

Functions

Build a MediaObject JSON-LD map.

Types

attrs()

@type attrs() ::
  %{
    optional(:associated_article) => SEO.JSONLD.NewsArticle.t() | map(),
    optional(:bitrate) => String.t(),
    optional(:content_size) => String.t(),
    optional(:content_url) => URI.t() | String.t(),
    optional(:duration) =>
      Duration.t() | String.t() | SEO.JSONLD.QuantitativeValue.t() | map(),
    optional(:embed_url) => URI.t() | String.t(),
    optional(:encodes_creative_work) => SEO.JSONLD.CreativeWork.t() | map(),
    optional(:encoding_format) => String.t() | URI.t(),
    optional(:end_time) =>
      DateTime.t() | NaiveDateTime.t() | String.t() | Time.t(),
    optional(:height) => SEO.JSONLD.QuantitativeValue.t() | map(),
    optional(:ineligible_region) =>
      SEO.JSONLD.Place.t() | map() | String.t() | SEO.JSONLD.GeoShape.t(),
    optional(:interpreted_as_claim) => SEO.JSONLD.Claim.t() | map(),
    optional(:player_type) => String.t(),
    optional(:production_company) => SEO.JSONLD.Organization.t() | map(),
    optional(:regions_allowed) => SEO.JSONLD.Place.t() | map(),
    optional(:requires_subscription) =>
      SEO.JSONLD.MediaSubscription.t() | map() | boolean(),
    optional(:sha256) => String.t(),
    optional(:start_time) =>
      DateTime.t() | NaiveDateTime.t() | String.t() | Time.t(),
    optional(:upload_date) =>
      DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
    optional(:width) => SEO.JSONLD.QuantitativeValue.t() | map(),
    optional(:about) => SEO.JSONLD.Thing.t() | map(),
    optional(:abstract) => String.t(),
    optional(:access_mode) => String.t(),
    optional(:access_mode_sufficient) => SEO.JSONLD.ItemList.t() | map(),
    optional(:accessibility_api) => String.t(),
    optional(:accessibility_control) => String.t(),
    optional(:accessibility_feature) => String.t(),
    optional(:accessibility_hazard) => String.t(),
    optional(:accessibility_summary) => String.t(),
    optional(:accountable_person) => SEO.JSONLD.Person.t() | map(),
    optional(:acquire_license_page) =>
      SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
    optional(:aggregate_rating) => SEO.JSONLD.AggregateRating.t() | map(),
    optional(:alternative_headline) => String.t(),
    optional(:archived_at) =>
      SEO.JSONLD.WebPage.t() | map() | URI.t() | String.t(),
    optional(:assesses) => String.t() | SEO.JSONLD.DefinedTerm.t() | map(),
    optional(:associated_media) => t() | map(),
    optional(:audience) => SEO.JSONLD.Audience.t() | map(),
    optional(:audio) =>
      SEO.JSONLD.Clip.t()
      | map()
      | SEO.JSONLD.MusicRecording.t()
      | SEO.JSONLD.AudioObject.t(),
    optional(:author) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:award) => String.t(),
    optional(:awards) => String.t(),
    optional(:character) => SEO.JSONLD.Person.t() | map(),
    optional(:citation) => SEO.JSONLD.CreativeWork.t() | map() | String.t(),
    optional(:comment) => SEO.JSONLD.Comment.t() | map(),
    optional(:comment_count) => integer(),
    optional(:conditions_of_access) => String.t(),
    optional(:content_location) => SEO.JSONLD.Place.t() | map(),
    optional(:content_rating) => String.t() | SEO.JSONLD.Rating.t() | map(),
    optional(:content_reference_time) =>
      DateTime.t() | NaiveDateTime.t() | String.t(),
    optional(:contributor) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:copyright_holder) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:copyright_notice) => String.t(),
    optional(:copyright_year) => number(),
    optional(:correction) =>
      SEO.JSONLD.CorrectionComment.t() | map() | String.t() | URI.t(),
    optional(:country_of_origin) => SEO.JSONLD.Country.t() | map(),
    optional(:creative_work_status) =>
      SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
    optional(:creator) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:credit_text) => String.t(),
    optional(:date_created) =>
      DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
    optional(:date_modified) =>
      DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
    optional(:date_published) =>
      Date.t() | String.t() | DateTime.t() | NaiveDateTime.t(),
    optional(:digital_source_type) =>
      :algorithmic_media_digital_source
      | :algorithmically_enhanced_digital_source
      | :composite_capture_digital_source
      | :composite_digital_source
      | :composite_synthetic_digital_source
      | :composite_with_trained_algorithmic_media_digital_source
      | :data_driven_media_digital_source
      | :digital_art_digital_source
      | :digital_capture_digital_source
      | :minor_human_edits_digital_source
      | :multi_frame_computational_capture_digital_source
      | :negative_film_digital_source
      | :positive_film_digital_source
      | :print_digital_source
      | :screen_capture_digital_source
      | :trained_algorithmic_media_digital_source
      | :virtual_recording_digital_source,
    optional(:discussion_url) => URI.t() | String.t(),
    optional(:display_location) => SEO.JSONLD.Place.t() | map(),
    optional(:edit_eidr) => String.t() | URI.t(),
    optional(:editor) => SEO.JSONLD.Person.t() | map(),
    optional(:educational_alignment) => SEO.JSONLD.AlignmentObject.t() | map(),
    optional(:educational_level) =>
      String.t() | URI.t() | SEO.JSONLD.DefinedTerm.t() | map(),
    optional(:educational_use) =>
      SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
    optional(:encoding) => t() | map(),
    optional(:encodings) => t() | map(),
    optional(:example_of_work) => SEO.JSONLD.CreativeWork.t() | map(),
    optional(:expires) =>
      Date.t() | String.t() | DateTime.t() | NaiveDateTime.t(),
    optional(:file_format) => String.t() | URI.t(),
    optional(:funder) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:funding) => SEO.JSONLD.Grant.t() | map(),
    optional(:genre) =>
      String.t() | URI.t() | SEO.JSONLD.DefinedTerm.t() | map(),
    optional(:has_part) => SEO.JSONLD.CreativeWork.t() | map(),
    optional(:headline) => String.t(),
    optional(:in_language) => String.t() | SEO.JSONLD.Language.t() | map(),
    optional(:interaction_statistic) =>
      SEO.JSONLD.InteractionCounter.t() | map(),
    optional(:interactivity_type) => String.t(),
    optional(:is_accessible_for_free) => boolean(),
    optional(:is_based_on) =>
      SEO.JSONLD.CreativeWork.t()
      | map()
      | SEO.JSONLD.Product.t()
      | URI.t()
      | String.t(),
    optional(:is_based_on_url) =>
      SEO.JSONLD.CreativeWork.t()
      | map()
      | SEO.JSONLD.Product.t()
      | URI.t()
      | String.t(),
    optional(:is_family_friendly) => boolean(),
    optional(:is_part_of) =>
      SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
    optional(:keywords) =>
      SEO.JSONLD.DefinedTerm.t() | map() | String.t() | URI.t(),
    optional(:learning_resource_type) =>
      String.t() | SEO.JSONLD.DefinedTerm.t() | map(),
    optional(:license) =>
      SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
    optional(:location_created) => SEO.JSONLD.Place.t() | map(),
    optional(:main_entity) => SEO.JSONLD.Thing.t() | map(),
    optional(:maintainer) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:material) =>
      String.t() | SEO.JSONLD.Product.t() | map() | URI.t(),
    optional(:material_extent) =>
      SEO.JSONLD.QuantitativeValue.t() | map() | String.t(),
    optional(:mentions) => SEO.JSONLD.Thing.t() | map(),
    optional(:offers) => SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(),
    optional(:pattern) => SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
    optional(:position) => String.t() | integer(),
    optional(:producer) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:provider) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:publication) => SEO.JSONLD.PublicationEvent.t() | map(),
    optional(:publisher) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:publisher_imprint) => SEO.JSONLD.Organization.t() | map(),
    optional(:publishing_principles) =>
      SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
    optional(:recorded_at) => SEO.JSONLD.Event.t() | map(),
    optional(:released_event) => SEO.JSONLD.PublicationEvent.t() | map(),
    optional(:review) => SEO.JSONLD.Review.t() | map(),
    optional(:reviews) => SEO.JSONLD.Review.t() | map(),
    optional(:schema_version) => String.t() | URI.t(),
    optional(:sd_date_published) => Date.t() | String.t(),
    optional(:sd_license) =>
      URI.t() | String.t() | SEO.JSONLD.CreativeWork.t() | map(),
    optional(:sd_publisher) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:size) =>
      SEO.JSONLD.DefinedTerm.t()
      | map()
      | SEO.JSONLD.QuantitativeValue.t()
      | String.t(),
    optional(:source_organization) => SEO.JSONLD.Organization.t() | map(),
    optional(:spatial) => SEO.JSONLD.Place.t() | map(),
    optional(:spatial_coverage) => SEO.JSONLD.Place.t() | map(),
    optional(:sponsor) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:teaches) => SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
    optional(:temporal) => String.t() | DateTime.t() | NaiveDateTime.t(),
    optional(:temporal_coverage) =>
      String.t() | URI.t() | DateTime.t() | NaiveDateTime.t(),
    optional(:text) => String.t(),
    optional(:thumbnail) => SEO.JSONLD.ImageObject.t() | map(),
    optional(:thumbnail_url) => URI.t() | String.t(),
    optional(:time_required) => Duration.t() | String.t(),
    optional(:translation_of_work) => SEO.JSONLD.CreativeWork.t() | map(),
    optional(:translator) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:typical_age_range) => String.t(),
    optional(:usage_info) =>
      SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
    optional(:version) => String.t() | number(),
    optional(:video) =>
      SEO.JSONLD.VideoObject.t() | map() | SEO.JSONLD.Clip.t(),
    optional(:word_count) => integer(),
    optional(:work_example) => SEO.JSONLD.CreativeWork.t() | map(),
    optional(:work_translation) => SEO.JSONLD.CreativeWork.t() | map(),
    optional(:additional_type) => String.t() | URI.t(),
    optional(:alternate_name) => String.t(),
    optional(:description) => SEO.JSONLD.TextObject.t() | map() | String.t(),
    optional(:disambiguating_description) => String.t(),
    optional(:identifier) =>
      String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(),
    optional(:image) =>
      URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(),
    optional(:main_entity_of_page) =>
      SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
    optional(:name) => String.t(),
    optional(:owner) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:potential_action) => SEO.JSONLD.Action.t() | map(),
    optional(:same_as) => URI.t() | String.t(),
    optional(:subject_of) =>
      SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(),
    optional(:url) => URI.t() | String.t()
  }
  | [
      associated_article: SEO.JSONLD.NewsArticle.t() | map(),
      bitrate: String.t(),
      content_size: String.t(),
      content_url: URI.t() | String.t(),
      duration:
        Duration.t() | String.t() | SEO.JSONLD.QuantitativeValue.t() | map(),
      embed_url: URI.t() | String.t(),
      encodes_creative_work: SEO.JSONLD.CreativeWork.t() | map(),
      encoding_format: String.t() | URI.t(),
      end_time: DateTime.t() | NaiveDateTime.t() | String.t() | Time.t(),
      height: SEO.JSONLD.QuantitativeValue.t() | map(),
      ineligible_region:
        SEO.JSONLD.Place.t() | map() | String.t() | SEO.JSONLD.GeoShape.t(),
      interpreted_as_claim: SEO.JSONLD.Claim.t() | map(),
      player_type: String.t(),
      production_company: SEO.JSONLD.Organization.t() | map(),
      regions_allowed: SEO.JSONLD.Place.t() | map(),
      requires_subscription:
        SEO.JSONLD.MediaSubscription.t() | map() | boolean(),
      sha256: String.t(),
      start_time: DateTime.t() | NaiveDateTime.t() | String.t() | Time.t(),
      upload_date: DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
      width: SEO.JSONLD.QuantitativeValue.t() | map(),
      about: SEO.JSONLD.Thing.t() | map(),
      abstract: String.t(),
      access_mode: String.t(),
      access_mode_sufficient: SEO.JSONLD.ItemList.t() | map(),
      accessibility_api: String.t(),
      accessibility_control: String.t(),
      accessibility_feature: String.t(),
      accessibility_hazard: String.t(),
      accessibility_summary: String.t(),
      accountable_person: SEO.JSONLD.Person.t() | map(),
      acquire_license_page:
        SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
      aggregate_rating: SEO.JSONLD.AggregateRating.t() | map(),
      alternative_headline: String.t(),
      archived_at: SEO.JSONLD.WebPage.t() | map() | URI.t() | String.t(),
      assesses: String.t() | SEO.JSONLD.DefinedTerm.t() | map(),
      associated_media: t() | map(),
      audience: SEO.JSONLD.Audience.t() | map(),
      audio:
        SEO.JSONLD.Clip.t()
        | map()
        | SEO.JSONLD.MusicRecording.t()
        | SEO.JSONLD.AudioObject.t(),
      author: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      award: String.t(),
      awards: String.t(),
      character: SEO.JSONLD.Person.t() | map(),
      citation: SEO.JSONLD.CreativeWork.t() | map() | String.t(),
      comment: SEO.JSONLD.Comment.t() | map(),
      comment_count: integer(),
      conditions_of_access: String.t(),
      content_location: SEO.JSONLD.Place.t() | map(),
      content_rating: String.t() | SEO.JSONLD.Rating.t() | map(),
      content_reference_time: DateTime.t() | NaiveDateTime.t() | String.t(),
      contributor: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      copyright_holder:
        SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      copyright_notice: String.t(),
      copyright_year: number(),
      correction:
        SEO.JSONLD.CorrectionComment.t() | map() | String.t() | URI.t(),
      country_of_origin: SEO.JSONLD.Country.t() | map(),
      creative_work_status: SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
      creator: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      credit_text: String.t(),
      date_created: DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
      date_modified: DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
      date_published: Date.t() | String.t() | DateTime.t() | NaiveDateTime.t(),
      digital_source_type:
        :algorithmic_media_digital_source
        | :algorithmically_enhanced_digital_source
        | :composite_capture_digital_source
        | :composite_digital_source
        | :composite_synthetic_digital_source
        | :composite_with_trained_algorithmic_media_digital_source
        | :data_driven_media_digital_source
        | :digital_art_digital_source
        | :digital_capture_digital_source
        | :minor_human_edits_digital_source
        | :multi_frame_computational_capture_digital_source
        | :negative_film_digital_source
        | :positive_film_digital_source
        | :print_digital_source
        | :screen_capture_digital_source
        | :trained_algorithmic_media_digital_source
        | :virtual_recording_digital_source,
      discussion_url: URI.t() | String.t(),
      display_location: SEO.JSONLD.Place.t() | map(),
      edit_eidr: String.t() | URI.t(),
      editor: SEO.JSONLD.Person.t() | map(),
      educational_alignment: SEO.JSONLD.AlignmentObject.t() | map(),
      educational_level:
        String.t() | URI.t() | SEO.JSONLD.DefinedTerm.t() | map(),
      educational_use: SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
      encoding: t() | map(),
      encodings: t() | map(),
      example_of_work: SEO.JSONLD.CreativeWork.t() | map(),
      expires: Date.t() | String.t() | DateTime.t() | NaiveDateTime.t(),
      file_format: String.t() | URI.t(),
      funder: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      funding: SEO.JSONLD.Grant.t() | map(),
      genre: String.t() | URI.t() | SEO.JSONLD.DefinedTerm.t() | map(),
      has_part: SEO.JSONLD.CreativeWork.t() | map(),
      headline: String.t(),
      in_language: String.t() | SEO.JSONLD.Language.t() | map(),
      interaction_statistic: SEO.JSONLD.InteractionCounter.t() | map(),
      interactivity_type: String.t(),
      is_accessible_for_free: boolean(),
      is_based_on:
        SEO.JSONLD.CreativeWork.t()
        | map()
        | SEO.JSONLD.Product.t()
        | URI.t()
        | String.t(),
      is_based_on_url:
        SEO.JSONLD.CreativeWork.t()
        | map()
        | SEO.JSONLD.Product.t()
        | URI.t()
        | String.t(),
      is_family_friendly: boolean(),
      is_part_of: SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
      keywords: SEO.JSONLD.DefinedTerm.t() | map() | String.t() | URI.t(),
      learning_resource_type: String.t() | SEO.JSONLD.DefinedTerm.t() | map(),
      license: SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
      location_created: SEO.JSONLD.Place.t() | map(),
      main_entity: SEO.JSONLD.Thing.t() | map(),
      maintainer: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      material: String.t() | SEO.JSONLD.Product.t() | map() | URI.t(),
      material_extent: SEO.JSONLD.QuantitativeValue.t() | map() | String.t(),
      mentions: SEO.JSONLD.Thing.t() | map(),
      offers: SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(),
      pattern: SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
      position: String.t() | integer(),
      producer: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      provider: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      publication: SEO.JSONLD.PublicationEvent.t() | map(),
      publisher: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      publisher_imprint: SEO.JSONLD.Organization.t() | map(),
      publishing_principles:
        SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
      recorded_at: SEO.JSONLD.Event.t() | map(),
      released_event: SEO.JSONLD.PublicationEvent.t() | map(),
      review: SEO.JSONLD.Review.t() | map(),
      reviews: SEO.JSONLD.Review.t() | map(),
      schema_version: String.t() | URI.t(),
      sd_date_published: Date.t() | String.t(),
      sd_license: URI.t() | String.t() | SEO.JSONLD.CreativeWork.t() | map(),
      sd_publisher: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      size:
        SEO.JSONLD.DefinedTerm.t()
        | map()
        | SEO.JSONLD.QuantitativeValue.t()
        | String.t(),
      source_organization: SEO.JSONLD.Organization.t() | map(),
      spatial: SEO.JSONLD.Place.t() | map(),
      spatial_coverage: SEO.JSONLD.Place.t() | map(),
      sponsor: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      teaches: SEO.JSONLD.DefinedTerm.t() | map() | String.t(),
      temporal: String.t() | DateTime.t() | NaiveDateTime.t(),
      temporal_coverage:
        String.t() | URI.t() | DateTime.t() | NaiveDateTime.t(),
      text: String.t(),
      thumbnail: SEO.JSONLD.ImageObject.t() | map(),
      thumbnail_url: URI.t() | String.t(),
      time_required: Duration.t() | String.t(),
      translation_of_work: SEO.JSONLD.CreativeWork.t() | map(),
      translator: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      typical_age_range: String.t(),
      usage_info: SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
      version: String.t() | number(),
      video: SEO.JSONLD.VideoObject.t() | map() | SEO.JSONLD.Clip.t(),
      word_count: integer(),
      work_example: SEO.JSONLD.CreativeWork.t() | map(),
      work_translation: SEO.JSONLD.CreativeWork.t() | map(),
      additional_type: String.t() | URI.t(),
      alternate_name: String.t(),
      description: SEO.JSONLD.TextObject.t() | map() | String.t(),
      disambiguating_description: String.t(),
      identifier: String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(),
      image: URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(),
      main_entity_of_page:
        SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
      name: String.t(),
      owner: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      potential_action: SEO.JSONLD.Action.t() | map(),
      same_as: URI.t() | String.t(),
      subject_of: SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(),
      url: URI.t() | String.t()
    ]

t()

@type t() :: %{required(String.t()) => term()}

A JSON-LD map ready to be nested or rendered. String-keyed, always includes "@type" set to "MediaObject", plus any camelCased field keys the caller provided (see build/1). "@context" is added at render time by SEO.JSONLD.meta/1 on the top-level node only.

Functions

build(attrs)

@spec build(attrs()) :: t()

Build a MediaObject JSON-LD map.

Fields

  • :associated_article - A NewsArticle associated with the Media Object.
  • :bitrate - The bitrate of the media object.
  • :content_size - File size in (mega/kilo)bytes.
  • :content_url - Actual bytes of the media object, for example the image file or video file.
  • :duration - The duration of the item (movie, audio recording, event, etc.) in ISO 8601 duration format.
  • :embed_url - A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.
  • :encodes_creative_work - The CreativeWork encoded by this media object.
  • :encoding_format - Media type typically expressed using a MIME format (see IANA site and MDN reference), e.g. application/zip for a SoftwareApplication binary, audio/mpeg for .mp3 etc.

In cases where a SEO.JSONLD.CreativeWork has several media type representations, encoding can be used to indicate each SEO.JSONLD.MediaObject alongside particular encodingFormat information.

Unregistered or niche encoding and file formats can be indicated instead via the most appropriate URL, e.g. defining Web page or a Wikipedia/Wikidata entry.

  • :end_time - The endTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to end. For actions that span a period of time, when the action was performed. E.g. John wrote a book from January to December. For media, including audio and video, it's the time offset of the end of a clip within a larger file.

Note that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions.

  • :height - The height of the item.
  • :ineligible_region - The ISO 3166-1 (ISO 3166-1 alpha-2) or ISO 3166-2 code, the place, or the GeoShape for the geo-political region(s) for which the offer or delivery charge specification is not valid, e.g. a region where the transaction is not allowed.

See also eligibleRegion.

  • :interpreted_as_claim - Used to indicate a specific claim contained, implied, translated or refined from the content of a SEO.JSONLD.MediaObject or other SEO.JSONLD.CreativeWork. The interpreting party can be indicated using claimInterpreter.
  • :player_type - Player type required—for example, Flash or Silverlight.
  • :production_company - The production company or studio responsible for the item, e.g. series, video game, episode etc.
  • :regions_allowed - The regions where the media is allowed. If not specified, then it's assumed to be allowed everywhere. Specify the countries in ISO 3166 format.
  • :requires_subscription - Indicates if use of the media require a subscription (either paid or free). Allowed values are true or false (note that an earlier version had 'yes', 'no').
  • :sha256 - The SHA-2 SHA256 hash of the content of the item. For example, a zero-length input has value 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.
  • :start_time - The startTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to start. For actions that span a period of time, when the action was performed. E.g. John wrote a book from January to December. For media, including audio and video, it's the time offset of the start of a clip within a larger file.

Note that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions.

  • :upload_date - Date (including time if available) when this media object was uploaded to this site.
  • :width - The width of the item.

Inherited properties

Additional properties are available through the inheritance chain. See each ancestor's docs for its properties: