hListing draft

Revision as of 15:26, 16 October 2014 by ChiefRA (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)

Jump to: navigation, search

This document represents a draft microformat specification. Although drafts are somewhat mature in the development process, the stability of this document cannot be guaranteed, and implementers should be prepared to keep abreast of future developments and changes. Watch this wiki page, or follow discussions on the #microformats Freenode IRC channel to stay up-to-date.

hListing is a proposal for an open, distributed listings (UK English: small-ads; classifieds) format suitable for embedding in (X)HTML, Atom, RSS, and arbitrary XML. hListing would be one of several microformats open standards.


Draft Proposal


Authors and Contributors


Individuals and professionals are increasingly publishing their offerings online: whether as items for sale or rent (cars, homes, apartments), services for hire (music lessons, dog walker, plumber), openings (jobs, volunteers, extra spot in a book club) or personals (people looking for dates, companions, roommates). The goal of publishing (and promoting) these listings online is to seek out interested parties, often within a limited time period.

While descriptions of products and services are common on the Web, particularly on e-commerce sites, we are proposing an hListing microformat for sharing, searching, and syndicating the information that helps match up buyers and sellers. This proposal follows the common practices of trading sites such as Craigslist, eBay and newspaper classifieds.

If hReview is about an item and what you think of it, hListing is about an item and what you want to do with it.

Inspiration and Acknowledgments

Thanks to everyone who participated in the initial burst of hListing activity in August 2005, particularly Emiliano Martínez Luque and Trevor O'Reilly, for naming the effort and organizing the listing-{brainstorming, formats, examples} pages on the wiki. We would like to thank Tantek for an initial debate about whether to extend hReview or pursue an independent-though-similar hListing for our proposal.


Vibrant online marketplaces have been launched with little more than titles, prices, descriptions, and contact email addresses; we hope to kindle the same spirit of minimalism with this proposal to restart active discussion of what an hListing should be. Since we are venturing into a space that does not have “settled law” such as the vCard definitions hCard started with, we were inspired by hReview, another novel compound microformat that emerged from the microformats.org community process.

In particular, we note that both applications need a way to share informative descriptions of a product or service, including attribution of authorship and provenance of the item. if hReview is a microformat for one's opinion of a product or service, hListing helps share what one would like to do with it: sell it, rent it, trade it, perform that service, announce it, or, for people, to meet them. It can tell you how to contact the lister, and whether it is an item on offer or a wanted ad.

Out of Scope

We are focusing on providing "just enough" structure to enable matching, not to consummate transactions. This is distinct from the majority of formats described on the wiki under listing-examples, which are specific enough to completely describe products for retail sale according to the idiosyncratic semantics of particular merchants and shopping engines. Instead of encoding retail-oriented fields such as UPCs, SKUs, and manufacturer part numbers, this proposal acknowledges that many listings are for "inventories of one" that may not have such precise abstractions.

Similarly, listings cannot aspire to describe prices and terms & conditions to the degree necessary to automate entire transactions or price comparisons. Some have terms beyond the pale of any B2B exchange protocols (e.g. "$50 obo").

As in hReview, the concept of a "universal object identifier" is also out-of-scope for this effort. Unlike some of the "product feed" formats under [listing-examples], we avoided specifying any taxonomy for identifying or categorizing listings in favor of tags.


In General

The hListing format is based on a set of fields common to numerous listing sites and formats in use today on the web. Where possible field names have been chosen based on those defined by the related hReview, hCard, hCalendar standards.


hListing properties:

Summary of Changes

By comparison to hReview:

Creating a listing requires adding transaction metadata:

Property Details

hListing property details:

version:: This optional field permits hListing publishers to specify a particular version of hListing that their content uses. By omitting this field, the publisher is stating that implementations may interpret the hListings according to any version of the hListing specification. The value for this proposal as of 6-Feb-2006 is "0.0," since it has no official standing yet.

listing type:: This required field indicates the desired matching: whether it’s about something that the lister has (offer) or wants (wanted). NOTE: This needs to be collapsed with listing action per the change made to the summary above.

listing action:: This required field indicates the desired action for the listing: a permanent transfer (sale); transient use (rent); barter or donation (trade); to arrange an introduction (meet); publicize the existence of an event or vendor (announce); or to perform a service (service).

lister:: The person or business who should be contacted about the listing, either in the form of an hCard or a shorthand notation of one or more formatted names (fn) and contact information (email, url, tel). Note that this is not necessarily the same as the author of the listing.

