diff --git a/modules/field.views.inc b/modules/field.views.inc
index 5b7ec61..bdb3236 100644
--- a/modules/field.views.inc
+++ b/modules/field.views.inc
@@ -38,6 +38,23 @@ function field_views_data() {
 }
 
 /**
+ * Implements hook_views_data_alter().
+ *
+ * Allow field modules to alter existing views data of a certain field.
+ *
+ * One use case is to provide a reverse relationship for taxonomy module.
+ */
+function field_views_data_alter(&$data) {
+  foreach (field_info_fields() as $field) {
+    if ($field['storage']['type'] != 'field_sql_storage') {
+      continue;
+    }
+
+    drupal_alter($module . '_' . 'field_views_data', $data, $field);
+  }
+}
+
+/**
  * Returns the label of a certain field.
  *
  * Therefore it looks up in all bundles to find the most used instance.
diff --git a/modules/taxonomy.views.inc b/modules/taxonomy.views.inc
index 849de23..25d8199 100644
--- a/modules/taxonomy.views.inc
+++ b/modules/taxonomy.views.inc
@@ -413,6 +413,31 @@ function taxonomy_field_views_data($field) {
 }
 
 /**
+ * Implements hook_field_views_data_alter().
+ */
+function taxonomy_field_views_data_alter(&$data, $field) {
+  $helper_data = field_views_field_default_views_data($field);
+  foreach ($helper_data as $table_name => $table_data) {
+    foreach ($table_data as $field_name => $field_data) {
+      // If the field provide a term relationship provide a reversed relationship
+      if (isset($helper_data[$table_name][$field_name]['relationship'])) {
+        $data['taxonomy_term_data'][$table_name . '_' . $field_name] = array(
+          'title' => t('!field_name', array('!field_name' => $field['field_name'])),
+          'description' => t('Relate the term to the entity.'),
+          'relationship' => array(
+            'handler' => 'views_handler_relationship',
+            'base' => $table_name,
+            'base field' => $field_name,
+            'real field' => 'tid',
+            'label' => t('!field_name from term', array('!field_name' => $field['field_name'])),
+          ),
+        );
+      }
+    }
+  }
+}
+
+/**
  * Implements hook_views_plugins
  */
 function taxonomy_views_plugins() {
