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

View Source

A SpecialAnnouncement combines a simple date-stamped textual information update with contextualized Web links and other structured data. It represents an information update made by a locally-oriented organization, for example schools, pharmacies, healthcare providers, community groups, police, local government.

For work in progress guidelines on Coronavirus-related markup see this doc.

The motivating scenario for SpecialAnnouncement is the Coronavirus pandemic, and the initial vocabulary is oriented to this urgent situation. Schema.org expect to improve the markup iteratively as it is deployed and as feedback emerges from use. In addition to our usual Github entry, feedback comments can also be provided in this document.

While this schema is designed to communicate urgent crisis-related information, it is not the same as an emergency warning technology like CAP, although there may be overlaps. The intent is to cover the kinds of everyday practical information being posted to existing websites during an emergency situation.

Several kinds of information can be provided:

We encourage the provision of "name", "text", "datePosted", "expires" (if appropriate), "category" and "url" as a simple baseline. It is important to provide a value for "category" where possible, most ideally as a well known URL from Wikipedia or Wikidata. In the case of the 2019-2020 Coronavirus pandemic, this should be "https://en.wikipedia.org/w/index.php?title=2019-20_coronavirus_pandemic" or "https://www.wikidata.org/wiki/Q81068910".

For many of the possible properties, values can either be simple links or an inline description, depending on whether a summary is available. For a link, provide just the URL of the appropriate page as the property's value. For an inline description, use a SEO.JSONLD.WebContent type, and provide the url as a property of that, alongside at least a simple "text" summary of the page. It is unlikely that a single SpecialAnnouncement will need all of the possible properties simultaneously.

We expect that in many cases the page referenced might contain more specialized structured data, e.g. contact info, openingHours, SEO.JSONLD.Event, SEO.JSONLD.FAQPage etc. By linking to those pages from a SEO.JSONLD.SpecialAnnouncement you can help make it clearer that the events are related to the situation (e.g. Coronavirus) indicated by the category property of the SEO.JSONLD.SpecialAnnouncement.

Many SEO.JSONLD.SpecialAnnouncements will relate to particular regions and to identifiable local organizations. Use spatialCoverage for the region, and announcementLocation to indicate specific SEO.JSONLD.LocalBusinesses and SEO.JSONLD.CivicStructures. If the announcement affects both a particular region and a specific location (for example, a library closure that serves an entire region), use both spatialCoverage and announcementLocation.

The about property can be used to indicate entities that are the focus of the announcement. We now recommend using about only for representing non-location entities (e.g. a SEO.JSONLD.Course or a SEO.JSONLD.RadioStation). For places, use announcementLocation and spatialCoverage. Consumers of this markup should be aware that the initial design encouraged the use of about for locations too.

The basic content of SEO.JSONLD.SpecialAnnouncement is similar to that of an RSS or Atom feed. For publishers without such feeds, basic feed-like information can be shared by posting SEO.JSONLD.SpecialAnnouncement updates in a page, e.g. using JSON-LD. For sites with Atom/RSS functionality, you can point to a feed with the webFeed property. This can be a simple URL, or an inline SEO.JSONLD.DataFeed object, with encodingFormat providing media type information, e.g. "application/rss+xml" or "application/atom+xml".

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

Summary

Types

t()

A JSON-LD map ready to be nested or rendered. String-keyed, always includes "@type" set to "SpecialAnnouncement", 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 SpecialAnnouncement JSON-LD map.

Types

attrs()

