diff --git includes/common.inc includes/common.inc
index ce5448b..2001210 100644
--- includes/common.inc
+++ includes/common.inc
@@ -6252,6 +6252,7 @@ function entity_get_info($entity_type = NULL) {
           'bundles' => array(),
           'view modes' => array(),
           'object keys' => array(),
+          'field label' => FALSE,
           'cacheable' => TRUE,
           'translation' => array(),
         );
@@ -6453,6 +6454,24 @@ function entity_uri($entity_type, $entity) {
     return $info['uri callback']($entity) + array('options' => array());
   }
 }
+
+/**
+ * Returns the label of an entity.
+ *
+ * @param $entity_type
+ *   The entity type; e.g. 'node' or 'user'.
+ * @param $entity
+ *   The entity for which to generate a path.
+ * @return
+ *   A string with teh entity label (e.g. node title).
+ */
+function entity_label($entity_type, $entity) {
+  $info = entity_get_info($entity_type);
+  if (isset($info['label callback']) && function_exists($info['label callback'])) {
+    return $info['label callback']($entity);
+  }
+}
+
 /**
  * Invokes entity insert/update hooks.
  *
diff --git modules/comment/comment.module modules/comment/comment.module
index 0b5c219..efe0b6e 100644
--- modules/comment/comment.module
+++ modules/comment/comment.module
@@ -98,6 +98,8 @@ function comment_entity_info() {
       'label' => t('Comment'),
       'base table' => 'comment',
       'uri callback' => 'comment_uri',
+      'label field' => 'subject',
+      'label callback' => 'comment_label',
       'fieldable' => TRUE,
       'controller class' => 'CommentController',
       'object keys' => array(
@@ -158,6 +160,13 @@ function comment_uri($comment) {
 }
 
 /**
+ * Entity label callback.
+ */
+function comment_label($comment) {
+  return $comment->subject;
+}
+
+/**
  * Implements hook_field_extra_fields().
  */
 function comment_field_extra_fields() {
diff --git modules/file/file.module modules/file/file.module
index fed5b10..86079ed 100644
--- modules/file/file.module
+++ modules/file/file.module
@@ -739,6 +739,13 @@ function file_icon_path($file, $icon_directory = NULL) {
 }
 
 /**
+ * Entity label callback.
+ */
+function file_label($file) {
+  return $file->filename;
+}
+
+/**
  * Determine the generic icon MIME package based on a file's MIME type.
  *
  * @param $file
diff --git modules/node/node.module modules/node/node.module
index accc5a1..2574c88 100644
--- modules/node/node.module
+++ modules/node/node.module
@@ -186,12 +186,15 @@ function node_entity_info() {
       'base table' => 'node',
       'revision table' => 'node_revision',
       'uri callback' => 'node_uri',
+      'label field' => 'title',
+      'label callback' => 'node_label',
       'fieldable' => TRUE,
       'object keys' => array(
         'id' => 'nid',
         'revision' => 'vid',
         'bundle' => 'type',
       ),
+
       'bundle keys' => array(
         'bundle' => 'type',
       ),
@@ -252,6 +255,13 @@ function node_uri($node) {
 }
 
 /**
+ * Entity label callback.
+ */
+function node_label($node) {
+  return $node->title;
+}
+
+/**
  * Implements hook_admin_paths().
  */
 function node_admin_paths() {
diff --git modules/system/system.api.php modules/system/system.api.php
index 8a6e517..aaab7ae 100644
--- modules/system/system.api.php
+++ modules/system/system.api.php
@@ -69,6 +69,15 @@ function hook_hook_info() {
  *   - uri callback: A function taking an entity as argument and returning the
  *     uri elements of the entity, e.g. 'path' and 'options'. The actual entity
  *     uri can be constructed by passing these elements to url().
+ *   - label field: The field in the base table that holds the entity label.
+ *     This property can be used when a module wants to query the database
+ *     directly in order to get the entity label, without loading the entire
+ *     entity object. Note that it is possible that an entity label is a result
+ *     of more complex logic, thus can't be queried. In such a case the label
+ *     field is FALSE, and the "label callback" property should be used.
+ *   - label callback: A function taking an entity as argument and returning the
+ *     label of the entity, e.g. the title of a node, or the subject of a
+ *     comment.
  *   - fieldable: Set to TRUE if you want your entity type to be fieldable.
  *   - object keys: An array describing how the Field API can extract the
  *     information it needs from the objects of the type. Elements:
diff --git modules/system/system.module modules/system/system.module
index 84bc72c..e23404b 100644
--- modules/system/system.module
+++ modules/system/system.module
@@ -257,6 +257,8 @@ function system_entity_info() {
     'file' => array(
       'label' => t('File'),
       'base table' => 'file',
+      'label field' => 'filename',
+      'label callback' => 'file_label',
       'object keys' => array(
         'id' => 'fid',
       ),
diff --git modules/taxonomy/taxonomy.module modules/taxonomy/taxonomy.module
index 1b1536e..cb5b2cf 100644
--- modules/taxonomy/taxonomy.module
+++ modules/taxonomy/taxonomy.module
@@ -88,6 +88,8 @@ function taxonomy_entity_info() {
       'controller class' => 'TaxonomyTermController',
       'base table' => 'taxonomy_term_data',
       'uri callback' => 'taxonomy_term_uri',
+      'label field' => 'name',
+      'label callback' => 'taxonomy_term_label',
       'fieldable' => TRUE,
       'object keys' => array(
         'id' => 'tid',
@@ -139,6 +141,13 @@ function taxonomy_term_uri($term) {
 }
 
 /**
+ * Entity label callback.
+ */
+function taxonomy_term_label($term) {
+  return $term->name;
+}
+
+/**
  * Implements hook_field_extra_fields().
  */
 function taxonomy_field_extra_fields() {
diff --git modules/user/user.module modules/user/user.module
index f055b36..ffba124 100644
--- modules/user/user.module
+++ modules/user/user.module
@@ -126,6 +126,8 @@ function user_entity_info() {
       'controller class' => 'UserController',
       'base table' => 'users',
       'uri callback' => 'user_uri',
+      'label field' => 'name',
+      'label callback' => 'user_label',
       'fieldable' => TRUE,
       'object keys' => array(
         'id' => 'uid',
@@ -159,6 +161,13 @@ function user_uri($user) {
 }
 
 /**
+ * Entity label callback.
+ */
+function user_label($user) {
+  return $user->name;
+}
+
+/**
  * Implements hook_field_extra_fields().
  */
 function user_field_extra_fields() {
