diff --git a/relation.install b/relation.install
index 79915c1..d171da2 100644
--- a/relation.install
+++ b/relation.install
@@ -74,10 +74,17 @@ function relation_schema() {
         'default' => 0,
         'description' => 'The number rows in this relation. Cannot exceed max_arity, or be less than min_arity in relation_type table.',
       ),
+      'weight' => array(
+        'description' => 'The weight of this relation. Used for sorting.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
     ),
     'primary key' => array('rid'),
     'indexes' => array(
       'relation_types' => array('relation_type', 'rid'),
+      'weight' => array('weight'),
     ),
   );
   $schema['relation_revision'] = array(
@@ -122,10 +129,17 @@ function relation_schema() {
         'default' => 0,
         'description' => 'The number rows in this relation. Cannot exceed max_arity, or be less than min_arity in relation_type table.',
       ),
+      'weight' => array(
+        'description' => 'The weight of this relation. Used for sorting.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
     ),
     'primary key' => array('vid'),
     'indexes' => array(
       'rid_vid' => array('rid', 'vid'),
+      'weight' => array('weight'),
     ),
   );
   $schema['relation_type'] = array(
@@ -284,3 +298,23 @@ function relation_update_7002() {
       ->execute();
   }
 }
+
+/**
+ * Add the weight column to the relation and relation_revision table.
+ */
+function relation_update_7003() {
+  db_add_field('relation', 'weight', array(
+        'description' => 'The weight of this relation. Used for sorting.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ));
+  db_add_field('relation_revision', 'weight', array(
+        'description' => 'The weight of this relation. Used for sorting.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ));
+  db_add_index('relation', 'weight', array('weight'));
+  db_add_index('relation_revision', 'weight', array('weight'));
+}
diff --git a/relation.module b/relation.module
index 8ad603d..410bf29 100644
--- a/relation.module
+++ b/relation.module
@@ -83,6 +83,12 @@ function relation_entity_property_info() {
       'setter permission' => 'edit relations',
       'required' => TRUE,
     ),
+    'weight' => array(
+      'label' => t('Relation Weight'),
+      'description' => t('The weight of the relation.'),
+      'type' => 'integer',
+      'schema field' => 'weight',
+    ),
   );
   return $info;
 }
@@ -816,6 +822,7 @@ function relation_get_related_entity($entity_type, $entity_id, $relation_type =
   }
   else {
     $query = relation_query($entity_type, $entity_id, $r_index)->range(0, 1);
+    $query->propertyOrderBy('weight');
     if ($relation_type) {
       $query->entityCondition('bundle', $relation_type);
     }
diff --git a/relation.rules.inc b/relation.rules.inc
index ed5f8a3..605589e 100644
--- a/relation.rules.inc
+++ b/relation.rules.inc
@@ -193,6 +193,7 @@ function relation_rules_get_related_entities($entity, array $options, $name, $ty
   $source_entity_id = $source_entity->getIdentifier();
   $results = relation_query($source_entity_type, $source_entity_id)
     ->entityCondition('bundle', $info['relation_type'])
+    ->propertyOrderBy('weight')
     ->range(0, 50)
     ->execute();
   $rids = array_keys($results);
diff --git a/relation_dummy_field/relation_dummy_field.module b/relation_dummy_field/relation_dummy_field.module
index 0ac3d70..5a53b9a 100644
--- a/relation_dummy_field/relation_dummy_field.module
+++ b/relation_dummy_field/relation_dummy_field.module
@@ -213,7 +213,7 @@ function relation_dummy_field_field_formatter_view($entity_type, $entity, $field
 function relation_dummy_field_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items, $displays) {
   foreach ($entities as $id => $entity) {
     $relation_types = $instances[$id]['settings']['relation_type'];
-    $query = relation_query($entity_type, $id)->range(0, 50);
+    $query = relation_query($entity_type, $id)->propertyOrderBy('weight')->range(0, 50);
     if ($relation_types) {
       // TODO:SINGLE_DIR: Fails in cases where we want directional relations for
       // which the entity is only the source, but not the target, or vice versa.
