=== modified file 'modules/field/field.module'
--- modules/field/field.module	2009-08-28 06:51:07 +0000
+++ modules/field/field.module	2009-08-31 16:07:46 +0000
@@ -222,6 +222,26 @@ function field_modules_disabled($modules
 }
 
 /**
+ * Implementation of hook_rdf_mapping().
+ *
+ * @return array
+ *   The RDF mappings of all field instances
+ */
+function field_rdf_mapping() {
+  $mapping = array();
+  
+  foreach (field_info_instances() as $bundle_name => $instances) {
+    foreach ($instances as $field_name => $instance) {
+      if (isset($instance['rdf_mapping'])) {
+        $mapping[$bundle_name][$field_name] = $instance['rdf_mapping'];
+      }
+    }
+  }
+
+  return $mapping;
+}
+
+/**
  * Allows a module to update the database for fields and columns it controls.
  *
  * @param string $module
@@ -654,6 +674,7 @@ function template_preprocess_field(&$var
     'field_name_css' => $field_name_css,
     'label' => $element['#title'],
     'label_display' => $element['#label_display'],
+    'rdfa_attributes' => isset($instance['rdf_mapping']) ? drupal_rdfa_attributes($instance['rdf_mapping']) : '',
     'label_hidden' => $element['#label_display'] == 'hidden',
     'field_language' => $element['#language'],
     'field_translatable' => $field['translatable'],

=== modified file 'modules/field/field.test'
--- modules/field/field.test	2009-08-31 05:35:47 +0000
+++ modules/field/field.test	2009-08-31 18:36:45 +0000
@@ -2324,3 +2324,67 @@ class FieldBulkDeleteTestCase extends Fi
     $this->assertEqual(count($fields), 0, 'The field is purged.');
   }
 }
+
+/**
+ * Unit test class for fields RDF mappings functionality.
+ */
+class FieldRdfMappingTestCase extends DrupalWebTestCase {
+  protected $field_a, $field_b;
+  protected $field_instance_a, $field_instance_b;
+    
+  public static function getInfo() {
+    return array(
+      'name'  => t('Field RDF tests'),
+      'description'  => t("Test RDF mapping for fields."),
+      'group' => t('Field')
+    );
+  }
+
+  function setUp() {
+    parent::setUp('field_test', 'rdf');
+    
+    // Define a field instance with a simple RDF mapping.
+    $this->field_a = array(
+      'field_name' => drupal_strtolower($this->randomName()),
+      'type' => 'test_field',
+    );
+    field_create_field($this->field_a);
+    $this->field_instance_a = array(
+      'field_name' => $this->field_a['field_name'],
+      'bundle' => 'test_bundle',
+      'rdf_mapping' => array(
+        'dc:something'
+      ),
+    );
+    field_create_instance($this->field_instance_a);
+    
+    // Define a field instance with a RDF mapping having multiple RDF properties.
+    $this->field_b = array(
+      'field_name' => drupal_strtolower($this->randomName()),
+      'type' => 'test_field',
+    );
+    field_create_field($this->field_b);
+    $this->field_instance_b = array(
+      'field_name' => $this->field_b['field_name'],
+      'bundle' => 'test_bundle',
+      'rdf_mapping' => array(
+        'dc:something',
+        'dc:somethingelse',
+      ),
+    );
+    field_create_instance($this->field_instance_b);
+  }
+  
+  function testRdfMapping() {
+    $rdf_mapping = rdf_get_mapping('test_bundle');
+    
+    // Simple mapping works.
+    $this->assertTrue(is_array($rdf_mapping[$this->field_instance_b['field_name']]));
+    $this->assertTrue(in_array('dc:something', $rdf_mapping[$this->field_instance_a['field_name']]));
+    
+    // Multiple mapping works.
+    $this->assertTrue(is_array($rdf_mapping[$this->field_instance_b['field_name']]));
+    $this->assertTrue(in_array('dc:something', $rdf_mapping[$this->field_instance_b['field_name']]));
+    $this->assertTrue(in_array('dc:somethingelse', $rdf_mapping[$this->field_instance_b['field_name']]));
+  }
+}

=== modified file 'modules/field/theme/field.tpl.php'
--- modules/field/theme/field.tpl.php	2009-08-28 06:51:07 +0000
+++ modules/field/theme/field.tpl.php	2009-08-31 16:07:46 +0000
@@ -24,6 +24,7 @@
  * Other variables:
  * - $object: The object to which the field is attached.
  * - $field: The field array.
+ * - $instance: The field instance array.
  * - $build_mode: Build mode, e.g. 'full', 'teaser'...
  * - $field_name: The field name.
  * - $field_type: The field type.
@@ -45,7 +46,7 @@
     <?php endif; ?>
     <div class="field-items">
       <?php foreach ($items as $delta => $item) : ?>
-        <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"><?php print render($item); ?></div>
+        <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>" <?php print $rdfa_attributes ?>><?php print render($item); ?></div>
       <?php endforeach; ?>
     </div>
   </div>

