From 0dd23bf1546d4f74c377338b941acfaae51499aa Mon Sep 17 00:00:00 2001 From: mdorf Date: Mon, 21 Oct 2024 15:22:42 -0700 Subject: [PATCH] Fixed the issues revealed by the failing unit tests --- Gemfile | 2 +- Gemfile.lock | 20 +++++++------ .../operations/submission_rdf_generator.rb | 30 ++++++++++++++----- test/data/ontology_files/BRO_v3.2.owl | 5 ++-- test/models/test_ontology_submission.rb | 2 -- 5 files changed, 37 insertions(+), 22 deletions(-) diff --git a/Gemfile b/Gemfile index 23512929..949eac2d 100644 --- a/Gemfile +++ b/Gemfile @@ -34,5 +34,5 @@ group :development do gem 'rubocop', require: false end # NCBO gems (can be from a local dev path or from rubygems/git) -gem 'goo', github: 'ncbo/goo', branch: 'develop' +gem 'goo', github: 'ncbo/goo', branch: 'multilingual_preflabels' gem 'sparql-client', github: 'ncbo/sparql-client', branch: 'develop' diff --git a/Gemfile.lock b/Gemfile.lock index 458756f5..fe436c12 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GIT remote: https://github.com/ncbo/goo.git - revision: 74a012eebb9433d031eb00df5abbe488cb8b4512 - branch: develop + revision: d6b84e12d61317dbddc1b86cb1451acb37915369 + branch: multilingual_preflabels specs: goo (0.0.2) addressable (~> 2.8) @@ -37,6 +37,7 @@ GEM public_suffix (>= 2.0.2, < 7.0) ansi (1.5.0) ast (2.4.2) + base64 (0.2.0) bcrypt (3.1.20) bigdecimal (3.1.8) builder (3.3.0) @@ -55,9 +56,11 @@ GEM launchy (>= 2.1, < 4.0) mail (~> 2.7) eventmachine (1.2.7) - faraday (1.2.0) - multipart-post (>= 1.2, < 3) - ruby2_keywords + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) ffi (1.17.0) hashie (5.0.0) htmlentities (4.3.4) @@ -94,9 +97,8 @@ GEM minitest (>= 2.12, < 5.0) powerbar multi_json (1.15.0) - multipart-post (2.4.1) net-http-persistent (2.9.4) - net-imap (0.4.16) + net-imap (0.4.17) date net-protocol net-pop (0.1.2) @@ -125,7 +127,7 @@ GEM method_source (~> 1.0) public_suffix (5.1.1) racc (1.8.1) - rack (2.2.9) + rack (2.2.10) rack-test (0.8.3) rack (>= 1.0, < 3) rainbow (3.1.1) @@ -148,7 +150,7 @@ GEM rsolr (2.6.0) builder (>= 2.1.2) faraday (>= 0.9, < 3, != 2.0.0) - rubocop (1.66.1) + rubocop (1.67.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) diff --git a/lib/ontologies_linked_data/services/submission_process/operations/submission_rdf_generator.rb b/lib/ontologies_linked_data/services/submission_process/operations/submission_rdf_generator.rb index ea9a0c9f..9d457017 100644 --- a/lib/ontologies_linked_data/services/submission_process/operations/submission_rdf_generator.rb +++ b/lib/ontologies_linked_data/services/submission_process/operations/submission_rdf_generator.rb @@ -11,7 +11,16 @@ def process(logger, options = {}) def handle_missing_labels(file_path, logger) callbacks = { + + + + include_languages: true, + + + + + missing_labels: { op_name: 'Missing Labels Generation', required: true, @@ -189,21 +198,24 @@ def generate_missing_labels_pre_page(artifacts = {}, logger, paging, page_classe def generate_missing_labels_each(artifacts = {}, logger, paging, page_classes, page, c) prefLabel = nil + portal_lang = Goo.portal_language + prefLabel_lang = c.prefLabel(include_languages: true) + no_default_prefLabel = prefLabel_lang.nil? || (prefLabel_lang.keys & [portal_lang, :none]).empty? - if c.prefLabel.nil? + if prefLabel_lang.nil? || no_default_prefLabel lang_rdfs_labels = c.label(include_languages: true) - lang_rdfs_labels = {none: []} if lang_rdfs_labels.empty? + lang_rdfs_labels = {none: []} if lang_rdfs_labels.to_a.empty? || + (no_default_prefLabel && (lang_rdfs_labels.keys & [portal_lang, :none]).empty?) - lang_rdfs_labels&.each do |lang, rdfs_labels| + lang_rdfs_labels.each do |lang, rdfs_labels| if rdfs_labels && rdfs_labels.length > 1 && c.synonym.length > 0 rdfs_labels = (Set.new(c.label) - Set.new(c.synonym)).to_a.first - rdfs_labels = c.label if rdfs_labels.nil? || rdfs_labels.length == 0 end rdfs_labels = [rdfs_labels] if rdfs_labels and not (rdfs_labels.instance_of? Array) - label = nil + label = nil if rdfs_labels && rdfs_labels.length > 0 # this sort is needed for a predictable label selection label = rdfs_labels.sort[0] @@ -215,13 +227,15 @@ def generate_missing_labels_each(artifacts = {}, logger, paging, page_classes, p lang = nil prefLabel = label end - prefLabel = label if !prefLabel && lang === Goo.portal_language + prefLabel = label if !prefLabel && lang === portal_lang prefLabel = label unless prefLabel artifacts[:label_triples] << LinkedData::Utils::Triples.label_for_class_triple( - c.id, Goo.vocabulary(:metadata_def)[:prefLabel], label, lang) + c.id, Goo.vocabulary(:metadata_def)[:prefLabel], prefLabel, lang) end - else + elsif prefLabel_lang prefLabel = c.prefLabel + else + prefLabel = LinkedData::Utils::Triples.last_iri_fragment c.id.to_s end if @submission.ontology.viewOf.nil? diff --git a/test/data/ontology_files/BRO_v3.2.owl b/test/data/ontology_files/BRO_v3.2.owl index 51b95c0e..8d43c559 100644 --- a/test/data/ontology_files/BRO_v3.2.owl +++ b/test/data/ontology_files/BRO_v3.2.owl @@ -642,6 +642,7 @@ Activity related to the creation, use, or maintenance of a biorepository (http://en.wikipedia.org/wiki/Biorepository) + Gestion des échantillons biologiques Biospecimen Management @@ -652,7 +653,7 @@ As defined in http://en.wikipedia.org/wiki/Community_engagement - Community Engagement + Engagement communautaire @@ -672,7 +673,7 @@ As defined in http://en.wikipedia.org/wiki/Gene_therapy - Gene Therapy + Thérapie génique diff --git a/test/models/test_ontology_submission.rb b/test/models/test_ontology_submission.rb index 581de2db..e2c6be5b 100644 --- a/test/models/test_ontology_submission.rb +++ b/test/models/test_ontology_submission.rb @@ -316,7 +316,6 @@ def test_generate_language_preflabels submission_parse("D3OTEST", "DSMZ Digital Diversity Ontology Test", "./test/data/ontology_files/d3o.owl", 1, process_rdf: true, index_search: true, extract_metadata: false) - res = LinkedData::Models::Class.search("prefLabel_en:Anatomic Structure", {:fq => "submissionAcronym:D3OTEST", :start => 0, :rows => 100}) refute_equal 0, res["response"]["numFound"] refute_nil res["response"]["docs"].select{|doc| doc["resource_id"].eql?('https://purl.dsmz.de/schema/AnatomicStructure')}.first @@ -1190,7 +1189,6 @@ def test_submission_extract_metadata end end - def test_submission_delete_remove_files #This one has resources wih accents. submission_parse("ONTOMATEST",