diff --git a/rdfx.features.inc b/rdfx.features.inc
new file mode 100644
index 0000000..0f997a6
--- /dev/null
+++ b/rdfx.features.inc
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Implementation of hook_features_export().
+ *
+ * Defines one or more component types that are available to Features for export
+ * and a variety of settings for each type.
+ */
+function rdf_mappings_features_export($data, &$export, $module_name = '') {
+  // Any feature exporting RDF mappings need both rdf and rdfx modules.
+  // features module so we need to add them as a dependencies.
+  $export['dependencies']['rdf'] = 'rdf';
+  $export['dependencies']['rdfx'] = 'rdfx';
+
+  foreach ($data as $name) {
+    if ($rdf_mapping = rdf_mapping_load('node', $name)) {
+      // Add format to exports
+      $export['features']['rdf_mappings'][$name] = $rdf_mapping;
+    }
+  }
+
+  return array();
+}
+
+/**
+ * Implementation of hook_features_export_options().
+ *
+ * Provides an array of components that can be exported for a given type.
+ */
+function rdf_mappings_features_export_options() {
+  // Only support node content types for now.
+  return node_type_get_names();
+}
+
+/**
+ * Implementation of hook_features_export_render().
+ *
+ * Renders a set of components to code as a defaults hook.
+ */
+function rdf_mappings_features_export_render($module, $data, $export = NULL) {
+  $code = array();
+  $code[] = '  $rdf_mappings = array();';
+  $code[] = '';
+
+  foreach ($data as $k => $name) {
+    if (is_array($name)) {
+      $name = $k;
+    }
+    if ($rdf_mapping = rdf_mapping_load('node', $name)) {
+      $rdf_mapping_export = features_var_export($rdf_mapping, '  ');
+      $rdf_mapping_identifier = features_var_export($name);
+      $code[] = "  // Exported format: {$name}";
+      $code[] = "  \$rdf_mappings['node'][{$rdf_mapping_identifier}] = {$rdf_mapping_export};";
+      $code[] = "";
+    }
+  }
+
+  $code[] = '  return $rdf_mappings;';
+  $code = implode("\n", $code);
+  return array('rdf_default_mappings' => $code);
+}
+
+/**
+ * Implementation of hook_features_revert().
+ *
+ * Reverts components of a feature back to their default state.
+ */
+function rdf_mappings_features_revert($module) {
+  return rdf_mappings_features_rebuild($module);
+}
+
+/**
+ * Implementation of hook_features_rebuild().
+ *
+ * Updates faux-exportable components back to their default state.
+ */
+function rdf_mappings_features_rebuild($module) {
+  if ($defaults = features_get_default('rdf_mappings', $module)) {
+    foreach ($defaults as $bundle => $mapping) {
+      rdf_mapping_save(array(
+        'type' => 'node',
+        'bundle' => $bundle,
+        'mapping' => $mapping,
+      ));
+    }
+  }
+}
diff --git a/rdfx.module b/rdfx.module
index 32227fd..a551ad8 100644
--- a/rdfx.module
+++ b/rdfx.module
@@ -372,3 +372,13 @@ function rdfx_get_conflicting_namespaces() {
   }
   return $conflicting_namespaces;
 }
+
+function rdfx_features_api() {
+  return array(
+    'rdf_mappings' => array(
+      'name' => t('RDF mappings'),
+      'default_hook' => 'rdf_default_mappings',
+      'file' => drupal_get_path('module', 'rdfx') .'/rdfx.features.inc',
+    ),
+  );
+}
