diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java b/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java
index 2b79974..21a4037 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java
@@ -48,7 +48,7 @@ public class AtlasArrayType extends AtlasType {
     }
 
     public AtlasArrayType(AtlasType elementType, int minCount, int maxCount) {
-        super(AtlasBaseTypeDef.getArrayTypeName(elementType.getTypeName()));
+        super(AtlasBaseTypeDef.getArrayTypeName(elementType.getTypeName()), TypeCategory.ARRAY);
 
         this.elementTypeName = elementType.getTypeName();
         this.minCount        = minCount;
@@ -61,7 +61,7 @@ public class AtlasArrayType extends AtlasType {
     }
 
     public AtlasArrayType(String elementTypeName, int minCount, int maxCount) {
-        super(AtlasBaseTypeDef.getArrayTypeName(elementTypeName));
+        super(AtlasBaseTypeDef.getArrayTypeName(elementTypeName), TypeCategory.ARRAY);
 
         this.elementTypeName = elementTypeName;
         this.minCount        = minCount;
@@ -75,7 +75,7 @@ public class AtlasArrayType extends AtlasType {
 
     public AtlasArrayType(String elementTypeName, int minCount, int maxCount, AtlasTypeRegistry typeRegistry)
         throws  AtlasBaseException {
-        super(AtlasBaseTypeDef.getArrayTypeName(elementTypeName));
+        super(AtlasBaseTypeDef.getArrayTypeName(elementTypeName), TypeCategory.ARRAY);
 
         this.elementTypeName = elementTypeName;
         this.minCount        = minCount;
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java b/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java
index 16a3df6..c7dad29 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java
@@ -41,7 +41,7 @@ public class AtlasBuiltInTypes {
         private static final Boolean DEFAULT_VALUE = Boolean.FALSE;
 
         public AtlasBooleanType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_BOOLEAN);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_BOOLEAN, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -75,7 +75,7 @@ public class AtlasBuiltInTypes {
         private static final Byte DEFAULT_VALUE = new Byte((byte)0);
 
         public AtlasByteType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_BYTE);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_BYTE, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -119,7 +119,7 @@ public class AtlasBuiltInTypes {
         private static final Short DEFAULT_VALUE = new Short((short)0);
 
         public AtlasShortType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_SHORT);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_SHORT, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -163,7 +163,7 @@ public class AtlasBuiltInTypes {
         private static final Integer DEFAULT_VALUE = new Integer(0);
 
         public AtlasIntType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_INT);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_INT, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -207,7 +207,7 @@ public class AtlasBuiltInTypes {
         private static final Long DEFAULT_VALUE = new Long(0);
 
         public AtlasLongType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_LONG);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_LONG, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -251,7 +251,7 @@ public class AtlasBuiltInTypes {
         private static final Float DEFAULT_VALUE = new Float(0);
 
         public AtlasFloatType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_FLOAT);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_FLOAT, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -295,7 +295,7 @@ public class AtlasBuiltInTypes {
         private static final Double DEFAULT_VALUE = new Double(0);
 
         public AtlasDoubleType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_DOUBLE);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_DOUBLE, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -341,7 +341,7 @@ public class AtlasBuiltInTypes {
         private static final BigInteger DEFAULT_VALUE = BigInteger.ZERO;
 
         public AtlasBigIntegerType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_BIGINTEGER);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_BIGINTEGER, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -385,7 +385,7 @@ public class AtlasBuiltInTypes {
         private static final BigDecimal DEFAULT_VALUE = BigDecimal.ZERO;
 
         public AtlasBigDecimalType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_BIGDECIMAL);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_BIGDECIMAL, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -429,7 +429,7 @@ public class AtlasBuiltInTypes {
         private static final Date DEFAULT_VALUE = new Date(0);
 
         public AtlasDateType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_DATE);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_DATE, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -478,7 +478,7 @@ public class AtlasBuiltInTypes {
         private static final String DEFAULT_VALUE = "";
 
         public AtlasStringType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_STRING);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_STRING, TypeCategory.PRIMITIVE);
         }
 
         @Override
@@ -506,7 +506,7 @@ public class AtlasBuiltInTypes {
      */
     public static class AtlasObjectIdType extends AtlasType {
         public AtlasObjectIdType() {
-            super(AtlasBaseTypeDef.ATLAS_TYPE_OBJECT_ID);
+            super(AtlasBaseTypeDef.ATLAS_TYPE_OBJECT_ID, TypeCategory.OBJECT_ID_TYPE);
         }
 
         @Override
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java b/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java
index e0a0c6d..d962bbe 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java
@@ -46,7 +46,7 @@ public class AtlasClassificationType extends AtlasStructType {
     private Set<String>                   allSuperTypes = Collections.emptySet();
 
     public AtlasClassificationType(AtlasClassificationDef classificationDef) {
-        super(classificationDef);
+        super(classificationDef, TypeCategory.CLASSIFICATION);
 
         this.classificationDef = classificationDef;
     }
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java b/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java
index e91fb99..7017d65 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java
@@ -45,7 +45,7 @@ public class AtlasEntityType extends AtlasStructType {
     private Set<String>           allSuperTypes = Collections.emptySet();
 
     public AtlasEntityType(AtlasEntityDef entityDef) {
-        super(entityDef);
+        super(entityDef, TypeCategory.ENTITY);
 
         this.entityDef = entityDef;
     }
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java b/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java
index 5b41e71..e9a2021 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java
@@ -36,7 +36,7 @@ public class AtlasEnumType extends AtlasType {
     private final String                           defaultValue;
 
     public AtlasEnumType(AtlasEnumDef enumDef) {
-        super(enumDef.getName());
+        super(enumDef.getName(), TypeCategory.PRIMITIVE);
 
         Map<String, AtlasEnumElementDef> e = new HashMap<String, AtlasEnumElementDef>();
 
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java b/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java
index d770bc7..f2ab08b 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java
@@ -39,14 +39,14 @@ public class AtlasMapType extends AtlasType {
     private AtlasType valueType;
 
     public AtlasMapType(String keyTypeName, String valueTypeName) {
-        super(AtlasBaseTypeDef.getMapTypeName(keyTypeName, valueTypeName));
+        super(AtlasBaseTypeDef.getMapTypeName(keyTypeName, valueTypeName), TypeCategory.MAP);
 
         this.keyTypeName   = keyTypeName;
         this.valueTypeName = valueTypeName;
     }
 
     public AtlasMapType(AtlasType keyType, AtlasType valueType) {
-        super(AtlasBaseTypeDef.getMapTypeName(keyType.getTypeName(), valueType.getTypeName()));
+        super(AtlasBaseTypeDef.getMapTypeName(keyType.getTypeName(), valueType.getTypeName()), TypeCategory.MAP);
 
         this.keyTypeName   = keyType.getTypeName();
         this.valueTypeName = valueType.getTypeName();
@@ -56,7 +56,7 @@ public class AtlasMapType extends AtlasType {
 
     public AtlasMapType(String keyTypeName, String valueTypeName, AtlasTypeRegistry typeRegistry)
         throws AtlasBaseException {
-        super(AtlasBaseTypeDef.getMapTypeName(keyTypeName, valueTypeName));
+        super(AtlasBaseTypeDef.getMapTypeName(keyTypeName, valueTypeName), TypeCategory.MAP);
 
         this.keyTypeName   = keyTypeName;
         this.valueTypeName = valueTypeName;
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
index b1777c7..5c32db2 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
@@ -48,13 +48,19 @@ public class AtlasStructType extends AtlasType {
 
 
     public AtlasStructType(AtlasStructDef structDef) {
-        super(structDef.getName());
+        super(structDef.getName(), TypeCategory.STRUCT);
+
+        this.structDef = structDef;
+    }
+
+    public AtlasStructType(AtlasStructDef structDef, TypeCategory category) {
+        super(structDef.getName(), category);
 
         this.structDef = structDef;
     }
 
     public AtlasStructType(AtlasStructDef structDef, AtlasTypeRegistry typeRegistry) throws AtlasBaseException {
-        super(structDef.getName());
+        super(structDef.getName(), TypeCategory.STRUCT);
 
         this.structDef = structDef;
 
@@ -432,4 +438,8 @@ public class AtlasStructType extends AtlasType {
             this.attributeName = attributeName;
         }
     }
+
+    public AtlasStructDef getStructDefinition() {
+        return structDef;
+    }
 }
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasType.java b/intg/src/main/java/org/apache/atlas/type/AtlasType.java
index 204e305..a507bf4 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasType.java
@@ -31,13 +31,20 @@ import java.util.List;
  */
 public abstract class AtlasType {
 
+    public enum TypeCategory {
+        PRIMITIVE, ARRAY, MAP, ENTITY, STRUCT, CLASSIFICATION, OBJECT_ID_TYPE
+    }
+
     private static final Gson GSON =
             new GsonBuilder().setDateFormat(AtlasBaseTypeDef.SERIALIZED_DATE_FORMAT_STR).create();
 
     private final String typeName;
 
-    public AtlasType(String typeName) {
+    private final TypeCategory typeCategory;
+
+    protected AtlasType(String typeName, TypeCategory category) {
         this.typeName = typeName;
+        this.typeCategory = category;
     }
 
     public void resolveReferences(AtlasTypeRegistry typeRegistry) throws AtlasBaseException {
@@ -51,6 +58,10 @@ public abstract class AtlasType {
 
     public abstract Object getNormalizedValue(Object obj);
 
+    public TypeCategory getTypeCategory() {
+        return typeCategory;
+    }
+
     public boolean validateValue(Object obj, String objName, List<String> messages) {
         boolean ret = isValidValue(obj);
 
diff --git a/release-log.txt b/release-log.txt
index 4b42106..0792d46 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -9,7 +9,8 @@ ATLAS-1060 Add composite indexes for exact match performance improvements for al
 ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai)
 
 ALL CHANGES:
-ATLAS-1227 Added support for attribute constraints in the API
+ATLAS-1229 Add TypeCategory and methods to access attribute definitiions in AtlasTypes (sumasai)
+ATLAS-1227 Added support for attribute constraints in the API (mneethiraj)
 ATLAS-1225 Optimize AtlasTypeDefGraphStore to use typeRegistry (mneethiraj via sumasai)
 ATLAS-1221 build failure in windows SyntaxError: invalid syntax (zhangqiang2 via shwethags)
 ATLAS-1226 Servlet init-params in web.xml are unused (mneethiraj via shwethags)