diff --git a/artemis_sqlmap/Feature.xml b/artemis_sqlmap/Feature.xml
index 27b9a971bf960cee48cd352772b23e7f04aa3936..0feae18ab0d5809fb94b4eaefc96acde5fa0b85b 100644
--- a/artemis_sqlmap/Feature.xml
+++ b/artemis_sqlmap/Feature.xml
@@ -9,25 +9,7 @@
  
      <typeAlias alias="Feature"
         type="org.gmod.schema.sequence.Feature"/>
-     
-     <typeAlias alias="FeatureLoc"
-        type="org.gmod.schema.sequence.FeatureLoc"/>
-     
-     <typeAlias alias="FeatureProp"
-        type="org.gmod.schema.sequence.FeatureProp"/>
-        
-     <typeAlias alias="FeatureRelationship"
-        type="org.gmod.schema.sequence.FeatureRelationship"/>
-     
-     <typeAlias alias="FeatureCvTerm"
-        type="org.gmod.schema.sequence.FeatureCvTerm"/>
-          
-     <typeAlias alias="FeatureCvTermProp"
-        type="org.gmod.schema.sequence.FeatureCvTermProp"/>  
-  
-     <typeAlias alias="FeatureCvTermDbXRef"
-        type="org.gmod.schema.sequence.FeatureCvTermDbXRef"/>
-        
+                 
     <parameterMap id="schema-cvlist" 
                   class="Feature">
        <parameter property="schema" javaType="java.lang.String"/>
@@ -39,7 +21,7 @@
         <result property="timeLastModified" column="timelastmodified"/>
    	    <result property="featureId" column="id"/>
    	    <result property="featureRelationshipsForSubjectId" 
-   	            resultMap="Feature.feature_relationship"  /> 
+   	            resultMap="FeatureRelationship.feature_relationship"  /> 
    <!--	    
   	    <result property="featureRelationship.featureByObjectId.featureId" column="object_id"/>
   	    <result property="featureRelationship.cvTerm.cvTermId" column="relation_type_id"/>
@@ -51,7 +33,7 @@
         <result property="featureLoc.phase" column="phase"/>
         <result property="uniqueName" column="uniquename"/>
         <result property="cvTerm.cvTermId" column="type_id"/>
-        <result property="featureProps" resultMap="Feature.featureprop" />
+        <result property="featureProps" resultMap="FeatureProp.featureprop" />
    <!--
         <result property="featureprop.cvTerm.cvTermId" column="prop_type_id" nullValue="0"/>
         <result property="featureprop.value" column="value"/>
@@ -95,159 +77,8 @@
         <result property="featureId" column="feature_id"/>
         <result property="cvTerm.cvTermId" column="type_id"/>
      </resultMap>
