Beispiel #1
0
function find_keyword($keyword_name)
{
    # Attempt to find keyword
    $keyword = KeywordQuery::create()->useKeywordSynonymQuery()->filterByValue($keyword_name)->endUse()->findOne();
    # Handle keyword
    if ($keyword) {
        # Return keyword
        return $keyword;
    } else {
        # Create keyword
        $keyword = new Keyword();
        $keyword->setValue($keyword_name)->save();
        # Create synonym
        $synonym = new Synonym();
        $synonym->setKeyword($keyword)->setValue($keyword_name)->save();
        # Return keyword
        return $keyword;
    }
}
Beispiel #2
0
 public function __construct(DBConnection $conn, $synonymName, $configKey, $sourceType)
 {
     $this->sourceType = $sourceType;
     parent::__construct($conn, $synonymName, $configKey);
 }
 public function insert_vernacular_names($row, $parameters)
 {
     self::debug_iterations("Inserting VernacularName");
     $this->commit_iterations("VernacularName", 500);
     if ($this->archive_validator->has_error_by_line('http://rs.gbif.org/terms/1.0/vernacularname', $parameters['archive_table_definition']->location, $parameters['archive_line_number'])) {
         write_to_resource_harvesting_log("ERROR: insert_vernacular_names: has_error_by_line" . ",file_location:" . $parameters['archive_table_definition']->location . ",line_number:" . $parameters['archive_line_number']);
         return false;
     }
     $taxon_ids = self::get_foreign_keys_from_row($row, 'http://rs.tdwg.org/dwc/terms/taxonID');
     $taxon_info = array();
     if ($taxon_ids) {
         foreach ($taxon_ids as $taxon_id) {
             if ($taxon_info = @$this->taxon_ids_inserted[$taxon_id]) {
                 self::uncompress_array($taxon_info);
                 $taxon_info[] = $taxon_info;
             }
         }
     }
     if (!$taxon_info) {
         return false;
     }
     $vernacularName = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/vernacularName']);
     $source = @self::field_decode($row['http://purl.org/dc/terms/source']);
     $languageString = @self::field_decode($row['http://purl.org/dc/terms/language']);
     $locality = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/locality']);
     $countryCode = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/countryCode']);
     $isPreferredName = @self::field_decode($row['http://rs.gbif.org/terms/1.0/isPreferredName']);
     $taxonRemarks = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/taxonRemarks']);
     $name = Name::find_or_create_by_string($vernacularName);
     $language = Language::find_or_create_for_parser($languageString);
     if (!$name) {
         return false;
     }
     foreach ($taxon_info as $info) {
         $he_id = $taxon_info['hierarchy_entry_id'];
         $tc_id = $taxon_info['taxon_concept_id'];
         $common_name_relation = SynonymRelation::find_or_create_by_translated_label('common name');
         $result = $this->mysqli->query("SELECT SQL_NO_CACHE id FROM synonyms" . " WHERE name_id = " . $name->id . " AND synonym_relation_id = " . $common_name_relation->id . " AND hierarchy_entry_id = " . $he_id . " AND hierarchy_id = " . $this->harvest_event->resource->hierarchy_id . " AND identifier = " . $taxon_ids[0]);
         if ($result && $result->fetch_assoc()) {
             $l_id = @$language->id ?: 0;
             $GLOBALS['db_connection']->update("UPDATE synonyms SET" . " language_id = " . $l_id . ", published = 0" . ", taxon_remarks = '" . $taxonRemarks . "' WHERE name_id = " . $name->id . " AND synonym_relation_id = " . $common_name_relation->id . " AND hierarchy_entry_id = " . $he_id . " AND hierarchy_id = " . $this->harvest_event->resource->hierarchy_id . "AND identifier = " . $taxon_ids[0]);
             break;
         } else {
             Synonym::find_or_create(array('name_id' => $name->id, 'synonym_relation_id' => $common_name_relation->id, 'language_id' => @$language->id ?: 0, 'hierarchy_entry_id' => $he_id, 'preferred' => $isPreferredName != '', 'hierarchy_id' => $this->harvest_event->resource->hierarchy_id, 'vetted_id' => 0, 'published' => 0, 'taxonRemarks' => $taxonRemarks, 'identifier' => $taxon_ids[0]));
             break;
         }
     }
 }
Beispiel #4
0
 function details_tcs_synonym($id)
 {
     $entry = Synonym::find($id);
     $nomenclaturalCode = "Zoological";
     $scientific = "true";
     if ($entry->synonym_relation && $entry->synonym_relation->translation && strtolower($entry->synonym_relation->translation->label) == "common name") {
         $scientific = "false";
     }
     $return = "";
     $return .= "  <TaxonNames>\n";
     $return .= "    <TaxonName id='n" . $entry->name->id . "' nomenclaturalCode='{$nomenclaturalCode}'>\n";
     $return .= "      <Simple>" . htmlspecialchars($entry->name->string) . "</Simple>\n";
     if ($scientific == "true") {
         $return .= "      <CanonicalName>\n";
         $return .= "        <Simple>" . htmlspecialchars($entry->name->canonical_form->string) . "</Simple>\n";
         $return .= "      </CanonicalName>\n";
     }
     if ($agents = $entry->agents) {
         $return .= "      <ProviderSpecificData>\n";
         $return .= "        <NameSources>\n";
         foreach ($agents as $k => $v) {
             $return .= "          <NameSource>\n";
             $return .= "            <Simple>" . htmlspecialchars($v->agent->display_name) . "</Simple>\n";
             $return .= "            <Role>" . htmlspecialchars($v->agent_role->translation->label) . "</Role>\n";
             $return .= "          </NameSource>\n";
         }
         $return .= "        </NameSources>\n";
         $return .= "      </ProviderSpecificData>\n";
     }
     $return .= "    </TaxonName>\n";
     $return .= "  </TaxonNames>\n";
     $return .= "  <TaxonConcepts>\n";
     $return .= "    <TaxonConcept id='c" . $entry->id . "'>\n";
     $return .= "      <Name scientific='{$scientific}' ";
     if (@$entry->language->iso_639_1) {
         $return .= "language='" . $entry->language->iso_639_1 . "' ";
     }
     $return .= "ref='n" . $entry->name->id . "'>" . htmlspecialchars($entry->name->string) . "</Name>\n";
     $return .= "    </TaxonConcept>\n";
     $return .= "  </TaxonConcepts>\n";
     return $return;
 }