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",