@type attrs() ::
  %{
    optional(:announcement_location) =>
      SEO.JSONLD.LocalBusiness.t() | map() | SEO.JSONLD.CivicStructure.t(),
    optional(:category) =>
      String.t()
      | URI.t()
      | SEO.JSONLD.Thing.t()
      | map()
      | :aerobic_activity
      | :anaerobic_activity
      | :balance
      | :flexibility
      | :leisure_time_activity
      | :occupational_activity
      | :strength_training
      | SEO.JSONLD.CategoryCode.t(),
    optional(:date_posted) =>
      DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
    optional(:disease_prevention_info) =>
      SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
    optional(:disease_spread_statistics) =>
      SEO.JSONLD.Dataset.t()
      | map()
      | SEO.JSONLD.Observation.t()
      | URI.t()
      | String.t()
      | SEO.JSONLD.WebContent.t(),
    optional(:getting_tested_info) =>
      URI.t() | String.t() | SEO.JSONLD.WebContent.t() | map(),
    optional(:government_benefits_info) =>
      SEO.JSONLD.GovernmentService.t() | map(),
    optional(:news_updates_and_guidelines) =>
      SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
    optional(:public_transport_closures_info) =>
      SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
    optional(:quarantine_guidelines) =>
      URI.t() | String.t() | SEO.JSONLD.WebContent.t() | map(),
    optional(:school_closures_info) =>
      SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
    optional(:travel_bans) =>
      URI.t() | String.t() | SEO.JSONLD.WebContent.t() | map(),
    optional(:web_feed) =>
      URI.t() | String.t() | SEO.JSONLD.DataFeed.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) => SEO.JSONLD.MediaObject.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) => SEO.JSONLD.MediaObject.t() | map(),
    optional(:encoding_format) => String.t() | URI.t(),
    optional(:encodings) => SEO.JSONLD.MediaObject.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(:interpreted_as_claim) => SEO.JSONLD.Claim.t() | map(),
    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()
  }
  | [
      announcement_location:
        SEO.JSONLD.LocalBusiness.t() | map() | SEO.JSONLD.CivicStructure.t(),
      category:
        String.t()
        | URI.t()
        | SEO.JSONLD.Thing.t()
        | map()
        | :aerobic_activity
        | :anaerobic_activity
        | :balance
        | :flexibility
        | :leisure_time_activity
        | :occupational_activity
        | :strength_training
        | SEO.JSONLD.CategoryCode.t(),
      date_posted: DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(),
      disease_prevention_info:
        SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
      disease_spread_statistics:
        SEO.JSONLD.Dataset.t()
        | map()
        | SEO.JSONLD.Observation.t()
        | URI.t()
        | String.t()
        | SEO.JSONLD.WebContent.t(),
      getting_tested_info:
        URI.t() | String.t() | SEO.JSONLD.WebContent.t() | map(),
      government_benefits_info: SEO.JSONLD.GovernmentService.t() | map(),
      news_updates_and_guidelines:
        SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
      public_transport_closures_info:
        SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
      quarantine_guidelines:
        URI.t() | String.t() | SEO.JSONLD.WebContent.t() | map(),
      school_closures_info:
        SEO.JSONLD.WebContent.t() | map() | URI.t() | String.t(),
      travel_bans: URI.t() | String.t() | SEO.JSONLD.WebContent.t() | map(),
      web_feed: URI.t() | String.t() | SEO.JSONLD.DataFeed.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: SEO.JSONLD.MediaObject.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: SEO.JSONLD.MediaObject.t() | map(),
      encoding_format: String.t() | URI.t(),
      encodings: SEO.JSONLD.MediaObject.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(),
      interpreted_as_claim: SEO.JSONLD.Claim.t() | map(),
      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 "SpecialAnnouncement", 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 SpecialAnnouncement JSON-LD map.

Fields

  • :announcement_location - Indicates a specific SEO.JSONLD.CivicStructure or SEO.JSONLD.LocalBusiness associated with the SpecialAnnouncement. For example, a specific testing facility or business with special opening hours. For a larger geographic region like a quarantine of an entire region, use spatialCoverage.
  • :category - A category for the item. Greater signs or slashes can be used to informally indicate a category hierarchy. One of: :aerobic_activity, :anaerobic_activity, :balance, :flexibility, :leisure_time_activity, :occupational_activity, :strength_training.
  • :date_posted - Publication date of an online listing.
  • :disease_prevention_info - Information about disease prevention.
  • :disease_spread_statistics - Statistical information about the spread of a disease, either as SEO.JSONLD.WebContent, or described directly as a SEO.JSONLD.Dataset, or the specific SEO.JSONLD.Observations in the dataset. When a SEO.JSONLD.WebContent URL is provided, the page indicated might also contain more such markup.
  • :getting_tested_info - Information about getting tested (for a SEO.JSONLD.MedicalCondition), e.g. in the context of a pandemic.
  • :government_benefits_info - governmentBenefitsInfo provides information about government benefits associated with a SpecialAnnouncement.
  • :news_updates_and_guidelines - Indicates a page with news updates and guidelines. This could often be (but is not required to be) the main page containing SEO.JSONLD.SpecialAnnouncement markup on a site.
  • :public_transport_closures_info - Information about public transport closures.
  • :quarantine_guidelines - Guidelines about quarantine rules, e.g. in the context of a pandemic.
  • :school_closures_info - Information about school closures.
  • :travel_bans - Information about travel bans, e.g. in the context of a pandemic.
  • :web_feed - The URL for a feed, e.g. associated with a podcast series, blog, or series of date-stamped updates. This is usually RSS or Atom.

Inherited properties

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