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

View Source

A suite in a hotel or other public accommodation, denotes a class of luxury accommodations, the key feature of which is multiple rooms (source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/Suite_(hotel)).

See also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations.

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

Summary

Types

t()

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

Types

attrs()

@type attrs() ::
  %{
    optional(:bed) => SEO.JSONLD.BedDetails.t() | map() | String.t(),
    optional(:number_of_rooms) =>
      SEO.JSONLD.QuantitativeValue.t() | map() | number(),
    optional(:occupancy) => SEO.JSONLD.QuantitativeValue.t() | map(),
    optional(:accommodation_category) => String.t(),
    optional(:accommodation_floor_plan) => SEO.JSONLD.FloorPlan.t() | map(),
    optional(:amenity_feature) =>
      SEO.JSONLD.LocationFeatureSpecification.t() | map(),
    optional(:floor_level) => String.t(),
    optional(:floor_size) => SEO.JSONLD.QuantitativeValue.t() | map(),
    optional(:lease_length) =>
      SEO.JSONLD.QuantitativeValue.t() | map() | Duration.t() | String.t(),
    optional(:number_of_bathrooms_total) => integer(),
    optional(:number_of_bedrooms) =>
      SEO.JSONLD.QuantitativeValue.t() | map() | number(),
    optional(:number_of_full_bathrooms) => number(),
    optional(:number_of_partial_bathrooms) => number(),
    optional(:permitted_usage) => String.t(),
    optional(:pets_allowed) => String.t() | boolean(),
    optional(:tour_booking_page) => URI.t() | String.t(),
    optional(:year_built) => number(),
    optional(:additional_property) => SEO.JSONLD.PropertyValue.t() | map(),
    optional(:address) => String.t() | SEO.JSONLD.PostalAddress.t() | map(),
    optional(:aggregate_rating) => SEO.JSONLD.AggregateRating.t() | map(),
    optional(:branch_code) => String.t(),
    optional(:contained_in) => SEO.JSONLD.Place.t() | map(),
    optional(:contained_in_place) => SEO.JSONLD.Place.t() | map(),
    optional(:contains_place) => SEO.JSONLD.Place.t() | map(),
    optional(:event) => SEO.JSONLD.Event.t() | map(),
    optional(:events) => SEO.JSONLD.Event.t() | map(),
    optional(:fax_number) => String.t(),
    optional(:geo) =>
      SEO.JSONLD.GeoShape.t() | map() | SEO.JSONLD.GeoCoordinates.t(),
    optional(:geo_contains) =>
      SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
    optional(:geo_covered_by) =>
      SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
    optional(:geo_covers) =>
      SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
    optional(:geo_crosses) =>
      SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
    optional(:geo_disjoint) =>
      SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
    optional(:geo_equals) =>
      SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
    optional(:geo_intersects) =>
      SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
    optional(:geo_overlaps) =>
      SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
    optional(:geo_touches) =>
      SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
    optional(:geo_within) =>
      SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
    optional(:global_location_number) => String.t(),
    optional(:has_certification) => SEO.JSONLD.Certification.t() | map(),
    optional(:has_drive_through_service) => boolean(),
    optional(:has_gs1_digital_link) => URI.t() | String.t(),
    optional(:has_map) => URI.t() | String.t() | SEO.JSONLD.Map.t() | map(),
    optional(:is_accessible_for_free) => boolean(),
    optional(:isic_v4) => String.t(),
    optional(:keywords) =>
      SEO.JSONLD.DefinedTerm.t() | map() | String.t() | URI.t(),
    optional(:latitude) => String.t() | number(),
    optional(:logo) =>
      URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(),
    optional(:longitude) => String.t() | number(),
    optional(:map) => URI.t() | String.t(),
    optional(:maps) => URI.t() | String.t(),
    optional(:maximum_attendee_capacity) => integer(),
    optional(:opening_hours_specification) =>
      SEO.JSONLD.OpeningHoursSpecification.t() | map(),
    optional(:photo) =>
      SEO.JSONLD.Photograph.t() | map() | SEO.JSONLD.ImageObject.t(),
    optional(:photos) =>
      SEO.JSONLD.Photograph.t() | map() | SEO.JSONLD.ImageObject.t(),
    optional(:public_access) => boolean(),
    optional(:review) => SEO.JSONLD.Review.t() | map(),
    optional(:reviews) => SEO.JSONLD.Review.t() | map(),
    optional(:slogan) => String.t(),
    optional(:smoking_allowed) => boolean(),
    optional(:special_opening_hours_specification) =>
      SEO.JSONLD.OpeningHoursSpecification.t() | map(),
    optional(:telephone) => String.t(),
    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()
  }
  | [
      bed: SEO.JSONLD.BedDetails.t() | map() | String.t(),
      number_of_rooms: SEO.JSONLD.QuantitativeValue.t() | map() | number(),
      occupancy: SEO.JSONLD.QuantitativeValue.t() | map(),
      accommodation_category: String.t(),
      accommodation_floor_plan: SEO.JSONLD.FloorPlan.t() | map(),
      amenity_feature: SEO.JSONLD.LocationFeatureSpecification.t() | map(),
      floor_level: String.t(),
      floor_size: SEO.JSONLD.QuantitativeValue.t() | map(),
      lease_length:
        SEO.JSONLD.QuantitativeValue.t() | map() | Duration.t() | String.t(),
      number_of_bathrooms_total: integer(),
      number_of_bedrooms: SEO.JSONLD.QuantitativeValue.t() | map() | number(),
      number_of_full_bathrooms: number(),
      number_of_partial_bathrooms: number(),
      permitted_usage: String.t(),
      pets_allowed: String.t() | boolean(),
      tour_booking_page: URI.t() | String.t(),
      year_built: number(),
      additional_property: SEO.JSONLD.PropertyValue.t() | map(),
      address: String.t() | SEO.JSONLD.PostalAddress.t() | map(),
      aggregate_rating: SEO.JSONLD.AggregateRating.t() | map(),
      branch_code: String.t(),
      contained_in: SEO.JSONLD.Place.t() | map(),
      contained_in_place: SEO.JSONLD.Place.t() | map(),
      contains_place: SEO.JSONLD.Place.t() | map(),
      event: SEO.JSONLD.Event.t() | map(),
      events: SEO.JSONLD.Event.t() | map(),
      fax_number: String.t(),
      geo: SEO.JSONLD.GeoShape.t() | map() | SEO.JSONLD.GeoCoordinates.t(),
      geo_contains:
        SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
      geo_covered_by:
        SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
      geo_covers:
        SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
      geo_crosses:
        SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
      geo_disjoint:
        SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
      geo_equals:
        SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
      geo_intersects:
        SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
      geo_overlaps:
        SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
      geo_touches:
        SEO.JSONLD.Place.t() | map() | SEO.JSONLD.GeospatialGeometry.t(),
      geo_within:
        SEO.JSONLD.GeospatialGeometry.t() | map() | SEO.JSONLD.Place.t(),
      global_location_number: String.t(),
      has_certification: SEO.JSONLD.Certification.t() | map(),
      has_drive_through_service: boolean(),
      has_gs1_digital_link: URI.t() | String.t(),
      has_map: URI.t() | String.t() | SEO.JSONLD.Map.t() | map(),
      is_accessible_for_free: boolean(),
      isic_v4: String.t(),
      keywords: SEO.JSONLD.DefinedTerm.t() | map() | String.t() | URI.t(),
      latitude: String.t() | number(),
      logo: URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(),
      longitude: String.t() | number(),
      map: URI.t() | String.t(),
      maps: URI.t() | String.t(),
      maximum_attendee_capacity: integer(),
      opening_hours_specification:
        SEO.JSONLD.OpeningHoursSpecification.t() | map(),
      photo: SEO.JSONLD.Photograph.t() | map() | SEO.JSONLD.ImageObject.t(),
      photos: SEO.JSONLD.Photograph.t() | map() | SEO.JSONLD.ImageObject.t(),
      public_access: boolean(),
      review: SEO.JSONLD.Review.t() | map(),
      reviews: SEO.JSONLD.Review.t() | map(),
      slogan: String.t(),
      smoking_allowed: boolean(),
      special_opening_hours_specification:
        SEO.JSONLD.OpeningHoursSpecification.t() | map(),
      telephone: String.t(),
      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 "Suite", 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 Suite JSON-LD map.

Fields

  • :bed - The type of bed or beds included in the accommodation. For the single case of just one bed of a certain type, you use bed directly with a text. If you want to indicate the quantity of a certain kind of bed, use an instance of BedDetails. For more detailed information, use the amenityFeature property. One of: .
  • :number_of_rooms - The number of rooms (excluding bathrooms and closets) of the accommodation or lodging business. Typical unit code(s): ROM for room or C62 for no unit. The type of room can be put in the unitText property of the QuantitativeValue.
  • :occupancy - The allowed total occupancy for the accommodation in persons (including infants etc). For individual accommodations, this is not necessarily the legal maximum but defines the permitted usage as per the contractual agreement (e.g. a double room used by a single person). Typical unit code(s): C62 for person.

Inherited properties

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