diff --git a/query/query.go b/query/query.go
index dd15bbdb7d28820450902bdf7d158ab2b7330bb4..4a31ab5c4a889acf72eeea7fdbfb9eaee6a1f76d 100644
--- a/query/query.go
+++ b/query/query.go
@@ -336,8 +336,9 @@ func (g *SubGraph) preTraverse(uid uint64, dst *graph.Node) error {
 			properties[pc.Attr] = v
 		}
 	}
-	if val, ok := properties["xid"]; ok {
+	if val, ok := properties["_xid_"]; ok {
 		dst.Xid = string(val.Binary)
+		delete(properties, "_xid_")
 	}
 	dst.Properties, dst.Children = properties, children
 	return nil
diff --git a/query/query_test.go b/query/query_test.go
index 3b4f5ac6858def07a3b85a6b306fc97e4c0b4bbb..4ca61bda399da0ee12c37bda4b5b104fcc714661 100644
--- a/query/query_test.go
+++ b/query/query_test.go
@@ -185,7 +185,7 @@ func populateGraph(t *testing.T) (string, *store.Store) {
 	addEdge(t, edge, posting.GetOrCreate(posting.Key(31, "name"), ps))
 
 	edge.Value = "mich"
-	addEdge(t, edge, posting.GetOrCreate(posting.Key(1, "xid"), ps))
+	addEdge(t, edge, posting.GetOrCreate(posting.Key(1, "_xid_"), ps))
 
 	return dir, ps
 }
@@ -330,7 +330,7 @@ func TestToProtocolBuffer(t *testing.T) {
 	query := `
 		{
 			me(_uid_:0x01) {
-				xid
+				_xid_
 				name
 				gender
 				status
@@ -374,8 +374,8 @@ func TestToProtocolBuffer(t *testing.T) {
 	if gr.Xid != "mich" {
 		t.Errorf("Expected xid mich, Got: %v", gr.Xid)
 	}
-	if len(gr.Properties) != 4 {
-		t.Errorf("Expected values map to contain 4 properties, Got: %v",
+	if len(gr.Properties) != 3 {
+		t.Errorf("Expected values map to contain 3 properties, Got: %v",
 			len(gr.Properties))
 	}
 	if string(gr.Properties["name"].Binary) != "Michonne" {