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

View Source

Residence type: Single-family home.

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

Summary

Types

t()

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

Types

attrs()

@type attrs() ::
  %{
    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(:bed) => SEO.JSONLD.BedDetails.t() | map() | String.t(),
    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()
  }
  | [
      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(),
      bed: SEO.JSONLD.BedDetails.t() | map() | String.t(),
      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 "SingleFamilyResidence", 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 SingleFamilyResidence JSON-LD map.

Fields

  • :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: