Points of Interest Core

W3C Working Draft 06 May 2011

This version:
Latest published version:
Latest editor's draft:
Previous version:
Matt Womer


This document describes a data model and XML syntax for representing information about points of interest (POI) on the World Wide Web.

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This document was published by the Points of Interest Working Group as a Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to public-poiwg@w3.org (subscribe, archives). All feedback is welcome.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.

Table of Contents

1. Introduction

In general terms, a "point of interest" is a location about which information is available. A POI can be as simple as a set of coordinates and an identifier, or more complex such as a three dimensional model of a building with names in various languages, information about open and closed hours, and a civic address. POI data has many uses including augmented reality browsers, location-based social networking games, geocaching, mapping, and navigation systems.

POI data has traditionally been exchanged in proprietary formats via various transports. This specification defines a flexible, lightweight, extensible POI data model, and one normative syntax for the data model. This will enable content publishers to effectively describe and efficiently serve and exchange POI data. In addition to the data model and format, this specification includes best practices for how to organize and serve POIs on the Web.

To achieve these goals, this document describes a generic data model and one normative format. This format is based on XML and is likely insufficient to cover all POI use cases, therefore, it is expected that the data model will be mapped to other formats, such as JSON, RDF, or HTML.

2. Terminology

The term points of interest is used in a broad sense in this specification to refer to a loosely coupled and inter-related set of terms: locations, POIs and places.

This section is primarily based on the wiki home page definition of POI.

The term location is used to refer to a geographical construct, a physically fixed point, typically on the surface of the Earth (relative to WGS-84), though locations can be relative to another coordinate system. Locations can be a single point, a centroid, a minimum bounding rectangle, or a set of vectors. A location should be persistent over time and does not change.
Points of Interest
Unlike the term location, the term POI is a human construct. POIs describe information about locations such as name, category, unique identifier, or civic address.
A place is also a human construct which typically has a coarse level of spatial granularity. Places are generally larger scale administrative constructs, either informally or formally defined. Countries, states, counties, districts, neighborhoods and postal codes or telephone area codes are all places. Places are also informally or colloquially defined, such as the Home Counties in the United Kingdom and the Bay Area in the United States.
Places have spatial relationships; with parents, children, adjacencies and contained by semantics. Places also have the same attribute set as POIs, although with differing interpretations based on scale; for example, the address of a Place or its URI would refer to the address of the administrative or governing body of the place.
A place typically contains multiple POIs and can also be coterminous with a POI. In the former case, a place, such as a city or a neighborhood, will contain multiple POIs. In the latter case, a place and a POI will occupy the same position and extent, such as in the case of Yellowstone National Park, which is both a Place and a POI.
The term primitive refers to the basic components of a POI. For example, a POI could be a collection of location and category primitives.

3. POI Data Model

The following primitives can be combined to represent a POI.

3.1 Geo-reference

Geo-references are used a lot and were difficult to introduce just in the middle of the location primitive, so it got a promotion, even though it only appears in the location primitive.

A geo-reference is a reference to a location. A geo-reference can represent location in a variety of ways, such as the geospatial coordinates for the center of the POI, a civic address, an area (simple bounding box, or a polygon, or a 3d object), relative to a particular map or other geo-reference or undetermined. Geo-references are used in the location primitive.

A geo-reference is of one of the following types:

3.1.1 Center

The Center geo-reference locates the center point of the POI. This type is largely used for display purposes.

Name Required Details
Coordinates required
System optional If not specified WGS 84 is assumed
Longitude required
Latitude required
Altitude optionalDefines the height in meters above or below sea level

3.1.3 Address

An Address geo-reference is a civic address, such as a mailing address or a street address.

Name Required Details
Country requiredISO country code (ISO 3166-1 alpha-3 country code)
Language requiredISO Language Code (3-alpha MARC language)
Street optional Can contain a variable mix of house number prefix, suffix, street base name and or street type
Floor optional +/- number
Suite optional
Region optionalRepeating: can contain a variable mix of administrative regions, neighborhood, city, state, etc.
Postal-code optional

