Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.462
diff -u -p -r1.462 theme.inc
--- includes/theme.inc	11 Jan 2009 21:23:35 -0000	1.462
+++ includes/theme.inc	15 Jan 2009 09:38:20 -0000
@@ -916,6 +916,8 @@ function theme_get_settings($key = NULL)
     'toggle_comment_user_picture'   =>  0,
     'toggle_main_menu'              =>  1,
     'toggle_secondary_menu'         =>  1,
+    'rdfa_date'                     =>  1,
+    'rdfa_author'                   =>  1,
   );
 
   $settings = array_merge($defaults, variable_get('theme_settings', array()));
@@ -1672,10 +1674,22 @@ function theme_username($object) {
     }
 
     if (user_access('access user profiles')) {
-      $output = l($name, 'user/' . $object->uid, array('attributes' => array('title' => t('View user profile.'))));
+      if (theme_get_setting('rdfa_author')) {
+        $output = l($name, 'user/' . $object->uid, array('attributes' => array('title' => t('View user profile.'), 'property' => 'foaf:name',  'about' => url('user/' . $object->uid) . '#user')));
+        $output = '<span rel="sioc:has_creator">' . $output . '</span>';
+      }
+      else {
+        $output = l($name, 'user/' . $object->uid, array('attributes' => array('title' => t('View user profile.'))));
+      }
     }
     else {
-      $output = check_plain($name);
+      if (theme_get_setting('rdfa_author')) {
+        $output = check_plain($name);
+        $output = '<span rel="sioc:has_creator">' . $output . '</span>';
+      }
+      else {
+        $output = check_plain($name);
+      }
     }
   }
   elseif ($object->name) {
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.682
diff -u -p -r1.682 comment.module
--- modules/comment/comment.module	14 Jan 2009 21:48:24 -0000	1.682
+++ modules/comment/comment.module	15 Jan 2009 09:38:22 -0000
@@ -1913,10 +1913,17 @@ function template_preprocess_comment_wra
  * @ingroup themeable
  */
 function theme_comment_submitted($comment) {
-  return t('Submitted by !username on @datetime.',
+  if (theme_get_setting('rdfa_date')) {
+    $date_iso8601 = format_date($comment->timestamp, 'custom', 'c');
+    $datetime = '<span property="dcterms:created" content="' . $date_iso8601 . '">' . format_date($comment->timestamp) . '</span>';
+  }
+  else {
+    $datetime = format_date($comment->timestamp);
+  }
+  return t('Submitted by !username on !datetime.',
     array(
       '!username' => theme('username', $comment),
-      '@datetime' => format_date($comment->timestamp)
+      '!datetime' => $datetime,
     ));
 }
 
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1013
diff -u -p -r1.1013 node.module
--- modules/node/node.module	14 Jan 2009 21:16:20 -0000	1.1013
+++ modules/node/node.module	15 Jan 2009 09:38:25 -0000
@@ -2689,10 +2689,17 @@ function node_forms() {
  * @ingroup themeable
  */
 function theme_node_submitted($node) {
-  return t('Submitted by !username on @datetime',
+  if (theme_get_setting('rdfa_date')) {
+    $date_iso8601 = format_date($node->created, 'custom', 'c');
+    $datetime = '<span property="dcterms:created" content="' . $date_iso8601 . '">' . format_date($node->created) . '</span>';
+  }
+  else {
+    $datetime = format_date($node->created);
+  }
+  return t('Submitted by !username on !datetime',
     array(
       '!username' => theme('username', $node),
-      '@datetime' => format_date($node->created),
+      '!datetime' => $datetime,
     ));
 }
 
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.116
diff -u -p -r1.116 system.admin.inc
--- modules/system/system.admin.inc	14 Jan 2009 12:18:37 -0000	1.116
+++ modules/system/system.admin.inc	15 Jan 2009 09:38:28 -0000
@@ -405,6 +405,28 @@ function system_theme_settings(&$form_st
     $form['theme_settings']['#access'] = FALSE;
   }
 
+  // RDFa settings
+  if ((!$key) || in_array('rdfa', $features)) {
+    $form['rdfa'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Toggle RDFa annotation'),
+      '#description' => t('Enable or disable the RDFa annotation of certain page elements.'),
+      '#attributes' => array('class' => 'theme-settings-bottom'),
+    );
+    $form['rdfa']['rdfa_date'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Date on posts and comments'),
+      '#default_value' => $settings['rdfa_date'],
+      '#tree' => FALSE,
+    );
+    $form['rdfa']['rdfa_author'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Author on posts and comments'),
+      '#default_value' => $settings['rdfa_author'],
+      '#tree' => FALSE,
+    );
+  }
+
   // Logo settings
   if ((!$key) || in_array('logo', $features)) {
     $form['logo'] = array(
Index: themes/chameleon/chameleon.theme
===================================================================
RCS file: /cvs/drupal/drupal/themes/chameleon/chameleon.theme,v
retrieving revision 1.87
diff -u -p -r1.87 chameleon.theme
--- themes/chameleon/chameleon.theme	9 Jan 2009 16:19:56 -0000	1.87
+++ themes/chameleon/chameleon.theme	15 Jan 2009 09:38:28 -0000
@@ -135,7 +135,14 @@ function chameleon_node($node, $teaser =
 
   $submitted = '';
   if (variable_get('node_submitted_' . $node->type, TRUE)) {
-    $submitted = t("By !author at @date", array('!author' => theme('username', $node), '@date' => format_date($node->created, 'small')));
+    if (theme_get_setting('rdfa_date')) {
+      $date_iso8601 = format_date($node->created, 'custom', 'c');
+      $datetime = '<span property="dcterms:created" content="' . $date_iso8601 . '">' . format_date($node->created, 'small') . '</span>';
+    }
+    else {
+      $datetime = format_date($node->created, 'small');
+    }
+    $submitted = t("By !author at !date", array('!author' => theme('username', $node), '!date' => $datetime));
   }
 
   $terms = '';
@@ -162,8 +169,15 @@ function chameleon_node($node, $teaser =
 }
 
 function chameleon_comment($comment, $node, $links = array()) {
+  if (theme_get_setting('rdfa_date')) {
+    $date_iso8601 = format_date($comment->timestamp, 'custom', 'c');
+    $datetime = '<span property="dcterms:created" content="' . $date_iso8601 . '">' . format_date($comment->timestamp, 'small') . '</span>';
+  }
+  else {
+    $datetime = format_date($comment->timestamp, 'small');
+  }
   $submitted['comment_submitted'] = array(
-    'title' => t('By !author at @date', array('!author' => theme('username', $comment), '@date' => format_date($comment->timestamp, 'small'))),
+    'title' => t('By !author at !date', array('!author' => theme('username', $comment), '!date' => $datetime)),
     'html' => TRUE);
 
   $output  = "<div class=\"comment\">\n";
Index: themes/garland/template.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/template.php,v
retrieving revision 1.19
diff -u -p -r1.19 template.php
--- themes/garland/template.php	25 Jun 2008 09:12:25 -0000	1.19
+++ themes/garland/template.php	15 Jan 2009 09:38:28 -0000
@@ -67,10 +67,17 @@ function garland_menu_local_tasks() {
  * Format the "Submitted by username on date/time" for each comment.
  */
 function phptemplate_comment_submitted($comment) {
+  if (theme_get_setting('rdfa_date')) {
+    $date_iso8601 = format_date($comment->timestamp, 'custom', 'c');
+    $datetime = '<span property="dcterms:created" content="' . $date_iso8601 . '">' . format_date($comment->timestamp) . '</span>';
+  }
+  else {
+    $datetime = format_date($node->created);
+  }
   return t('!datetime — !username',
     array(
       '!username' => theme('username', $comment),
-      '!datetime' => format_date($comment->timestamp)
+      '!datetime' => $datetime,
     ));
 }
 
@@ -78,10 +85,17 @@ function phptemplate_comment_submitted($
  * Format the "Submitted by username on date/time" for each node.
  */
 function garland_node_submitted($node) {
+  if (theme_get_setting('rdfa_date')) {
+    $date_iso8601 = format_date($node->created, 'custom', 'c');
+    $datetime = '<span property="dcterms:created" content="' . $date_iso8601 . '">' . format_date($node->created) . '</span>';
+  }
+  else {
+    $datetime = format_date($node->created);
+  }
   return t('!datetime — !username',
     array(
       '!username' => theme('username', $node),
-      '!datetime' => format_date($node->created),
+      '!datetime' => $datetime,
     ));
 }
 
