|  | @@ -399,27 +399,34 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
	
		
			
				|  |  |        $tag = preg_split("/=/", $attr, 2);  // split by equals sign
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |        // multiple instances of an attribute are separated by commas
 | 
	
		
			
				|  |  | -      $tags[$tag[0]] = explode(",", $tag[1]);  // split by comma
 | 
	
		
			
				|  |  | +      $tag_name = $tag[0];
 | 
	
		
			
				|  |  | +      if (!array_key_exists($tag_name, $tags)) {
 | 
	
		
			
				|  |  | +        $tags[$tag_name] = array();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      $tags[$tag_name] = array_merge($tags[$tag_name], explode(",", $tag[1]));  // split by comma
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |        // replace the URL escape codes for each tag
 | 
	
		
			
				|  |  | -      for ($i = 0; $i < count($tags[$tag[0]]); $i++) {
 | 
	
		
			
				|  |  | -        $tags[$tag[0]][$i] = urldecode($tags[$tag[0]][$i]);          
 | 
	
		
			
				|  |  | +      for ($i = 0; $i < count($tags[$tag_name]); $i++) {
 | 
	
		
			
				|  |  | +        $tags[$tag_name][$i] = urldecode($tags[$tag_name][$i]);          
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |        // get the name and ID tags
 | 
	
		
			
				|  |  | -      if (strcmp($tag[0], 'ID')==0) {
 | 
	
		
			
				|  |  | +      if (strcmp($tag_name, 'ID') == 0) {
 | 
	
		
			
				|  |  |          $attr_uniquename = $tag[1];
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -      elseif (strcmp($tag[0], 'Name')==0) {
 | 
	
		
			
				|  |  | +      elseif (strcmp($tag_name, 'Name') == 0) {
 | 
	
		
			
				|  |  |          $attr_name = $tag[1];
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // get the list of non-reserved attributes
 | 
	
		
			
				|  |  | -      elseif (strcmp($tag[0], 'Alias')!=0        and strcmp($tag[0], 'Parent')!=0 and
 | 
	
		
			
				|  |  | -              strcmp($tag[0], 'Target')!=0       and strcmp($tag[0], 'Gap')!=0 and
 | 
	
		
			
				|  |  | -              strcmp($tag[0], 'Derives_from')!=0 and strcmp($tag[0], 'Note')!=0 and
 | 
	
		
			
				|  |  | -              strcmp($tag[0], 'Dbxref')!=0       and strcmp($tag[0], 'Ontology_term')!=0 and
 | 
	
		
			
				|  |  | -              strcmp($tag[0], 'Is_circular')!=0) {
 | 
	
		
			
				|  |  | -          $attr_others[$tag[0]] = $tag[1];
 | 
	
		
			
				|  |  | +      elseif (strcmp($tag_name, 'Alias') !=0        and strcmp($tag_name, 'Parent') !=0 and
 | 
	
		
			
				|  |  | +              strcmp($tag_name, 'Target') !=0       and strcmp($tag_name, 'Gap') !=0 and
 | 
	
		
			
				|  |  | +              strcmp($tag_name, 'Derives_from') !=0 and strcmp($tag_name, 'Note') !=0 and
 | 
	
		
			
				|  |  | +              strcmp($tag_name, 'Dbxref') !=0       and strcmp($tag_name, 'Ontology_term') !=0 and
 | 
	
		
			
				|  |  | +              strcmp($tag_name, 'Is_circular') !=0) {
 | 
	
		
			
				|  |  | +        foreach ($tags[$tag_name] as $value){
 | 
	
		
			
				|  |  | +          $attr_others[$tag_name][] = $value;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -556,11 +563,15 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // add gap information.  This goes in simply as a property
 | 
	
		
			
				|  |  |          if (array_key_exists('Gap', $tags)) {
 | 
	
		
			
				|  |  | -          tripal_feature_load_gff3_property($feature, 'Gap', $tags['Gap'][0], $log);
 | 
	
		
			
				|  |  | +          foreach ($tags['Gap'] as $value) {
 | 
	
		
			
				|  |  | +            tripal_feature_load_gff3_property($feature, 'Gap', $value, $log);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // add notes. This goes in simply as a property
 | 
	
		
			
				|  |  |          if (array_key_exists('Note', $tags)) {
 | 
	
		
			
				|  |  | -          tripal_feature_load_gff3_property($feature, 'Note', $tags['Note'][0], $log);
 | 
	
		
			
				|  |  | +          foreach ($tags['Note'] as $value) {
 | 
	
		
			
				|  |  | +              tripal_feature_load_gff3_property($feature, 'Note', $value, $log);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // add the Derives_from relationship (e.g. polycistronic genes).
 | 
	
		
			
				|  |  |          if (array_key_exists('Derives_from', $tags)) {
 | 
	
	
		
			
				|  | @@ -573,8 +584,10 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // add any additional attributes
 | 
	
		
			
				|  |  |          if ($attr_others) {
 | 
	
		
			
				|  |  | -          foreach ($attr_others as $property => $value) {
 | 
	
		
			
				|  |  | -            tripal_feature_load_gff3_property($feature, $property, $value, $log);
 | 
	
		
			
				|  |  | +          foreach ($attr_others as $tag_name => $values) {
 | 
	
		
			
				|  |  | +            foreach ($values as $value){
 | 
	
		
			
				|  |  | +              tripal_feature_load_gff3_property($feature, $tag_name, $value, $log);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 |