This is our first reference to language tags, should we use ISO 3166-1 or BCP 47/IETF RFC 5646?

3.1.4 Route

This section needs reworking. Within the XML syntax there's a notion of a list of points, as well as a point type that is reused. In the Wiki draft Routes and Areas both have point lists, we should extract the point list concept out so it can be shared.

Optional. Represents routes and traces.

Required. Repeating for a directed linked list of points
Required. One of : Start/End/way point

3.1.5 Area

An Area geo-reference represents a line-bounded area. The area is described by an ordered list of coordinates, where the first and last are the same.

I changed this one a bit, instead of introducing Points, I just made it have Coordinates, and mention that it is an ordered list of them where the first and last are the same. I figure the ordering can occur however such things happen in desired syntax (XML could be as they appear in document order or with an 'order' attribute, JSON may represent it as an array,etc)

Name Required Details
CoordinatesrequiredAn ordered list of Coordinates, minimum of three, first and last must be the same.

3.1.6 Object

This geo-reference hasn't been written yet

Represents a 3D object, building, etc.

Name Required Details

3.1.7 Undetermined

An Undetermined geo-reference represents a location that as of yet is undetermined. This can be used to describe a Place prior to the final location being resolved.

There are no members for an Undetermined geo-reference.

3.1.8 Relative

I made relative a member of geo-reference rather than a sub-member of the map geo-reference, as it seems useful outside of the map scope

A Relative geo-reference is described in terms of distance from and bearing to another location.

Name Required Details
Relative-Location-Object requiredID or location object (ID) this relative reference refers to
Relative heightoptional

3.1.9 Map

The Map geo-reference allows points to be associated to maps.

Name Required Details
Supplier requiredThe supplier of the map
Version requiredThe version of the map
Map-Object-IDrequiredA unique identifier for the map
Side optionalside of street, left / right / end
Spotoptional % distance from the Map object’s reference end-point
Relative optionalrepeating. For representing a relative reference as opposed to an absolute geo-spatial location
Reference-type requiredOne of the geo-references, excluding Map

3.2 Location

The location primitive provides a rich and flexible description of the location of a POI. A location is a required part of a POI.

3.2.1 Members

Name Required Details
IdentifierrequiredA unique identifier for this location.
Geo-referencerequiredA reference to the actual location

I didn't follow the definition of a location identifier, so details were removed

3.3 Relationship primitive

The relationship primitive establishes 1-to-1 or 1-to-many relationships between POIs.

A relationship may be one of the following:

A POI which is entirely contained within another POI, e.g. a POI describing a store may state that it is contained within a shopping mall
A POI which entirely contains another POI, e.g. a POI describing a mall may state that it contains POIs for each store that is within the mall
A POI which is physically adjacent to another POI, e.g. a POI representing a store within a mall may state that it is next door to another POI which represents the store next door

Need more relationship types

Should the details of the various relationship types themselves be in this section? Assuming yes for now

3.3.1 contained-within


3.3.2 contains


3.3.3 adjacent-to


3.4 string primitive

Dropped per our discussion at f2f

3.5 Label primitive

POIs may have zero or more label primitives which represent a human readable label.

At F2F2 we decided to rename the name primitive to "label", and to allow labels to be marked as primary for each language represented.

3.6 ID primitive

POI must have an "id" primitive. It unambiguously identifies a POI within a particular implementation.

At F2F2 we discussed using URI fragments as IDs, as in XML. Using XML Base we could build a full URI that could then be used to identify the entire POI.

3.7 Categorization primitive

POI can have a "categorization" primitive, with one or more category identifiers.


3.8 meta data primitive

Todo. Not sure how this would work, and why this wouldn't just be covered by our extensibility story

3.9 Time primitive

POI can have one or more time primitives that represent an individual point in time, a span of time, or a recurring time or time span.

We discussed at F2F2 basing this on other standards' time representations

4. XML Syntax

This whole section is new stuff, unreviewed by the working group. Even more so than the rest of this document, this section is a straw man proposal, so please treat it as such!

This section describes an XML syntax to represent the data model.

4.1 XML Notation

Borrowed from MathML.