dtlisted:: This optional field MUST provide an ISO8601 absolute date time of when the listing was first made effective. This field SHOULD use UTC, but MAY use the time zone offset syntax. See datetime design pattern.

dtexpired:: This optional field MUST provide an ISO8601 absolute date time of when the listing will become ineffective. It MUST be later than dtlisted. This field SHOULD use UTC, but MAY use the time zone offset syntax. See datetime design pattern.

Note that this definition obviates the need for a “taken” listing action; when a listing is no longer valid, it can simply be deleted, or republished with an expiry date that has already passed. Republication may be desirable, to indicate that the listing is no longer available to forestall further inquiries. Keeping expiry orthogonal to listing-action permits archival use of web pages with hListings.

location:: This optional field contains the location of the item, which may be different than the location of the lister. This may be a full hCard with contact information, or just an adr or geo.

There is an separate discussion to be had about how either of these three microformats can best accommodate colloquial terminiology for “neighborhoods,” but this proposal does not break new ground by coining a new fields for that purpose.

price:: This optional text field describes the “advertised” price of the listing; it is not a binding offer, nor a complete transaction price. Floating point numbers found within this string may be extracted for sorting/indexing, as could adjacent currency symbols or ISO currency codes.

Note that since price is such a general description, we have avoided promoting an additional “terms and conditions” field for elaborating on the price or terms of the deal (e.g. “dollars”, “best offer” “per month” “paypal only”). We suggest demoting it until proven that it needs to exist independently of either description (such as shipping rates) or price (which can just state “CAD$22/mo”).

item type:: This optional field "type" provides the type of the item being listed: one of the following: opening, housing, product, business, event, person, place, website, url.

Note that the first two, housing and opening, are new and unique to hListing; the remainder are copied by reference from hReview. Similar to the note in hReview 0.2 for item types, the enumerated list of listing types is “under development and may be extended.”

item info:: This required field MUST have at a minimum the name ("fn" - the formatted text corresponding to the name) of the item , SHOULD provide at least one URI ("url") for the item, and MAY provide at least one URL to a photo or depiction ("photo") of the item. For items of type person or business, the item info (fn, url, photo) SHOULD be encapsulated in an hCard. Unique item IDs (e.g. ISBNs, UPCs) MAY be represented as a URN ("url") for the item.

summary:: This optional text field serves as a title for listing.

description:: This required field contains the full text representing the written description of the item being listed. The field MAY include valid XHTML markup (e.g. paragraphs). User agents SHOULD preserve any markup.

tags:: Tags are represented using a list of keywords or phrases (using the rel-tag microformat for each individual keyword or phrase tag) that the reviewer associates with the item. The reviewer SHOULD provide tags relating to how they want the item categorized (e.g., “car, used, acura”, “job”, “real estate, 3BR”). The reviewer MAY also want to provide tags indicating payment terms (“dollars”, “paypal”).

permalink:: This optional field is a URL for the hListing. In addition to using the <a href> tag for this field, the attribute rel="self bookmark" MUST be used to indicate that the hyperlink is a permalink for the review itself. If the hyperlink already contains a rel attribute, then the values self and bookmark MUST be included among the space-separated set of values in the attribute. Indexers MAY treat the permalink of a review as a unique ID in order to identify and collate the same listing from multiple sources (such as indexing a page multiple times). The permalink MAY also be used to indicate or imply the origin of the listing. Authors MAY use the classname of "permalink" on the element representing the permalink, but are not required to do so.


Simple Listing

Parking space for rent (2/2/06)
2 compact car spaces in a secure underground garage at:
1738 Elm St.
Somewhere, ED 34567 ISA
Available in April 2006 for $215/mo
Please contact John Broker at 110.555.1212 (C)
 <div class="hlisting">
     <span class="item">
        <span class="fn">Parking space</span>
     <span class="offer rent">for rent</span>
     (<abbr class="dtlisted" title="20060202">2/2/06</abbr>)
   <p class="description">
     2 compact car spaces in a secure underground garage at:
     <div class="location adr">
       <span class="street-address">1738 Elm St.</span>
       <span class="locality">Somewhere</span>, <span class="region">ED</span>
       <span class="postal-code">34567</span> <span class="country">ISA</span>
     Available in <abbr class="dtexpired" title="20060401">April 2006</abbr>
     for <span class="price">$215/qtr</span>
   <div class="lister vcard">
      Please contact <span class="fn">John Broker</span> at 
      <span class="tel"><span class="value">(110) 555-1212</span> 
      (<abbr class="type" title="cell">C</abbr>)</span>

