--- rules/rules/modules/taxonomy.rules.inc.orig	Fri Oct 17 05:46:42 2008
+++ rules/rules/modules/taxonomy.rules.inc	Wed Dec 17 20:26:20 2008
@@ -52,6 +52,24 @@
     ),
     'module' => 'Taxonomy',
   );
+
+  $info['rules_action_vocabulary_remove_from_content'] = array(
+      'label' => t('Remove a vocabulary'),
+      'new variables' => array(
+	  'vocabulary' => array(
+	      'type' => 'vocabulary',
+	      'label' => t('Vocabulary'),
+	      ),
+	  ),
+      'arguments' => array(
+	  'node' => array(
+	      'type' => 'node',
+	      'label' => t('Content which vocabulary will be removed from'),
+	      ),
+	  ),
+      'help' => t('Removing a vocabulary from the content.'),
+      'module' => 'Taxonomy',
+      );
   return $info;
 }
 
@@ -85,6 +103,24 @@
 }
 
 /**
+ * Action: Remove a vocabulary from content.
+ */
+function rules_action_vocabulary_remove_from_content($node, $vocabulary, $settings) {
+
+    /* handle single and multi-select terms */
+    if (isset($node->taxonomy[$vocabulary['vocabulary']])) {
+	unset($node->taxonomy[$vocabulary['vocabulary']]);
+    }
+
+    /* handle free form tags */
+    if (isset($node->taxonomy['tags']) && isset($node->taxonomy['tags'][$vocabulary['vocabulary']])) {
+	unset($node->taxonomy[$vocabulary['vocabulary']]);
+  }
+    
+    return array('node' => $node);
+}
+
+/**
  * Implementation of hook_rules_data_type_info().
  */
 function taxonomy_rules_data_type_info() {
@@ -96,6 +132,12 @@
       'identifiable' => TRUE,
       'module' => 'Taxonomy',
     ),
+      'vocabulary' => array(
+	  'label' => t('Vocabulary'),
+	  'savable' => FALSE,
+	  'identifiable' => TRUE,
+	  'module' => 'Taxonomy',
+	  ),
   );
 }
 