Notation Meaning
decimal-digit a decimal digit from the range U+0030 to U+0039
unsigned-integer a string of decimal-digits, representing a non-negative integer
integer an optional "-" (U+002D), followed by a string of decimal digits, and representing an integer
number an optional prefix of "-" (U+002D), followed by an unsigned number, representing a terminating decimal number (a type of rational number)
character a single non-whitespace character
string an arbitrary, nonempty and finite, string of characters
id an identifier, unique within the document; must satisfy the NAME syntax of the XML recommendation [XML]
idref an identifier referring to another element within the document; must satisfy the NAME syntax of the XML recommendation [XML]
URI a Uniform Resource Identifier [RFC3986]. Note that the attribute value is typed in the schema as anyURI which allows any sequence of XML characters. Systems needing to use this string as a URI must encode the bytes of the UTF-8 encoding of any characters not allowed in URI using %HH encoding where HH are the byte value in hexadecimal. This ensures that such an attribute value may be interpreted as an IRI, or more generally a LEIRI, see [IRI].

We need to figure out: xml id/xml:base, xml:lang, units of measurement

4.2 pois and poi elements

The root element for an POI in XML syntax is the pois element. It contains one or more poi elements.

poi/pois section is all TBD

4.3 Representing coordinates

Many of the elements described below rely on a coordinates as attributes. In the interest of not repeating the definition, the following attributes are inferred whenever the coordinate attributes are referenced below.

NameRequiredTypeDefault valueDetails
systemoptionalstringWGS84The name of the geodetic system to which the latitude and longitude are relative
altitudeoptionalnumber?? sea level relative to system?

Is there an official geode tagging scheme, e.g. "wgs84", or "etrs89"?

4.3.1 <point> element

The <point> element is used in many different geo-reference types below. It represents a single set of coordinates, and can be ordered relative to other <point> elements within the parent element via the order attribute.

The <point> element has no character data.


The <point> element uses the coordinate attributes, and an order attribute.

NameRequiredTypeDefault valueDetails
orderoptionalunsigned-numberNoneApplies only when a list of points is needed. Within the parent element containing the point list, there must be one <point> with the order attribute set to '0', other <point> element's order attribute must be unique and contiguous integers. Each point element within a point list must have the order attribute set.

Do we want to use an order attribute? Document order? A single attribute with a list of comma separated coordinates?

4.4 <location> element

The <location> element contains one or more geo-references elements (see below), and has no attributes or character data.

Geo-reference elements

The following elements are the XML mapping for the geo-references outlined in the data model. Geo-references are used only with in the <location> element.

4.4.1 <center> element

The <center> element has no character data, and only the coordinate attributes.

4.4.2 <address> element

Should there be a way to assign languages to addresses or parts of addresses?

Representing addresses is a tricky business, see Geolocation WG and IETF geopriv.

The <address> element may contain one or more <region> elements.

NameRequiredTypeDefault valueDetails
countryrequiredstringNoneISO country code (ISO 3166-1 alpha-3 country code)
lang requiredstringdefaults to the language of the XML document
street optionalstringNone Can contain a variable mix of house number prefix, suffix, street base name and or street type
floor optionalstringNone +/- number
postal-code optionalstringNone <region> element

The <region> element has no attributes and contains character data that...??

4.4.4 <area> element

The <area> element must contain three or more <point> elements. The first and last points in an area point list must have the same latitude, longitude and altitude. The area element has no attributes.

4.4.5 <object> element

This geo-reference hasn't been written yet

Name Required TypeDefault value

4.4.6 <undetermined> element

The <undetermined> element has no character data and no attributes.

4.4.7 <relative> element

The <relative> element has no character data.

NameRequiredTypeDefault valueDetails
location-idrequiredidref (not really, more of a xsd:anyURI as it can be external too)NoneThe fragment identifier or URI of the object to which this location is relative.
distance-fromrequiredintegerNoneThe distance this object is from the object referred to in the location-id attribute
bearing-torequiredintegerNone?? radians? degrees?

4.4.8 <map> element

The <map> element contains no character data and may contain one or more <relative> elements.

