While KML is primarily seen as a "visualization format" for geospatial data, it is still useful to allow developers and users to associate metadata and attributes with entities. This can then be used for filtering, styling, thematic mapping, or search.

Currently, KML Schema tags provide for a mechanism to create new elements that can then have associated metadata. However, this seems to make developing KML clients extremely difficult - because if they don't implement Schema tag support, then a KML document may not contain any useful data.

Therefore, we've considered the over-arching concept that it would not be possible to create new tags, or elements, from schema tags. Instead, metadata would be stored in the <Metadata> tag that KML currently includes, and would contain any number of <propery> elements. These property elements would (or just could?) be defined using the Schema concept in KML 2.2 for defining type and expected elements.

Example using Jason Birch's 'I Heart KML Schema' document as a basis, and converting to the current ideas on Metadata support.

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="">
  <Schema name="newt_data">
    <SimpleField type="int" name="newt_id"></SimpleField>
    <SimpleField type="string" name="newt_breed"></SimpleField>
    <SimpleField type="decimal" name="newt_slime_factor"></SimpleField>
    <SimpleField type="decimal" name="newt_tail_length"></SimpleField>
  <Schema name="snark_data">
    <SimpleField type="int" name="snake_id"></SimpleField>
    <SimpleField type="decimal" name="snake_length"></SimpleField>
    <Placemark class="snake">
      <Metadata class="snark_data">
        <property name="snake_length">5.2</property>
    <Placemark class="newt" id="sammyg_newt">
      <name>Sammy G</name>
        <gml:pos>1.75 1.75 0</gml:pos>
      <link type="application/html" href=""/>
      <Metadata class="newt_data">
        <property name="newt_id">36</property>
        <property name="newt_breed">Common Orange Slitherer</property>
        <property name="newt_slime_factor">7.2</property>
        <property name="newt_tail_length">6</property>       
    <Placemark class="newt">
      <name>Phyllis K</name>
        <gml:pos>1.25 1.25 0</gml:pos>
        <property name="newt_id">28</property>
        <property name="newt_breed">Purple Humpleback</property>
        <property name="newt_slime_factor">3.4</property>
        <property name="newt_tail_length">5</property>

For more complex, traditional GIS Metadata, we're looking at being able to reference a GML resource in an atom:link. Perhaps by using rel="related", or adding a rel="metadata":

<Placemark id="albastross1">
  <atom:link rel="related" href=""/>
  <Point><pos>43 82</pos></Point>