| 
					
				 | 
			
			
				@@ -586,7 +586,7 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if ($stanza === TRUE && (substr($line, 0, 3) === "id:")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          $parts = explode(':', $line); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $parts = explode(':', $line, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $short_name = strtolower($parts[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $short_name = preg_replace('/\s+/', '', $short_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -608,6 +608,8 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $results = $short_name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print_r('$results'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print_r($results); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $defaultcv = tripal_insert_cv(strtoupper($results), ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $this->newcvs[$defaultcv->name] = $defaultcv->cv_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -632,7 +634,9 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!$this->processTerms($defaultcv, $default_db)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       throw new Exception('Cannot add terms from this ontology'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Empty the temp table. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sql = "DELETE FROM {tripal_obo_temp}"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    chado_query($sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -776,7 +780,7 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Check the id isn't a reference to another term. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //TODO: Check chado for the accession, so we can avoid lookups where possible. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (strpos($t['id'], ':')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $pair = explode(":", $t['id']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $pair = explode(":", $t['id'], 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $ontology_id = $pair[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $accession_num = $pair[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (is_numeric($accession_num) && ($ontology_id != $default_db)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1072,56 +1076,95 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       elseif (strpos($objname, ':')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $term_id = $objname; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $reference_term = TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $pair = explode(":", $term_id);     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $pair = explode(":", $term_id, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $ontology_id = $pair[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $accession_num = $pair[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $rel_name = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (is_numeric($accession_num)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $results = $this->oboEbiLookup($term_id, 'term'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (isset($results['label'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          $rel_name = $results['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          $oterm = $results; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (empty($rel_name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          $results = $this->oboEbiLookup($term_id, 'query'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (array_key_exists('docs', $results['response'])){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(!empty($results['response']['docs'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              if (count($results['response']['docs']) > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                foreach ($results['response']['docs'] as $doc) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if ($doc['obo_id'] == $term_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $rel_name = $doc['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $oterm = $doc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Before running the oboEbiLookup check for it in the local chado and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // the tripal_obo_temp table. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // $term_with_quotes = '"' . $term_id . '"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $sql = "  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          SELECT *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          FROM {tripal_obo_temp} tot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          WHERE tot.id = :term_id  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $result = chado_query($sql, array(':term_id' => $term_id . '_lookup'))->fetchObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $oterm = unserialize(base64_decode($result->stanza)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (empty($oterm['label'])){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // Is this ontology is in the local chado? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $sql = "SELECT * FROM {db} db WHERE db.name = :ontology_id "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $db = chado_query($sql, array(':ontology_id' => $ontology_id, ))->fetchObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (!empty($db)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // Find the accession. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $sql = " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              SELECT *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              FROM {dbxref} dbx  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              WHERE dbx.db_id = :db_id  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              AND accession = :accession_num "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $v = chado_query($sql, array(':db_id' => $db->db_id, ':accession_num' => $accession_num))->fetchObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!empty($dbxref)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              $sql = "SELECT * FROM {cvterm} WHERE dbxref_id = $dbxref->dbxref_id "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              $oterm = chado_query($sql)->fetchObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              $rel_name = $oterm->name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (empty($dbxref)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $results = $this->oboEbiLookup($term_id, 'term'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (isset($results['label'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              $rel_name = $results['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              $oterm = $results; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (empty($rel_name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              $results = $this->oboEbiLookup($term_id, 'query'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (array_key_exists('docs', $results['response'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!empty($results['response']['docs'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  if (count($results['response']['docs']) > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    foreach ($results['response']['docs'] as $doc) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      if ($doc['obo_id'] == $term_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        $rel_name = $doc['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        $oterm = $doc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    $rel_name = $results['response']['docs'][0]['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    $oterm = $results['response']['docs'][0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                $rel_name = $results['response']['docs'][0]['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                $oterm = $results['response']['docs'][0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (empty($rel_name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (empty($rel_name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           // The first search doesn't work, so let's try a broader one. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          $results = $this->oboEbiLookup($term_id, 'query-non-local'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (!empty($results)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (array_key_exists('docs', $results['response'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              if (!empty($results['response']['docs'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                foreach ($results['response']['docs'] as $item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if ($item['obo_id'] == $term_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              $results = $this->oboEbiLookup($term_id, 'query-non-local'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (!empty($results)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (array_key_exists('docs', $results['response'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  if (!empty($results['response']['docs'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    foreach ($results['response']['docs'] as $item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      if ($item['obo_id'] == $term_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //Found the first place a label is other than the accession is used, so take 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // that info and then end the loop. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $rel_name = $item['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $oterm = $item; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        $rel_name = $item['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        $oterm = $item; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // Write the term to the tripal_obo_temp table for future reference 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $values = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'id' => $term_id . '_lookup', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'stanza' => base64_encode(serialize($oterm)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'type' => 'lookup', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          chado_insert_record('tripal_obo_temp', $values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }     
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1158,8 +1201,8 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Get the object term. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ($reference_term === TRUE && !empty($oterm)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $objterm = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $objterm['id'] = $oterm['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $objterm['name'] = $oterm['obo_id']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $objterm['id'] = $oterm['obo_id']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $objterm['name'] = $oterm['label']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (array_key_exists('def', $oterm)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $objterm['definition'] = $oterm['def']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1198,6 +1241,8 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $objterm['cv_name' ] = $defaultcv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $objterm['is_relationship'] = $object_is_relationship; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $objterm['db_name'] = $default_db; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print_r('$objterm'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print_r($objterm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $objcvterm = tripal_insert_cvterm($objterm, array('update_existing' => TRUE)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!$objcvterm) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       throw new Exception("Cannot add cvterm " . $objterm['name']); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1464,6 +1509,8 @@ class OBOImporter extends TripalImporter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    * @ingroup tripal_obo_loader 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   private function addCvtermDbxref($cvterm, $xref) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print_r('addCvtermDbxref'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print_r($cvterm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $dbname = preg_replace('/^(.+?):.*$/', '$1', $xref); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $accession = preg_replace('/^.+?:\s*(.*?)(\{.+$|\[.+$|\s.+$|\".+$|$)/', '$1', $xref); 
			 |