NameRequiredTypeDefault valueDetails
supplier requiredstringNone
version requiredstringNone
side optionalstringNone
reference-type requiredstringNoneMust be one of: center, address, navigation-point, area, or object

4.5 <relationship> element

The <relationship> element contains no character data.

NameRequiredTypeDefault valueDetails
typerequiredstringNonemust be one of: "contained-within","adjacent-to", or "contains"

4.6 <label> element

Todo. At the f2f we agreed it would be label instead of name, and that multiples can exist, and one per language can be marked as primary

4.7 id representation

At F2F2 we discussed using URI fragments as IDs, as in XML. Using XML Base we could build a full URI that could then be used to identify the entire POI.

4.8 <category> element


4.9 meta data tags...


4.10 <time> element

We discussed at F2F2 basing this on other standards' time representations

4.11 XML Example

This example was just something I generated while thinking through the XML syntax, it hasn't been updated to be in sync with what is in the document, so it may differ.

<?xml version="1.0" encoding="UTF-8"?>
	<poi id="StataCenter" xml:lang="en-US" >

		<label primary="true" xml:lang="en-US">Stata Center</label>
		<label primary="true" xml:lang="es">Stata Centro</label>
		<label>Ray and Maria Stata Center</label>
		<label>Building 32</label>
		<label>Gates Tower</label>
		<label>Dreyfoos Tower</label>
		<location id="location1">
			<point latitude="42.360890561289295" longitude="-71.09139204025269"/>

			<point id="mainpoint" latitude="27.174799" longitude="78.042111" altitude="10m"/>
			<center latitude="27.174799" longitude="78.042111" radius="10m"/>
			<address language="en-US" country="USA" street="32 Vassar St." floor="5" suite="19" postalcode="02139">
				<point order="0" latitude="42.360890561289295" longitude="-71.09139204025269"/>
				<point order="1" latitude="42.361176" longitude="-71.09018"/>
				<point order="2" latitude="42.36272976137689" longitude="-71.09049081802368"/>
				<point order="3" latitude="42.36318955298668" longitude="-71.09677791595459"/>
				<point order="4" latitude="42.363617631805496" longitude="-71.10156297683716"/>

				<point order="0" latitude="42.360890561289295" longitude="-71.09139204025269"/>
				<point order="1" latitude="42.361176" longitude="-71.09018"/>
				<point order="2" latitude="42.36272976137689" longitude="-71.09049081802368"/>
				<point order="3" latitude="42.36318955298668" longitude="-71.09677791595459"/>
				<point order="4" latitude="42.363617631805496" longitude="-71.10156297683716"/>
				<point order="5" latitude="42.360890561289295" longitude="-71.09139204025269"/>
			<map supplier="TeleTEQ" version="9" object-id="foobar" side="left" spot="2%"/>
			<relative location-id="mainpoint" distance-from="10m" bearing-to="20" relative-height="10m"/>

		<category source="http://www.census.gov/cgi-bin/sssd/naics/naicsrch?search=2007%20NAICS%20Search&code=611310">
			<name xml:lang="en-US">Colleges, Universities, and Professional Schools</name>
			<association type="child-of" reference="http://www.census.gov/cgi-bin/sssd/naics/naicsrch?search=2007%20NAICS%20Search&code=6113"/>


	<poi id="w3c">
		<label primary="true">World Wide Web Consortium</label>
			<address language="en-US" country="USA" street="32 Vassar St." floor="5" postalcode="02139">
		<relation type="contained-by" id="#StataCenter"/>
		<category source="http://www.census.gov/cgi-bin/sssd/naics/naicsrch?search=2007%20NAICS%20Search&code=813920">
			<name xml:lang="en-US">Standards review committees, professional</name>
			<name xml:lang="es">Normas de los comités de revisión, profesional</name>
			<association type="child-of" reference="http://www.census.gov/cgi-bin/sssd/naics/naicsrch?search=2007%20NAICS%20Search&code=8139"/>


A. Acknowledgements

B. References

B.1 Normative references

No normative references.

B.2 Informative references

No informative references.