-
-     <resultMap id="select-featureprop" 
-                class="FeatureProp">
-        <result property="value" column="value" />
-        <result property="rank" column="rank" />
-        <result property="cvTerm" column="type_id" select="selectCvterm" />
-     </resultMap>
-     
-    <resultMap id="featureprop" 
-               class="FeatureProp">
-        <result property="value" column="value" />
-        <result property="rank"  column="prop_rank" />
-        <result property="cvTerm.cvTermId" column="prop_type_id" />
-     </resultMap>
-     
-     <resultMap id="feature_relationship" 
-               class="FeatureRelationship">
-        <result property="featureByObjectId.featureId" column="object_id"/>
-  	    <result property="cvTerm.cvTermId" column="relation_type_id"/>
-  	    <result property="rank" column="rank"/>
-  	    <result property="value" column="relation_value" />
-     </resultMap>
-     
-     <resultMap id="select-relationship" 
-                class="FeatureRelationship">
-        <result property="featureBySubjectId.featureId" column="subject_id" />
-        <result property="featureByObjectId.featureId" column="object_id" />
-        <result property="value" column="value" />
-        <result property="rank" column="rank" />
-        <result property="cvTerm" column="type_id" select="selectCvterm" />
-     </resultMap>
-     
-     <resultMap id="select-location"
-                class="FeatureLoc">
-        <result property="featureBySrcFeatureId.featureId" column="srcfeature_id" nullValue="-999" />
-        <result property="fmin"   column="fmin"   nullValue="-999" />
-        <result property="fmax"   column="fmax"   nullValue="-999" />
-        <result property="strand" column="strand" nullValue="0" />
-        <result property="phase"  column="phase"  nullValue="0" />
-        <result property="residueInfo"  column="residue_info"/>
-        <result property="locGroup"  column="locgroup"/>
-        <result property="rank"      column="rank"/>
-     </resultMap>
-     
-     <resultMap id="feature_cvtermprop" class="FeatureCvTermProp">
-        <result property="cvTerm.cvTermId" column="type_id" />
-        <result property="value" column="value" />
-        <result property="rank" column="rank" />
-     </resultMap>
-     
-     <resultMap id="select-featurecvterm" class="FeatureCvTerm" 
-                groupBy="featureCvTermId">
-        <result property="featureCvTermId"   column="feature_cvterm_id" />
-        <result property="feature.featureId" column="feature_id" />
-        <result property="cvTerm.cvTermId"   column="cvterm_id" />
-        <result property="cvTerm.name"       column="cvterm_name" />
-        <result property="cvTerm.cv.name"    column="cv_name" />
-        <result property="not"               column="is_not" />
-        <result property="rank"              column="fc_rank" />
-        <result property="featureCvTermProps" resultMap="Feature.feature_cvtermprop"  />
-        <result property="pub.pubId"         column="pub_id" />
-        <result property="pub.uniqueName"    column="uniquename" />
-        <result property="cvTerm.dbXRef.accession" column="accession" />
-        <result property="cvTerm.dbXRef.db.name"   column="name" />
-        <!-- <result property="pub" column="pub_id" select="selectPub" /> -->
-     </resultMap>
-        
-     <resultMap id="select-featurecvtermdbxref" class="FeatureCvTermDbXRef"
-                groupBy="featureCvTermId">
-        <result property="featureCvTerm.featureCvTermId"   column="feature_cvterm_id" />
-        <result property="dbXRef.accession"   column="accession"/>
-        <result property="dbXRef.version"     column="version"/>
-        <result property="dbXRef.description" column="description"/>
-        <result property="dbXRef.db.name" column="name"/>
-     </resultMap>
      
      <!-- SQL -->