Real Estate Listing for Sale

<div class="hlisting housing offer-sale">

   <div class="item">
      <img class="photo" src="http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/FGFbc80dUKj.png" alt="1563 E 119Th St" />
      <p class="price">$139,000</p>
         <a class="url permalink summary" href="http://www.frontdoor.com/listing/151941-07-191413/1563-e-119th-st-los-angeles-ca-90059">
            <div class="adr">
               <span class="street-address">1563 E 119Th St</span>
               <span class="separator">, </span>
               <span class="locality">Los Angeles</span>
               <span class="separator">, </span>
               <span class="region">CA</span>
               <span class="separator">, </span>
               <span class="postal-code">90059</span>

      <div class="description">
            <dt>Square Feet</dt>
            <dd>488 ($310/sf)</dd>
            <dt>Property Type:</dt>
            <dd>Single Family</dd>
            <dt>Year Built:</dt>
      <div class="geo">
         <span class="latitude">33.924423</span>:
         <span class="longitude">-118.247093</span>
      <div class="lister vcard">
            <p>Listing provided by: <span class="fn">Coldwell Banker Residential Brokerage</span></p>
            <a class="org url" href="http://www.californiamoves.com/?WT.mc_ID=202211000000000">Coldwell Banker Residential Brokerage Southern California</a>

Extracted Structured Markup Data


     fn:	Coldwell Banker Residential Brokerage
       organization-name:	Coldwell Banker Residential Brokerage Southern California
    url:	http://www.californiamoves.com/?WT.mc_ID=202211000000000
  price:	$139,000

summary:	1563 E 119Th St , Los Angeles , CA , 90059

description:	Bedrooms 1 Bathrooms 1 Square Feet 488 ($310/sf) Property Type: Single Family Year Built: 1924

     item:	$139,000 1563 E 119Th St , Los Angeles , CA , 90059 Bedrooms 1 Bathrooms 1 Square Feet 488 ($310/sf) Property Type: Single Family Year Built: 1924 33.924423: -118.247093 Listing provided by:...

permalink:	http://www.frontdoor.com/listing/151941-07-191413/1563-e-119th-st-los-angeles-ca-90059

Extended Examples

See hListing Extended Examples for real-world examples from Craigslist, eBay.com, and Match.com.

Challenge Problems

See hListing Challenge Problems for some hypothetical examples that illustrate corners of the specification.

Examples in the Wild

This section is informative.

The following sites have implemented hListing, and thus are a great place to start for anyone looking for examples "in the wild" to try parsing, indexing, organizing etc. If your site is marked up with hListing, feel free to add it to the top of this list. Include both a URL to the top level site, and at least one URL to a specific hListing item on that site so that the hListing markup can be verified.

Once the list grows too big, we'll make a separate wiki page like hlisting-examples-in-wild.

past examples


Please add links to sites that consume hListings, and tools which generate hListings.


Substantial (non-editorial) changes:


The following field names have been reused from the hCard and hCalendar microformats: version, summary, fn, url, email, photo, description, categories. In addition, items and reviewers described by hCards MAY contain any hCard field. The rel value "self" has been reused from the Atom 1.0 specification.



Internationalization: Though there are many English-language tokens, they are only used as class-names; user-visible listing information can be completely localized. N.b. that (X)HTML lang attribute rules still apply as usual, for multilingual aggregators of hListings.

Contextual Defaults

Since listings may be embedded within blog postings, email, syndicated feeds, simple Web pages, or other microformats such as hAtom, to the degree possible, the following fields can be “inherited” from the context surrounding an hListing if absent:

By contrast, gazetteering is an example of ad hoc contextual defaulting that is not governed by this technique. Guessing that “Noe Valley” is in “San Francisco, CA” because the hCard of the blog author is in the same city is beyond the pale of the contextual defaulting proposed here. All we are suggesting is application of DRY (“Don’t Repeat Yourself”) for fields that have equivalent definitions elsewhere within the same XHTML document or its MIME headers.

See a related discussion on 2006-01-27 on hreview-feedback.

See also


hListing draft was last modified: Wednesday, December 31st, 1969