-        
-     <!-- select featureprops e.g. for lazy loading -->
-     <select id="selectFeatureProp" resultMap="select-featureprop">
-       SELECT type_id, value, rank 
-       FROM featureprop
-       WHERE feature_id=#feature_id#
-     </select>
-     
-     <!--  select feature_relationship -->
-     <select id="getFeatureRelationship" resultMap="select-relationship">
-       SELECT subject_id, object_id, type_id, value, rank 
-       FROM feature_relationship
-       WHERE
-         <dynamic>
-             <isNotNull property="object_id">                        
-               object_id=#object_id#
-             </isNotNull>
-             <isNotNull property="subject_id">                        
-               subject_id=#subject_id#
-             </isNotNull>
-         </dynamic>
-     </select>
-     
-     <!--  select featureloc -->
-     <select id="getFeatureLoc" resultMap="select-location">
-       SELECT srcfeature_id, fmin, fmax, strand, phase, residue_info, locgroup, rank
-       FROM  featureloc
-       WHERE featureloc.feature_id=#id#
-     </select>
-     
-
-     <!--  select feature_cvterm -->
-     <select id="getFeatureCvTermsByFeature" parameterClass="Feature"
-             resultMap="select-featurecvterm">
-        SELECT
-          fc.feature_id,
-          fc.feature_cvterm_id,
-          fc.cvterm_id, 
-          fc.rank AS fc_rank, 
-          fc.is_not, 
-          fcp.type_id, fcp.value, fcp.rank,
-          cvterm.name AS cvterm_name,
-          cv.name AS cv_name,
-          pub.pub_id, 
-          pub.uniquename,
-          db.name,
-          dbxref.accession
-        FROM feature_cvterm fc 
-        LEFT JOIN feature_cvtermprop fcp ON fc.feature_cvterm_id=fcp.feature_cvterm_id 
-        LEFT JOIN cvterm ON cvterm.cvterm_id=fc.cvterm_id 
-        LEFT JOIN cv ON cvterm.cv_id=cv.cv_id 
-        LEFT JOIN pub ON fc.pub_id=pub.pub_id
-        LEFT JOIN dbxref ON cvterm.dbxref_id=dbxref.dbxref_id 
-        LEFT JOIN db ON dbxref.db_id=db.db_id
-        <dynamic>
-          <isNotNull property="uniqueName" prepend="WHERE">
-            feature_id=(SELECT feature_id FROM feature WHERE uniquename=#uniqueName#)
-          </isNotNull>
-        </dynamic>
-        ORDER BY fc.feature_cvterm_id, fc.rank, type_id, fcp.rank;
-     </select>
-
-     <select id="getFeatureCvTermDbXRef" parameterClass="Feature"
-             resultMap="select-featurecvtermdbxref">
-       SELECT feature_cvterm_id, dbx.*, db.name 
-       FROM feature_cvterm_dbxref fcd 
-       LEFT JOIN dbxref dbx ON dbx.dbxref_id=fcd.dbxref_id 
-       LEFT JOIN db ON db.db_id=dbx.db_id
-       <dynamic>
-          <isNotNull property="uniqueName">
-            LEFT JOIN feature_cvterm fc ON fcd.feature_cvterm_id=fc.feature_cvterm_id
-            WHERE
-            feature_id=(SELECT feature_id FROM feature WHERE uniquename=#uniqueName#)
-          </isNotNull>
-       </dynamic>
-     </select>
      
      <!-- get feature -->
 
@@ -359,22 +190,6 @@
     <!--  WRITE BACK METHODS  -->
     
     <!--  UPDATE  -->
-    <update id="updateFeatureLoc" 
-            parameterClass="FeatureLoc">
-      UPDATE featureloc
-      SET fmin=$fmin$, fmax=$fmax$, rank=$rank$, strand=$strand$
-      <isNotNull property="phase">
-        , phase=$phase$
-      </isNotNull>
-      <isNull property="phase">
-        , phase=NULL
-      </isNull>
-      WHERE 
-      <isNotNull property="featureByFeatureId.uniqueName">
-        feature_id=(SELECT feature_id FROM feature WHERE uniquename=#featureByFeatureId.uniqueName#)
-      </isNotNull>
-    </update>
-    
     <update id="updateFeature"
             parameterClass="Feature">
       UPDATE feature
@@ -387,36 +202,9 @@
       </isNotNull>
       WHERE feature_id=$featureId$
     </update>
-    
-    <update id="updateFeatureProp"
-            parameterClass="FeatureProp">
-      UPDATE featureprop
-      SET value=#value#   
-      WHERE rank=$rank$ AND type_id=$cvTerm.cvTermId$ AND 
-            feature_id=(SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#)
-    </update>
-    
-    <update id="updateFeatureRelationshipsForSubjectId" 
-           parameterClass="FeatureRelationship">
-      UPDATE feature_relationship
-      SET
-        rank=$rank$, type_id=$cvTerm.cvTermId$
-      WHERE subject_id=
-           ( SELECT feature_id FROM feature WHERE uniquename=#featureBySubjectId.uniqueName# )
-      AND   object_id=
-           ( SELECT feature_id FROM feature WHERE uniquename=#featureByObjectId.uniqueName# )
-   </update>
+   
     
     <!--  INSERT  -->
-    <insert id="insertFeatureProp"
-            parameterClass="FeatureProp">
-      INSERT INTO featureprop
-      ( feature_id, type_id, value, rank )
-      VALUES
-      ( (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#),
-        $cvTerm.cvTermId$, #value#, $rank$ )
-    </insert>
-
     <insert id="insertFeature" 
             parameterClass="Feature">
       INSERT INTO feature 
@@ -428,59 +216,9 @@
           #uniqueName#,
           $cvTerm.cvTermId$ )
     </insert>
-
-    <insert id="insertFeatureLoc" 
-            parameterClass="Feature">
-      INSERT INTO featureloc
-        ( featureloc_id, feature_id, srcfeature_id, fmin, fmax, strand
-          <isNotNull property="featureLoc.phase">
-           , phase
-          </isNotNull> 
-        )
-      VALUES
-        ( nextval('featureloc_featureloc_id_seq'),
-          $featureId$,
-          $featureLoc.featureBySrcFeatureId.featureId$,
-          $featureLoc.fmin$,
-          $featureLoc.fmax$,
-          $featureLoc.strand$
-          <isNotNull property="featureLoc.phase">
-            , $featureLoc.phase$
-          </isNotNull>
-        )
-    </insert>
-
-   <insert id="insertFeatureRelationship" 
-           parameterClass="FeatureRelationship">
-      INSERT INTO feature_relationship
-        ( subject_id, object_id, type_id )
-      VALUES
-        ( (SELECT feature_id FROM feature WHERE uniquename=#featureBySubjectId.uniqueName#),
-          (SELECT feature_id FROM feature WHERE uniquename=#featureByObjectId.uniqueName#),
-          $cvTerm.cvTermId$ )
-   </insert>
    
 
    <!--  DELETE  -->
-   
-   <delete id="deleteFeatureProp"
-           parameterClass="FeatureProp">
-      DELETE FROM featureprop
-      WHERE
-        <isNotNull property="feature.uniqueName">
-          feature_id=
-            (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#)
-          AND
-        </isNotNull>
-        <isGreaterThan property="rank" compareValue="-1">
-           rank=$rank$ AND
-        </isGreaterThan>
-        <isNotNull property="value">
-          value=#value# AND
-        </isNotNull>
-        type_id=$cvTerm.cvTermId$
-   </delete>
-   
    <delete id="deleteFeature" 
            parameterClass="Feature">
       DELETE FROM feature
diff --git a/artemis_sqlmap/FeatureCvTerm.xml b/artemis_sqlmap/FeatureCvTerm.xml
new file mode 100644
index 0000000000000000000000000000000000000000..29d98339a9f85c3cccf7704195dbe574e7d72ae4
--- /dev/null
+++ b/artemis_sqlmap/FeatureCvTerm.xml
@@ -0,0 +1,59 @@
+<!DOCTYPE sqlMap 
+    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
+    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
+ 
+
+<sqlMap namespace="FeatureCvTerm"> 
+ 
+      <typeAlias alias="FeatureCvTerm"
+        type="org.gmod.schema.sequence.FeatureCvTerm"/>
+        
+     <resultMap id="select-featurecvterm" class="FeatureCvTerm" 
+                groupBy="featureCvTermId">
+        <result property="featureCvTermId"   column="feature_cvterm_id" />
+        <result property="feature.featureId" column="feature_id" />
+        <result property="cvTerm.cvTermId"   column="cvterm_id" />
+        <result property="cvTerm.name"       column="cvterm_name" />
+        <result property="cvTerm.cv.name"    column="cv_name" />
+        <result property="not"               column="is_not" />
+        <result property="rank"              column="fc_rank" />
+        <result property="featureCvTermProps" resultMap="FeatureCvTermProp.feature_cvtermprop"  />
+        <result property="pub.pubId"         column="pub_id" />
+        <result property="pub.uniqueName"    column="uniquename" />
+        <result property="cvTerm.dbXRef.accession" column="accession" />
+        <result property="cvTerm.dbXRef.db.name"   column="name" />
+        <!-- <result property="pub" column="pub_id" select="selectPub" /> -->
+     </resultMap>
+ 
+      <!--  select feature_cvterm -->
+     <select id="getFeatureCvTermsByFeature" parameterClass="Feature"
+             resultMap="select-featurecvterm">
+        SELECT
+          fc.feature_id,
+          fc.feature_cvterm_id,
+          fc.cvterm_id, 
+          fc.rank AS fc_rank, 
+          fc.is_not, 
+          fcp.type_id, fcp.value, fcp.rank,
+          cvterm.name AS cvterm_name,
+          cv.name AS cv_name,
+          pub.pub_id, 
+          pub.uniquename,
+          db.name,
+          dbxref.accession
+        FROM feature_cvterm fc 
+        LEFT JOIN feature_cvtermprop fcp ON fc.feature_cvterm_id=fcp.feature_cvterm_id 
+        LEFT JOIN cvterm ON cvterm.cvterm_id=fc.cvterm_id 
+        LEFT JOIN cv ON cvterm.cv_id=cv.cv_id 
+        LEFT JOIN pub ON fc.pub_id=pub.pub_id
+        LEFT JOIN dbxref ON cvterm.dbxref_id=dbxref.dbxref_id 
+        LEFT JOIN db ON dbxref.db_id=db.db_id
+        <dynamic>
+          <isNotNull property="uniqueName" prepend="WHERE">
+            feature_id=(SELECT feature_id FROM feature WHERE uniquename=#uniqueName#)
+          </isNotNull>
+        </dynamic>
+        ORDER BY fc.feature_cvterm_id, fc.rank, type_id, fcp.rank;
+     </select>
+     
+</sqlMap>
\ No newline at end of file
diff --git a/artemis_sqlmap/FeatureCvTermDbXRef.xml b/artemis_sqlmap/FeatureCvTermDbXRef.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e16cc5a0c473f26512a1b61cb9a42a8fafaf5274
--- /dev/null
+++ b/artemis_sqlmap/FeatureCvTermDbXRef.xml
@@ -0,0 +1,35 @@
+<!DOCTYPE sqlMap 
+    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
+    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
+ 
+
+<sqlMap namespace="FeatureCvTermDbXRef"> 
+
+     <typeAlias alias="FeatureCvTermDbXRef"
+        type="org.gmod.schema.sequence.FeatureCvTermDbXRef"/>
+        
+     <resultMap id="select-featurecvtermdbxref" class="FeatureCvTermDbXRef"
+                groupBy="featureCvTermId">
+        <result property="featureCvTerm.featureCvTermId"   column="feature_cvterm_id" />
+        <result property="dbXRef.accession"   column="accession"/>
+        <result property="dbXRef.version"     column="version"/>
+        <result property="dbXRef.description" column="description"/>
+        <result property="dbXRef.db.name" column="name"/>
+    </resultMap>
+   
+    <select id="getFeatureCvTermDbXRef" parameterClass="Feature"
+             resultMap="select-featurecvtermdbxref">
+       SELECT feature_cvterm_id, dbx.*, db.name 
+       FROM feature_cvterm_dbxref fcd 
+       LEFT JOIN dbxref dbx ON dbx.dbxref_id=fcd.dbxref_id 
+       LEFT JOIN db ON db.db_id=dbx.db_id
+       <dynamic>
+          <isNotNull property="uniqueName">
+            LEFT JOIN feature_cvterm fc ON fcd.feature_cvterm_id=fc.feature_cvterm_id
+            WHERE
+            feature_id=(SELECT feature_id FROM feature WHERE uniquename=#uniqueName#)
+          </isNotNull>
+       </dynamic>
+    </select>
+     
+</sqlMap>
\ No newline at end of file
diff --git a/artemis_sqlmap/FeatureCvTermProp.xml b/artemis_sqlmap/FeatureCvTermProp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a046fa8fec37cbc76b2f9fce7a0c4d6698be6c8e
--- /dev/null
+++ b/artemis_sqlmap/FeatureCvTermProp.xml
@@ -0,0 +1,16 @@
+<!DOCTYPE sqlMap 
+    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
+    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
+ 
+
+<sqlMap namespace="FeatureCvTermProp">
+
+     <typeAlias alias="FeatureCvTermProp"
+        type="org.gmod.schema.sequence.FeatureCvTermProp"/>  
+        
+     <resultMap id="feature_cvtermprop" class="FeatureCvTermProp">
+        <result property="cvTerm.cvTermId" column="type_id" />
+        <result property="value" column="value" />
+        <result property="rank" column="rank" />
+     </resultMap>
+</sqlMap>
\ No newline at end of file
diff --git a/artemis_sqlmap/FeatureLoc.xml b/artemis_sqlmap/FeatureLoc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..56647ca73cafd5c72afd432ea8926acb8586d315
--- /dev/null
+++ b/artemis_sqlmap/FeatureLoc.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?> 
+ 
+<!DOCTYPE sqlMap 
+    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
+    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
+ 
+
+<sqlMap namespace="FeatureLoc"> 
+ 
+
+     
+     <typeAlias alias="FeatureLoc"
+        type="org.gmod.schema.sequence.FeatureLoc"/>
+        
+     <resultMap id="select-location"
+                class="FeatureLoc">
+        <result property="featureBySrcFeatureId.featureId" column="srcfeature_id" nullValue="-999" />
+        <result property="fmin"   column="fmin"   nullValue="-999" />
+        <result property="fmax"   column="fmax"   nullValue="-999" />
+        <result property="strand" column="strand" nullValue="0" />
+        <result property="phase"  column="phase"  nullValue="0" />
+        <result property="residueInfo"  column="residue_info"/>
+        <result property="locGroup"  column="locgroup"/>
+        <result property="rank"      column="rank"/>
+     </resultMap>
+        
+     <!--  select featureloc -->
+     <select id="getFeatureLoc" resultMap="select-location">
+       SELECT srcfeature_id, fmin, fmax, strand, phase, residue_info, locgroup, rank
+       FROM  featureloc
+       WHERE featureloc.feature_id=#id#
+     </select>
+     
+    <!--  WRITE BACK METHODS  -->
+    
+    <!--  UPDATE  -->
+    <update id="updateFeatureLoc" 
+            parameterClass="FeatureLoc">
+      UPDATE featureloc
+      SET fmin=$fmin$, fmax=$fmax$, rank=$rank$, strand=$strand$
+      <isNotNull property="phase">
+        , phase=$phase$
+      </isNotNull>
+      <isNull property="phase">
+        , phase=NULL
+      </isNull>
+      WHERE 
+      <isNotNull property="featureByFeatureId.uniqueName">
+        feature_id=(SELECT feature_id FROM feature WHERE uniquename=#featureByFeatureId.uniqueName#)
+      </isNotNull>
+    </update>
+   
+    <insert id="insertFeatureLoc" 
+            parameterClass="Feature">
+      INSERT INTO featureloc
+        ( featureloc_id, feature_id, srcfeature_id, fmin, fmax, strand
+          <isNotNull property="featureLoc.phase">
+           , phase
+          </isNotNull> 
+        )
+      VALUES
+        ( nextval('featureloc_featureloc_id_seq'),
+          $featureId$,
+          $featureLoc.featureBySrcFeatureId.featureId$,
+          $featureLoc.fmin$,
+          $featureLoc.fmax$,
+          $featureLoc.strand$
+          <isNotNull property="featureLoc.phase">
+            , $featureLoc.phase$
+          </isNotNull>
+        )
+    </insert>
+         
+</sqlMap> 
\ No newline at end of file
diff --git a/artemis_sqlmap/FeatureProp.xml b/artemis_sqlmap/FeatureProp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d202049b1b802b9e61aae0d6b617b22ef3520cd1
--- /dev/null
+++ b/artemis_sqlmap/FeatureProp.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?> 
+ 
+<!DOCTYPE sqlMap 
+    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
+    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
+ 
+
+<sqlMap namespace="FeatureProp">
+
+     <typeAlias alias="FeatureProp"
+        type="org.gmod.schema.sequence.FeatureProp"/>
+        
+     <resultMap id="select-featureprop" 
+                class="FeatureProp">
+        <result property="value" column="value" />
+        <result property="rank" column="rank" />
+        <result property="cvTerm" column="type_id" select="selectCvterm" />
+     </resultMap>
+     
+    <resultMap id="featureprop" 
+               class="FeatureProp">
+        <result property="value" column="value" />
+        <result property="rank"  column="prop_rank" />
+        <result property="cvTerm.cvTermId" column="prop_type_id" />
+    </resultMap>
+     
+   <!-- select featureprops e.g. for lazy loading -->
+     <select id="selectFeatureProp" resultMap="select-featureprop">
+       SELECT type_id, value, rank 
+       FROM featureprop
+       WHERE feature_id=#feature_id#
+     </select>
+     
+    <update id="updateFeatureProp"
+            parameterClass="FeatureProp">
+      UPDATE featureprop
+      SET value=#value#   
+      WHERE rank=$rank$ AND type_id=$cvTerm.cvTermId$ AND 
+            feature_id=(SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#)
+    </update>
+    
+    <!--  INSERT  -->
+    <insert id="insertFeatureProp"
+            parameterClass="FeatureProp">
+      INSERT INTO featureprop
+      ( feature_id, type_id, value, rank )
+      VALUES
+      ( (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#),
+        $cvTerm.cvTermId$, #value#, $rank$ )
+    </insert>
+    
+    <!--  DELETE  -->
+   <delete id="deleteFeatureProp"
+           parameterClass="FeatureProp">
+      DELETE FROM featureprop
+      WHERE
+        <isNotNull property="feature.uniqueName">
+          feature_id=
+            (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#)
+          AND
+        </isNotNull>
+        <isGreaterThan property="rank" compareValue="-1">
+           rank=$rank$ AND
+        </isGreaterThan>
+        <isNotNull property="value">
+          value=#value# AND
+        </isNotNull>
+        type_id=$cvTerm.cvTermId$
+   </delete>
+    
+</sqlMap> 
\ No newline at end of file
diff --git a/artemis_sqlmap/FeatureRelationship.xml b/artemis_sqlmap/FeatureRelationship.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba40dbf4dd6bccfafb11074e9b8ba5ee7d20996a
--- /dev/null
+++ b/artemis_sqlmap/FeatureRelationship.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" ?> 
+ 
+<!DOCTYPE sqlMap 
+    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
+    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
+ 
+
+<sqlMap namespace="FeatureRelationship">
+
+        
+     <typeAlias alias="FeatureRelationship"
+        type="org.gmod.schema.sequence.FeatureRelationship"/>
+        
+     <resultMap id="feature_relationship" 
+               class="FeatureRelationship">
+        <result property="featureByObjectId.featureId" column="object_id"/>
+  	    <result property="cvTerm.cvTermId" column="relation_type_id"/>
+  	    <result property="rank" column="rank"/>
+  	    <result property="value" column="relation_value" />
+     </resultMap>
+
+    <resultMap id="select-relationship" 
+                class="FeatureRelationship">
+        <result property="featureBySubjectId.featureId" column="subject_id" />
+        <result property="featureByObjectId.featureId" column="object_id" />
+        <result property="value" column="value" />
+        <result property="rank" column="rank" />
+        <result property="cvTerm" column="type_id" select="selectCvterm" />
+     </resultMap>
+     
+     <!--  select feature_relationship -->
+     <select id="getFeatureRelationship" resultMap="select-relationship">
+       SELECT subject_id, object_id, type_id, value, rank 
+       FROM feature_relationship
+       WHERE
+         <dynamic>
+             <isNotNull property="object_id">                        
+               object_id=#object_id#
+             </isNotNull>
+             <isNotNull property="subject_id">                        
+               subject_id=#subject_id#
+             </isNotNull>
+         </dynamic>
+     </select>
+
+
+    <update id="updateFeatureRelationshipsForSubjectId" 
+           parameterClass="FeatureRelationship">
+      UPDATE feature_relationship
+      SET
+        rank=$rank$, type_id=$cvTerm.cvTermId$
+      WHERE subject_id=
+           ( SELECT feature_id FROM feature WHERE uniquename=#featureBySubjectId.uniqueName# )
+      AND   object_id=
+           ( SELECT feature_id FROM feature WHERE uniquename=#featureByObjectId.uniqueName# )
+   </update>
+   
+   <insert id="insertFeatureRelationship" 
+           parameterClass="FeatureRelationship">
+      INSERT INTO feature_relationship
+        ( subject_id, object_id, type_id )
+      VALUES
+        ( (SELECT feature_id FROM feature WHERE uniquename=#featureBySubjectId.uniqueName#),
+          (SELECT feature_id FROM feature WHERE uniquename=#featureByObjectId.uniqueName#),
+          $cvTerm.cvTermId$ )
+   </insert>
+   
+</sqlMap> 
\ No newline at end of file
diff --git a/artemis_sqlmap/chado_iBatis_config.xml b/artemis_sqlmap/chado_iBatis_config.xml
index 40c326c0d3614dce7603b66afa1c6b002273c017..e6d36e1eda1f388a4ebff590e313cf6e8b330c80 100644
--- a/artemis_sqlmap/chado_iBatis_config.xml
+++ b/artemis_sqlmap/chado_iBatis_config.xml
@@ -52,6 +52,12 @@
   <sqlMap resource="artemis_sqlmap/CvTerm.xml" />
   <sqlMap resource="artemis_sqlmap/Pub.xml" />
   <sqlMap resource="artemis_sqlmap/Feature.xml" />
+  <sqlMap resource="artemis_sqlmap/FeatureCvTerm.xml" />
+  <sqlMap resource="artemis_sqlmap/FeatureCvTermDbXRef.xml" />
+  <sqlMap resource="artemis_sqlmap/FeatureCvTermProp.xml" />
+  <sqlMap resource="artemis_sqlmap/FeatureLoc.xml" />
+  <sqlMap resource="artemis_sqlmap/FeatureProp.xml" />
+  <sqlMap resource="artemis_sqlmap/FeatureRelationship.xml" />
   <sqlMap resource="artemis_sqlmap/DbXRef.xml" />
   <sqlMap resource="artemis_sqlmap/Synonym.xml" />