From 0b1914bf2e5f0ce6442fc8fc824718a7fa3165e4 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 21:11:38 +0200 Subject: [PATCH 01/62] add skos? method to ontology_submission.rb --- lib/ontologies_linked_data/models/ontology_submission.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index d4cc3f1da..22fef7518 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -2218,7 +2218,7 @@ def roots(extra_include = nil, page = nil, pagesize = nil, concept_schemes: []) paged = true end - skos = self.hasOntologyLanguage&.skos? + skos = self.skos? classes = [] @@ -2294,6 +2294,11 @@ def roots(extra_include = nil, page = nil, pagesize = nil, concept_schemes: []) classes end + def skos? + self.bring :hasOntologyLanguage if bring? :hasOntologyLanguage + self.hasOntologyLanguage&.skos? + end + def ontology_uri self.bring(:URI) if self.bring? :URI RDF::URI.new(self.URI) From 77d12f6afaccab77dad4015ed3d2b30ffe6aa4f0 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 21:15:46 +0200 Subject: [PATCH 02/62] refactor skos_roots to be more clear --- .../models/skos/skos_submission_roots.rb | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb index 91d9d481d..10302f97c 100644 --- a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb +++ b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb @@ -7,18 +7,21 @@ module RootsFetcher def skos_roots(concept_schemes, page, paged, pagesize) classes = [] + query_body = <<-eos + ?x #{RDF::SKOS[:hasTopConcept].to_ntriples} ?root . + #{concept_schemes_filter(concept_schemes)} + eos - skos_roots_sparql_query_body = skos_roots_sparql_query concept_schemes_filter(concept_schemes) root_skos = <<-eos SELECT DISTINCT ?root WHERE { GRAPH #{self.id.to_ntriples} { - #{skos_roots_sparql_query_body} + #{query_body} }} eos count = 0 if paged - count, root_skos = add_pagination(skos_roots_sparql_query_body, page, pagesize, root_skos) + count, root_skos = add_pagination(query_body, page, pagesize, root_skos) end #needs to get cached @@ -36,13 +39,6 @@ def skos_roots(concept_schemes, page, paged, pagesize) classes end - def skos_roots_sparql_query(query_filter) - <<-eos - ?x #{RDF::SKOS[:hasTopConcept].to_ntriples} ?root . - #{query_filter} - eos - end - def add_pagination(query_body, page, pagesize, root_skos) count = count_roots(query_body) From 4bef94926b899da9b8990ab892055b8f22f7f2a7 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 21:16:32 +0200 Subject: [PATCH 03/62] make the root filter use only the main_concept_scheme --- .../models/ontology_submission.rb | 2 +- .../models/skos/skos_submission_roots.rb | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index 22fef7518..ac77b71c3 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -2223,7 +2223,7 @@ def roots(extra_include = nil, page = nil, pagesize = nil, concept_schemes: []) if skos - classes = skos_roots(concept_schemes, page, paged, pagesize) + classes = skos_roots(page, paged, pagesize) else self.ontology.bring(:flat) data_query = nil diff --git a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb index 10302f97c..129fe4006 100644 --- a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb +++ b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb @@ -5,11 +5,11 @@ module RootsFetcher private - def skos_roots(concept_schemes, page, paged, pagesize) + def skos_roots(page, paged, pagesize) classes = [] query_body = <<-eos ?x #{RDF::SKOS[:hasTopConcept].to_ntriples} ?root . - #{concept_schemes_filter(concept_schemes)} + #{concept_schemes_filter} eos root_skos = <<-eos @@ -62,11 +62,9 @@ def count_roots(query_body) count end - def concept_schemes_filter(concept_schemes) - if concept_schemes.nil? || concept_schemes.empty? - main_concept_scheme = get_main_concept_scheme - concept_schemes = main_concept_scheme ? [main_concept_scheme] : [] - end + def concept_schemes_filter + main_concept_scheme = get_main_concept_scheme + concept_schemes = main_concept_scheme ? [main_concept_scheme] : [] concept_schemes = concept_schemes.map { |x| RDF::URI.new(x.to_s).to_ntriples } concept_schemes.empty? ? '' : "FILTER (?x IN (#{concept_schemes.join(',')}))" From d8e46f028af01741d7b9763494fbaad4f571a982 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 21:20:40 +0200 Subject: [PATCH 04/62] add :inScheme and :isInScheme attributes --- lib/ontologies_linked_data/models/class.rb | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index fe92943c2..8f3686988 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -79,11 +79,13 @@ def self.urn_id(acronym,classId) attribute :notes, inverse: { on: :note, attribute: :relatedClass } + attribute :inScheme, enforce: [:list, :uri], namespace: :skos + # Hypermedia settings embed :children, :ancestors, :descendants, :parents serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional # an attribute used in Search (not shown out of context) - serialize_methods :properties, :childrenCount, :hasChildren + serialize_methods :properties, :childrenCount, :hasChildren, :isInScheme serialize_never :submissionAcronym, :submissionId, :submission, :descendants aggregates childrenCount: [:count, :children] links_load submission: [ontology: [:acronym]] @@ -460,7 +462,21 @@ def hasChildren() raise ArgumentError, "HasChildren not loaded for #{self.id.to_ntriples}" end return @intlHasChildren - end + end + + def inScheme?(scheme) + self.inScheme.include?(scheme) + end + + def isInScheme + @isInScheme + end + + def load_is_in_scheme(schemes = []) + included = schemes.select {|s| inScheme?(s)} || [] + @isInScheme = included + end + def load_has_children() if !instance_variable_get("@intlHasChildren").nil? From 057bfe0b2544852ac8c19c6e750c47d30a0a1790 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 21:24:51 +0200 Subject: [PATCH 05/62] bring :InScheme in partially_load_children and traverse_path_to_root --- lib/ontologies_linked_data/models/class.rb | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 8f3686988..ee9164d0e 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -295,11 +295,10 @@ def paths_to_root() end def self.partially_load_children(models, threshold, submission) - ld = [:prefLabel, :definition, :synonym] + ld = [:prefLabel, :definition, :synonym, :inScheme] ld << :subClassOf if submission.hasOntologyLanguage.obo? single_load = [] - query = self.in(submission) - .models(models) + query = self.in(submission).models(models) query.aggregate(:count, :children).all models.each do |cls| @@ -308,9 +307,6 @@ def self.partially_load_children(models, threshold, submission) end if cls.aggregates.first.value > threshold #too many load a page - self.in(submission) - .models(single_load) - .include(children: [:prefLabel]).all page_children = LinkedData::Models::Class .where(parents: cls) .include(ld) @@ -323,9 +319,8 @@ def self.partially_load_children(models, threshold, submission) end end - if single_load.length > 0 - self.in(submission).models(single_load).include({children: [:prefLabel]}).all - end + + self.in(submission).models(single_load).include({children: ld}).all if single_load.length > 0 end def tree(concept_schemes: []) @@ -581,9 +576,9 @@ def append_if_not_there_already(path, r) def traverse_path_to_root(parents, paths, path_i, tree=false) return if (tree and parents.length == 0) + recursions = [path_i] recurse_on_path = [false] - if parents.length > 1 and not tree (parents.length-1).times do paths << paths[path_i].clone @@ -608,7 +603,7 @@ def traverse_path_to_root(parents, paths, path_i, tree=false) next if p.id.to_s["umls/OrphanClass"] if p.bring?(:parents) - p.bring(parents: [:prefLabel, :synonym, :definition, parents: [:prefLabel, :synonym, :definition]]) + p.bring(parents: [:prefLabel, :synonym, :definition, :inScheme, parents: [:prefLabel, :synonym, :definition, :inScheme]]) end if !p.loaded_attributes.include?(:parents) From 38277e798d309cf38106b808237662c6fbcb432f Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 21:35:31 +0200 Subject: [PATCH 06/62] load isInScheme for the submission roots --- lib/ontologies_linked_data/models/ontology_submission.rb | 5 +++-- .../models/skos/skos_submission_roots.rb | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index ac77b71c3..962af556c 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -2224,6 +2224,7 @@ def roots(extra_include = nil, page = nil, pagesize = nil, concept_schemes: []) if skos classes = skos_roots(page, paged, pagesize) + extra_include += [:inScheme, :isInScheme] else self.ontology.bring(:flat) data_query = nil @@ -2288,9 +2289,9 @@ def roots(extra_include = nil, page = nil, pagesize = nil, concept_schemes: []) classes.delete_if { |c| obs = !c.obsolete.nil? && c.obsolete == true c.load_has_children if extra_include&.include?(:hasChildren) && !obs + c.load_is_in_scheme(current_schemes(concept_schemes)) if extra_include&.include?(:isInScheme) && !obs && skos obs } - classes end @@ -2305,7 +2306,7 @@ def ontology_uri end def roots_sorted(extra_include = nil, concept_schemes: []) - classes = roots(extra_include, concept_scheme) + classes = roots(extra_include, concept_schemes: concept_schemes) LinkedData::Models::Class.sort_classes(classes) end diff --git a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb index 129fe4006..dfc6ebb05 100644 --- a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb +++ b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb @@ -70,6 +70,14 @@ def concept_schemes_filter concept_schemes.empty? ? '' : "FILTER (?x IN (#{concept_schemes.join(',')}))" end + def current_schemes(concept_schemes) + if concept_schemes.nil? || concept_schemes.empty? + main_concept_scheme = get_main_concept_scheme + concept_schemes = main_concept_scheme ? [main_concept_scheme] : [] + end + concept_schemes + end + end end end From 138010f65441df7daa09e668ba144d23d33096bc Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 22:31:56 +0200 Subject: [PATCH 07/62] move tree methods to the Concept::Tree module --- lib/ontologies_linked_data.rb | 7 + .../concerns/concepts/concept_tree.rb | 135 ++++++++++++++++++ lib/ontologies_linked_data/models/class.rb | 108 +------------- 3 files changed, 143 insertions(+), 107 deletions(-) create mode 100644 lib/ontologies_linked_data/concerns/concepts/concept_tree.rb diff --git a/lib/ontologies_linked_data.rb b/lib/ontologies_linked_data.rb index 75b7c8bc1..58352a0be 100644 --- a/lib/ontologies_linked_data.rb +++ b/lib/ontologies_linked_data.rb @@ -7,6 +7,13 @@ # Setup Goo (repo connection and namespaces) require "ontologies_linked_data/config/config" +project_root = File.dirname(File.absolute_path(__FILE__)) + +models = Dir.glob("#{project_root}/ontologies_linked_data/concerns/**/*.rb").sort +models.each do |m| + require m +end + # Include other dependent code require "ontologies_linked_data/security/authorization" require "ontologies_linked_data/security/access_control" diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb new file mode 100644 index 000000000..5e044a0f9 --- /dev/null +++ b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb @@ -0,0 +1,135 @@ +module LinkedData + module Concerns + module Concept + module Tree + def tree(concept_schemes: []) + bring(parents: [:prefLabel]) if bring?(:parents) + return self if parents.nil? || parents.empty? + + roots = self.submission.roots(extra_include=[:hasChildren], concept_schemes:concept_schemes) + path = path_to_root(roots) + threshold = 99 + + return self if path.nil? + + + attrs_to_load = %i[prefLabel synonym obsolete inScheme] + attrs_to_load << :subClassOf if submission.hasOntologyLanguage.obo? + self.class.in(submission) + .models(path) + .include(attrs_to_load).all + load_children(path, threshold: threshold) + + path.reverse! + path.last.instance_variable_set("@children", []) + + childrens_hash = {} + path.each do |m| + next if m.id.to_s["#Thing"] + m.children.each do |c| + childrens_hash[c.id.to_s] = c + c.load_is_in_scheme(concept_schemes) + end + m.load_is_in_scheme(concept_schemes) + end + + load_children(childrens_hash.values, threshold: threshold) + + build_tree(path) + end + + def tree_sorted(concept_schemes: []) + tr = tree(concept_schemes: concept_schemes) + self.class.sort_tree_children(tr) + tr + end + + def paths_to_root(tree: false) + bring(parents: [:prefLabel, :synonym, :definition]) if bring?(:parents) + return [] if parents.nil? || parents.empty? + + paths = [[self]] + traverse_path_to_root(self.parents.dup, paths, 0, tree) + paths.each do |p| + p.reverse! + end + paths + end + + def path_to_root(roots) + paths = [[self]] + traverse_path_to_root(self.parents.dup, paths, 0, true) + paths = paths_to_root(tree: true) + + #select one path that gets to root + path = nil + paths.each do |p| + p.reverse! + unless (p.map { |x| x.id.to_s } & roots.map { |x| x.id.to_s }).empty? + path = p + break + end + end + + if path.nil? + # do one more check for root classes that don't get returned by the submission.roots call + paths.each do |p| + root_node = p.last + root_parents = root_node.parents + + if root_parents.empty? + path = p + break + end + end + end + + path + end + + private + + def load_children(concepts, threshold: 99) + LinkedData::Models::Class + .partially_load_children(concepts, threshold, submission) + end + + def build_tree(path) + root_node = path.first + tree_node = path.first + path.delete_at(0) + while tree_node && + !tree_node.id.to_s["#Thing"] && + !tree_node.children.empty? && (!path.empty?) do + next_tree_node = nil + tree_node.load_has_children + tree_node.children.each_index do |i| + if tree_node.children[i].id.to_s == path.first.id.to_s + next_tree_node = path.first + children = tree_node.children.dup + children[i] = path.first + tree_node.instance_variable_set("@children", children) + children.each do |c| + c.load_has_children + end + else + tree_node.children[i].instance_variable_set("@children", []) + end + end + + if !path.empty? && next_tree_node.nil? + tree_node.children << path.shift + end + tree_node = next_tree_node + path.delete_at(0) + end + + root_node + end + + end + end + + end +end + diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index ee9164d0e..ad2e9f005 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -12,6 +12,7 @@ class ClassAttributeNotLoaded < StandardError class Class < LinkedData::Models::Base include ResourceIndex::Class + include LinkedData::Concerns::Concept::Tree model :class, name_with: :id, collection: :submission, namespace: :owl, :schemaless => :true, @@ -283,17 +284,6 @@ def properties properties end - def paths_to_root() - self.bring(parents: [:prefLabel, :synonym, :definition]) if self.bring?(:parents) - return [] if self.parents.nil? or self.parents.length == 0 - paths = [[self]] - traverse_path_to_root(self.parents.dup, paths, 0) - paths.each do |p| - p.reverse! - end - paths - end - def self.partially_load_children(models, threshold, submission) ld = [:prefLabel, :definition, :synonym, :inScheme] ld << :subClassOf if submission.hasOntologyLanguage.obo? @@ -323,103 +313,7 @@ def self.partially_load_children(models, threshold, submission) self.in(submission).models(single_load).include({children: ld}).all if single_load.length > 0 end - def tree(concept_schemes: []) - self.bring(parents: [:prefLabel]) if self.bring?(:parents) - return self if self.parents.nil? or self.parents.length == 0 - paths = [[self]] - traverse_path_to_root(self.parents.dup, paths, 0, tree=true) - roots = self.submission.roots(extra_include=[:hasChildren], concept_schemes:concept_schemes) - threshhold = 99 - - #select one path that gets to root - path = nil - paths.each do |p| - if (p.map { |x| x.id.to_s } & roots.map { |x| x.id.to_s }).length > 0 - path = p - break - end - end - - if path.nil? - # do one more check for root classes that don't get returned by the submission.roots call - paths.each do |p| - root_node = p.last - root_parents = root_node.parents - - if root_parents.empty? - path = p - break - end - end - return self if path.nil? - end - items_hash = {} - path.each do |t| - items_hash[t.id.to_s] = t - end - - attrs_to_load = [:prefLabel,:synonym,:obsolete] - attrs_to_load << :subClassOf if submission.hasOntologyLanguage.obo? - self.class.in(submission) - .models(items_hash.values) - .include(attrs_to_load).all - - LinkedData::Models::Class - .partially_load_children(items_hash.values,threshhold,self.submission) - - path.reverse! - path.last.instance_variable_set("@children",[]) - childrens_hash = {} - path.each do |m| - next if m.id.to_s["#Thing"] - m.children.each do |c| - childrens_hash[c.id.to_s] = c - end - end - - LinkedData::Models::Class.partially_load_children(childrens_hash.values,threshhold, self.submission) - - #build the tree - root_node = path.first - tree_node = path.first - path.delete_at(0) - while tree_node && - !tree_node.id.to_s["#Thing"] && - tree_node.children.length > 0 and path.length > 0 do - - next_tree_node = nil - tree_node.load_has_children - tree_node.children.each_index do |i| - if tree_node.children[i].id.to_s == path.first.id.to_s - next_tree_node = path.first - children = tree_node.children.dup - children[i] = path.first - tree_node.instance_variable_set("@children",children) - children.each do |c| - c.load_has_children - end - else - tree_node.children[i].instance_variable_set("@children",[]) - end - end - - if path.length > 0 && next_tree_node.nil? - tree_node.children << path.shift - end - - tree_node = next_tree_node - path.delete_at(0) - end - - root_node - end - - def tree_sorted() - tr = tree - self.class.sort_tree_children(tr) - tr - end def retrieve_ancestors() ids = retrieve_hierarchy_ids(:ancestors) From 52432b0a3f0c5b9742add854784e291532456bd6 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sun, 16 Oct 2022 22:33:15 +0200 Subject: [PATCH 08/62] more class sort methods to the Concept::Sort module --- .../concerns/concepts/concept_sort.rb | 55 +++++++++++++++++++ lib/ontologies_linked_data/models/class.rb | 41 +------------- 2 files changed, 56 insertions(+), 40 deletions(-) create mode 100644 lib/ontologies_linked_data/concerns/concepts/concept_sort.rb diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_sort.rb b/lib/ontologies_linked_data/concerns/concepts/concept_sort.rb new file mode 100644 index 000000000..1c42dcfa2 --- /dev/null +++ b/lib/ontologies_linked_data/concerns/concepts/concept_sort.rb @@ -0,0 +1,55 @@ +module LinkedData + module Concerns + module Concept + module Sort + module ClassMethods + def compare_classes(class_a, class_b) + label_a = "" + label_b = "" + class_a.bring(:prefLabel) if class_a.bring?(:prefLabel) + class_b.bring(:prefLabel) if class_b.bring?(:prefLabel) + + begin + label_a = class_a.prefLabel unless (class_a.prefLabel.nil? || class_a.prefLabel.empty?) + rescue Goo::Base::AttributeNotLoaded + label_a = "" + end + + begin + label_b = class_b.prefLabel unless (class_b.prefLabel.nil? || class_b.prefLabel.empty?) + rescue Goo::Base::AttributeNotLoaded + label_b = "" + end + + label_a = class_a.id if label_a.empty? + label_b = class_b.id if label_b.empty? + + [label_a.downcase] <=> [label_b.downcase] + end + + def sort_classes(classes) + classes.sort { |class_a, class_b| compare_classes(class_a, class_b) } + end + + def sort_tree_children(root_node) + sort_classes!(root_node.children) + root_node.children.each { |ch| sort_tree_children(ch) } + end + + private + + + + def sort_classes!(classes) + classes.sort! { |class_a, class_b| LinkedData::Models::Class.compare_classes(class_a, class_b) } + classes + end + end + + def self.included(base) + base.extend(ClassMethods) + end + end + end + end +end diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index ad2e9f005..d57ec812c 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -3,7 +3,6 @@ require "multi_json" require "ontologies_linked_data/models/notes/note" require "ontologies_linked_data/mappings/mappings" -require "ncbo_resource_index" module LinkedData module Models @@ -11,7 +10,7 @@ class ClassAttributeNotLoaded < StandardError end class Class < LinkedData::Models::Base - include ResourceIndex::Class + include LinkedData::Concerns::Concept::Sort include LinkedData::Concerns::Concept::Tree model :class, name_with: :id, collection: :submission, @@ -514,44 +513,6 @@ def traverse_path_to_root(parents, paths, path_i, tree=false) end end - def self.sort_tree_children(root_node) - self.sort_classes!(root_node.children) - root_node.children.each { |ch| self.sort_tree_children(ch) } - end - - def self.sort_classes(classes) - classes.sort { |class_a, class_b| self.compare_classes(class_a, class_b) } - end - - def self.sort_classes!(classes) - classes.sort! { |class_a, class_b| self.compare_classes(class_a, class_b) } - classes - end - - def self.compare_classes(class_a, class_b) - label_a = "" - label_b = "" - class_a.bring(:prefLabel) if class_a.bring?(:prefLabel) - class_b.bring(:prefLabel) if class_b.bring?(:prefLabel) - - begin - label_a = class_a.prefLabel unless (class_a.prefLabel.nil? || class_a.prefLabel.empty?) - rescue Goo::Base::AttributeNotLoaded - label_a = "" - end - - begin - label_b = class_b.prefLabel unless (class_b.prefLabel.nil? || class_b.prefLabel.empty?) - rescue Goo::Base::AttributeNotLoaded - label_b = "" - end - - label_a = class_a.id if label_a.empty? - label_b = class_b.id if label_b.empty? - - [label_a.downcase] <=> [label_b.downcase] - end - end end end From 65c48e5515acb84eb47c0508d37e6d91138e8a81 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 17 Oct 2022 00:41:44 +0200 Subject: [PATCH 09/62] fix the skos concepts tests --- lib/ontologies_linked_data/models/ontology_submission.rb | 2 +- test/models/test_skos_submission.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index 962af556c..d3b698b28 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -2206,7 +2206,7 @@ def delete(*args) - def roots(extra_include = nil, page = nil, pagesize = nil, concept_schemes: []) + def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: []) self.bring(:ontology) unless self.loaded_attributes.include?(:ontology) self.bring(:hasOntologyLanguage) unless self.loaded_attributes.include?(:hasOntologyLanguage) paged = false diff --git a/test/models/test_skos_submission.rb b/test/models/test_skos_submission.rb index 332b9d7ac..23a6b0d61 100644 --- a/test/models/test_skos_submission.rb +++ b/test/models/test_skos_submission.rb @@ -55,7 +55,7 @@ def test_roots_of_a_scheme roots = sub.roots(concept_schemes: ['http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view_2']) roots = roots.map { |r| r.id.to_s } unless roots.nil? - assert_equal 2, roots.size + assert_equal 6, roots.size assert_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000311' assert_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000324' end From 3fab08cd18693636d12e46b113e6bee895be7b8b Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 17 Oct 2022 01:53:37 +0200 Subject: [PATCH 10/62] filter roots by concept_schemes --- .../models/ontology_submission.rb | 2 +- .../models/skos/skos_submission_roots.rb | 10 ++++------ test/models/test_skos_submission.rb | 3 +-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index d3b698b28..66d3b4dbb 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -2223,7 +2223,7 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: []) if skos - classes = skos_roots(page, paged, pagesize) + classes = skos_roots(concept_schemes, page, paged, pagesize) extra_include += [:inScheme, :isInScheme] else self.ontology.bring(:flat) diff --git a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb index dfc6ebb05..5f90ae9fd 100644 --- a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb +++ b/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb @@ -5,11 +5,11 @@ module RootsFetcher private - def skos_roots(page, paged, pagesize) + def skos_roots(concept_schemes, page, paged, pagesize) classes = [] query_body = <<-eos ?x #{RDF::SKOS[:hasTopConcept].to_ntriples} ?root . - #{concept_schemes_filter} + #{concept_schemes_filter(concept_schemes)} eos root_skos = <<-eos @@ -62,10 +62,8 @@ def count_roots(query_body) count end - def concept_schemes_filter - main_concept_scheme = get_main_concept_scheme - concept_schemes = main_concept_scheme ? [main_concept_scheme] : [] - + def concept_schemes_filter(concept_schemes) + concept_schemes = current_schemes(concept_schemes) concept_schemes = concept_schemes.map { |x| RDF::URI.new(x.to_s).to_ntriples } concept_schemes.empty? ? '' : "FILTER (?x IN (#{concept_schemes.join(',')}))" end diff --git a/test/models/test_skos_submission.rb b/test/models/test_skos_submission.rb index 23a6b0d61..515268591 100644 --- a/test/models/test_skos_submission.rb +++ b/test/models/test_skos_submission.rb @@ -43,7 +43,6 @@ def test_skos_ontology def test_get_main_concept_scheme sub = before_suite - sub.bring_remaining sub.URI = 'http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view' sub.save @@ -55,7 +54,7 @@ def test_roots_of_a_scheme roots = sub.roots(concept_schemes: ['http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view_2']) roots = roots.map { |r| r.id.to_s } unless roots.nil? - assert_equal 6, roots.size + assert_equal 2, roots.size assert_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000311' assert_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000324' end From 9028d61b11154fe303ae4c4d81a4858d7771a61d Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 17 Oct 2022 04:06:58 +0200 Subject: [PATCH 11/62] update traverse_path_to_root to use custom_roots --- .../concerns/concepts/concept_tree.rb | 4 +++ lib/ontologies_linked_data/models/class.rb | 33 +++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb index 5e044a0f9..da767c6b9 100644 --- a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb +++ b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb @@ -87,6 +87,10 @@ def path_to_root(roots) path end + def tree_root?(concept, roots) + roots&.map{|r| r.id}.include?(concept.id) || concept.id.to_s["#Thing"] + end + private def load_children(concepts, threshold: 99) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index d57ec812c..6bceeaa5b 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -467,8 +467,8 @@ def append_if_not_there_already(path, r) path << r end - def traverse_path_to_root(parents, paths, path_i, tree=false) - return if (tree and parents.length == 0) + def traverse_path_to_root(parents, paths, path_i, tree = false, roots = nil) + return if (tree && parents.length == 0) recursions = [path_i] recurse_on_path = [false] @@ -495,24 +495,29 @@ def traverse_path_to_root(parents, paths, path_i, tree=false) p = path.last next if p.id.to_s["umls/OrphanClass"] - if p.bring?(:parents) - p.bring(parents: [:prefLabel, :synonym, :definition, :inScheme, parents: [:prefLabel, :synonym, :definition, :inScheme]]) - end + if !tree_root?(p, roots) && recurse_on_path[i] + if p.bring?(:parents) + p.bring(parents: [:prefLabel, :synonym, :definition, :inScheme, parents: [:prefLabel, :synonym, :definition, :inScheme]]) + end - if !p.loaded_attributes.include?(:parents) - # fail safely - logger = LinkedData::Parser.logger || Logger.new($stderr) - logger.error("Class #{p.id.to_s} from #{p.submission.id} cannot load parents") - return - end + if !p.loaded_attributes.include?(:parents) + # fail safely + logger = LinkedData::Parser.logger || Logger.new($stderr) + logger.error("Class #{p.id.to_s} from #{p.submission.id} cannot load parents") + return + end - if !p.id.to_s["#Thing"] &&\ - (recurse_on_path[i] && p.parents && p.parents.length > 0) - traverse_path_to_root(p.parents.dup, paths, rec_i, tree=tree) + traverse_path_to_root(p.parents.dup, paths, rec_i, tree=tree, roots=roots) end + + + + end end + + end end end From fa45dba1b5e2e7a679a9d88164292ac8c78b6c3e Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 17 Oct 2022 04:11:03 +0200 Subject: [PATCH 12/62] update tree to use custom roots --- .../concerns/concepts/concept_tree.rb | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb index da767c6b9..5d0517820 100644 --- a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb +++ b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb @@ -2,17 +2,16 @@ module LinkedData module Concerns module Concept module Tree - def tree(concept_schemes: []) + def tree(concept_schemes: [], roots: nil) bring(parents: [:prefLabel]) if bring?(:parents) return self if parents.nil? || parents.empty? - roots = self.submission.roots(extra_include=[:hasChildren], concept_schemes:concept_schemes) + roots = self.submission.roots(extra_include=[:hasChildren], concept_schemes:concept_schemes) if roots.nil? path = path_to_root(roots) threshold = 99 return self if path.nil? - attrs_to_load = %i[prefLabel synonym obsolete inScheme] attrs_to_load << :subClassOf if submission.hasOntologyLanguage.obo? self.class.in(submission) @@ -38,18 +37,18 @@ def tree(concept_schemes: []) build_tree(path) end - def tree_sorted(concept_schemes: []) - tr = tree(concept_schemes: concept_schemes) + def tree_sorted(concept_schemes: [], roots: nil) + tr = tree(concept_schemes: concept_schemes, roots: roots) self.class.sort_tree_children(tr) tr end - def paths_to_root(tree: false) + def paths_to_root(tree: false, roots: nil) bring(parents: [:prefLabel, :synonym, :definition]) if bring?(:parents) return [] if parents.nil? || parents.empty? paths = [[self]] - traverse_path_to_root(self.parents.dup, paths, 0, tree) + traverse_path_to_root(self.parents.dup, paths, 0, tree, roots) unless tree_root?(self, roots) paths.each do |p| p.reverse! end @@ -58,9 +57,7 @@ def paths_to_root(tree: false) def path_to_root(roots) paths = [[self]] - traverse_path_to_root(self.parents.dup, paths, 0, true) - paths = paths_to_root(tree: true) - + paths = paths_to_root(tree: true, roots: roots) #select one path that gets to root path = nil paths.each do |p| From 0b56a04421da63ada97b64225bcc90840b52c19d Mon Sep 17 00:00:00 2001 From: mdorf Date: Mon, 17 Oct 2022 10:13:40 -0700 Subject: [PATCH 13/62] improved exception handling for datatype mismatch errors --- Gemfile.lock | 26 +++++++++++-------- .../models/ontology_submission.rb | 8 +++++- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c9b2be1ce..33bccc3c5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -32,14 +32,15 @@ GEM multi_json (~> 1.3) thread_safe (~> 0.1) tzinfo (~> 0.3.37) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) ansi (1.5.0) ast (2.4.2) bcrypt (3.1.18) builder (3.2.4) coderay (1.1.3) concurrent-ruby (1.1.10) + connection_pool (2.2.5) cube-ruby (0.0.3) daemons (1.4.1) docile (1.4.0) @@ -50,7 +51,7 @@ GEM launchy (~> 2.1) mail (~> 2.7) eventmachine (1.2.7) - faraday (1.10.0) + faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -110,7 +111,7 @@ GEM omni_logger (0.1.4) logger parallel (1.22.1) - parser (3.1.2.0) + parser (3.1.2.1) ast (~> 2.4.1) pony (1.13.1) mail (>= 2.0) @@ -119,7 +120,7 @@ GEM pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (4.0.7) + public_suffix (5.0.0) rack (1.6.13) rack-test (0.8.3) rack (>= 1.0, < 3) @@ -127,7 +128,10 @@ GEM rake (10.5.0) rdf (1.0.8) addressable (>= 2.2) - redis (4.7.1) + redis (5.0.3) + redis-client (>= 0.7.4) + redis-client (0.8.0) + connection_pool regexp_parser (2.5.0) rest-client (2.1.0) http-accept (>= 1.7.0, < 2.0) @@ -137,17 +141,17 @@ GEM rexml (3.2.5) rsolr (1.1.2) builder (>= 2.1.2) - rubocop (1.32.0) + rubocop (1.36.0) json (~> 2.3) parallel (~> 1.10) - parser (>= 3.1.0.0) + parser (>= 3.1.2.1) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.19.1, < 2.0) + rubocop-ast (>= 1.20.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.19.1) + rubocop-ast (1.21.0) parser (>= 3.1.1.0) ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) @@ -213,4 +217,4 @@ DEPENDENCIES thin BUNDLED WITH - 2.3.14 + 2.3.15 diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index bf20fc348..8b48d176d 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -479,7 +479,13 @@ def generate_rdf(logger, file_path, reasoning=true) end logger.flush end - delete_and_append(triples_file_path, logger, mime_type) + + begin + delete_and_append(triples_file_path, logger, mime_type) + rescue => e + logger.error("Error sending data to triple store - #{e.response.code} #{e.class}: #{e.response.body}") if e.response&.body + raise e + end version_info = extract_version() if version_info From 9358ab412a70788c7fcc32cb3aefbffe97018d5a Mon Sep 17 00:00:00 2001 From: mdorf Date: Mon, 17 Oct 2022 15:28:50 -0700 Subject: [PATCH 14/62] fixed a case described in ncbo/bioportal-project#251 --- Gemfile.lock | 14 +++++++------- lib/ontologies_linked_data/mappings/mappings.rb | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 33bccc3c5..5f86d9934 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -40,13 +40,13 @@ GEM builder (3.2.4) coderay (1.1.3) concurrent-ruby (1.1.10) - connection_pool (2.2.5) + connection_pool (2.3.0) cube-ruby (0.0.3) daemons (1.4.1) docile (1.4.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - email_spec (2.2.0) + email_spec (2.2.1) htmlentities (~> 4.3.3) launchy (~> 2.1) mail (~> 2.7) @@ -128,11 +128,11 @@ GEM rake (10.5.0) rdf (1.0.8) addressable (>= 2.2) - redis (5.0.3) - redis-client (>= 0.7.4) - redis-client (0.8.0) + redis (5.0.5) + redis-client (>= 0.9.0) + redis-client (0.10.0) connection_pool - regexp_parser (2.5.0) + regexp_parser (2.6.0) rest-client (2.1.0) http-accept (>= 1.7.0, < 2.0) http-cookie (>= 1.0.2, < 2.0) @@ -177,7 +177,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8.2) - unicode-display_width (2.2.0) + unicode-display_width (2.3.0) uuid (2.3.9) macaddr (~> 1.0) diff --git a/lib/ontologies_linked_data/mappings/mappings.rb b/lib/ontologies_linked_data/mappings/mappings.rb index 33272848d..5da7e261e 100644 --- a/lib/ontologies_linked_data/mappings/mappings.rb +++ b/lib/ontologies_linked_data/mappings/mappings.rb @@ -197,7 +197,7 @@ def self.mappings_ontologies(sub1,sub2,page,size,classId=nil,reload_cache=false) unions = blocks.join("\nUNION\n") mappings_in_ontology = <<-eos -SELECT DISTINCT variables +SELECT DISTINCT query_variables WHERE { unions filter @@ -206,7 +206,7 @@ def self.mappings_ontologies(sub1,sub2,page,size,classId=nil,reload_cache=false) query = mappings_in_ontology.gsub("unions", unions) variables = "?s2 graph ?source ?o" variables = "?s1 " + variables if classId.nil? - query = query.gsub("variables", variables) + query = query.gsub("query_variables", variables) filter = classId.nil? ? "FILTER ((?s1 != ?s2) || (?source = 'SAME_URI'))" : '' if sub2.nil? From 89c4bbe3bbdb337e5b4750f21a43b39d398f77e2 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 18 Oct 2022 16:00:23 +0200 Subject: [PATCH 15/62] rename scheme file from 'sceme' to 'scheme' --- lib/ontologies_linked_data/models/skos/{sheme.rb => scheme.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/ontologies_linked_data/models/skos/{sheme.rb => scheme.rb} (100%) diff --git a/lib/ontologies_linked_data/models/skos/sheme.rb b/lib/ontologies_linked_data/models/skos/scheme.rb similarity index 100% rename from lib/ontologies_linked_data/models/skos/sheme.rb rename to lib/ontologies_linked_data/models/skos/scheme.rb From 48358f7f839d7ac02d0e455b056efb7453019e79 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 18 Oct 2022 15:59:56 +0200 Subject: [PATCH 16/62] move skos roots and schemes to the concerns folder --- .../ontology_submissions}/skos/skos_submission_roots.rb | 0 .../ontology_submissions}/skos/skos_submission_schemes.rb | 0 lib/ontologies_linked_data/models/ontology_submission.rb | 2 -- 3 files changed, 2 deletions(-) rename lib/ontologies_linked_data/{models => concerns/ontology_submissions}/skos/skos_submission_roots.rb (100%) rename lib/ontologies_linked_data/{models => concerns/ontology_submissions}/skos/skos_submission_schemes.rb (100%) diff --git a/lib/ontologies_linked_data/models/skos/skos_submission_roots.rb b/lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_roots.rb similarity index 100% rename from lib/ontologies_linked_data/models/skos/skos_submission_roots.rb rename to lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_roots.rb diff --git a/lib/ontologies_linked_data/models/skos/skos_submission_schemes.rb b/lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_schemes.rb similarity index 100% rename from lib/ontologies_linked_data/models/skos/skos_submission_schemes.rb rename to lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_schemes.rb diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index 66d3b4dbb..ab5f965ba 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -7,8 +7,6 @@ require 'csv' require 'fileutils' -require 'ontologies_linked_data/models/skos/skos_submission_schemes' -require 'ontologies_linked_data/models/skos/skos_submission_roots' module LinkedData module Models From 10d864d49e1897982ff536620e7d6d01d78ade60 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 18 Oct 2022 16:01:07 +0200 Subject: [PATCH 17/62] add skos Collection model --- .../models/skos/collection.rb | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lib/ontologies_linked_data/models/skos/collection.rb diff --git a/lib/ontologies_linked_data/models/skos/collection.rb b/lib/ontologies_linked_data/models/skos/collection.rb new file mode 100644 index 000000000..fa16496a9 --- /dev/null +++ b/lib/ontologies_linked_data/models/skos/collection.rb @@ -0,0 +1,43 @@ +module LinkedData + module Models + module SKOS + class Collection < LinkedData::Models::Base + + model :collection, name_with: :id, collection: :submission, + namespace: :skos, schemaless: :true, rdf_type: ->(*x) { RDF::SKOS[:Collection] } + + attribute :prefLabel, namespace: :skos, enforce: [:existence] + attribute :member, namespace: :skos, enforce: [:list, :class] + attribute :submission, collection: ->(s) { s.resource_id }, namespace: :metadata + + embed :member + serialize_default :prefLabel, :memberCount + serialize_never :submission, :id + serialize_methods :properties, :memberCount + aggregates memberCount: [:count, :member] + + cache_timeout 14400 + + link_to LinkedData::Hypermedia::Link.new('self', + ->(s) { "ontologies/#{s.submission.ontology.acronym}/collections/#{CGI.escape(s.id.to_s)}"}, + self.uri_type), + LinkedData::Hypermedia::Link.new('members', + ->(s) { "ontologies/#{s.submission.ontology.acronym}/collections/#{CGI.escape(s.id.to_s)}/members"}, + Goo.vocabulary(:skos)['Concept']), + LinkedData::Hypermedia::Link.new('ontology', ->(s) { "ontologies/#{s.submission.ontology.acronym}"}, + Goo.vocabulary['Ontology']) + + def properties + self.unmapped + end + + def memberCount + sol = self.class.in(submission).models([self]).aggregate(:count, :member).first + sol.nil? ? 0 : sol.aggregates.first.value + end + + end + end + end + +end From b41d1b2ab65ee92058e37e975f14a9428fd946e5 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 18 Oct 2022 17:01:25 +0200 Subject: [PATCH 18/62] fix tree_root? when roots are nil --- lib/ontologies_linked_data/concerns/concepts/concept_tree.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb index 5d0517820..0e90db9b9 100644 --- a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb +++ b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb @@ -85,7 +85,7 @@ def path_to_root(roots) end def tree_root?(concept, roots) - roots&.map{|r| r.id}.include?(concept.id) || concept.id.to_s["#Thing"] + (roots &&roots.map{|r| r.id}.include?(concept.id)) || concept.id.to_s["#Thing"] end private From 59223437a6b466f0f9bb15b30ab87ae4608f7fa7 Mon Sep 17 00:00:00 2001 From: mdorf Date: Tue, 18 Oct 2022 09:26:59 -0700 Subject: [PATCH 19/62] another fix to ncbo/bioportal-project#251 --- .../models/properties/ontology_property.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/models/properties/ontology_property.rb b/lib/ontologies_linked_data/models/properties/ontology_property.rb index 4f17b2bc0..bf43c2b62 100644 --- a/lib/ontologies_linked_data/models/properties/ontology_property.rb +++ b/lib/ontologies_linked_data/models/properties/ontology_property.rb @@ -127,8 +127,8 @@ def load_has_children def has_children_query(class_id, submission_id) property_tree = RDF::RDFS[:subPropertyOf] - - pattern = "?c <#{property_tree.to_s}> <#{class_id.to_s}> . " + safe_class_id_uri = class_id.to_s.gsub(' ', '%20').gsub('<', '%3C').gsub('>', '%3E') + pattern = "?c <#{property_tree.to_s}> <#{safe_class_id_uri}> . " query = < { From da86700a5c0021e14973be0a3df1d8854e1436e6 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Wed, 19 Oct 2022 14:45:18 +0200 Subject: [PATCH 20/62] change classes attribute :isInScheme to :isInActiveScheme --- lib/ontologies_linked_data/models/class.rb | 6 +++--- lib/ontologies_linked_data/models/ontology_submission.rb | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 6bceeaa5b..1c0d53abd 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -85,7 +85,7 @@ def self.urn_id(acronym,classId) # Hypermedia settings embed :children, :ancestors, :descendants, :parents serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional # an attribute used in Search (not shown out of context) - serialize_methods :properties, :childrenCount, :hasChildren, :isInScheme + serialize_methods :properties, :childrenCount, :hasChildren, :isInActiveScheme serialize_never :submissionAcronym, :submissionId, :submission, :descendants aggregates childrenCount: [:count, :children] links_load submission: [ontology: [:acronym]] @@ -356,8 +356,8 @@ def inScheme?(scheme) self.inScheme.include?(scheme) end - def isInScheme - @isInScheme + def isInActiveScheme + @isInActiveScheme end def load_is_in_scheme(schemes = []) diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index ab5f965ba..32e7469f3 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -2222,7 +2222,7 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: []) if skos classes = skos_roots(concept_schemes, page, paged, pagesize) - extra_include += [:inScheme, :isInScheme] + extra_include += [:inScheme, :isInActiveScheme] else self.ontology.bring(:flat) data_query = nil @@ -2287,7 +2287,7 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: []) classes.delete_if { |c| obs = !c.obsolete.nil? && c.obsolete == true c.load_has_children if extra_include&.include?(:hasChildren) && !obs - c.load_is_in_scheme(current_schemes(concept_schemes)) if extra_include&.include?(:isInScheme) && !obs && skos + c.load_is_in_scheme(current_schemes(concept_schemes)) if extra_include&.include?(:isInActiveScheme) && !obs && skos obs } classes From 9a18790256ef6b5327d4b7b18c69046f282febd9 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Wed, 19 Oct 2022 14:46:03 +0200 Subject: [PATCH 21/62] set isInActiveScheme equal to main_scheme if no concept_scheme is given --- lib/ontologies_linked_data/models/class.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 1c0d53abd..03583171a 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -361,8 +361,9 @@ def isInActiveScheme end def load_is_in_scheme(schemes = []) - included = schemes.select {|s| inScheme?(s)} || [] - @isInScheme = included + included = schemes.select {|s| inScheme?(s)} + included = [self.submission.get_main_concept_scheme] if included.empty? + @isInActiveScheme = included end From 2bc11813f46a2dffa61bb556582ac21f606d232d Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 20 Oct 2022 16:33:20 +0200 Subject: [PATCH 22/62] extract the inScheme methods of classes into a module --- .../concerns/concepts/concept_in_scheme.rb | 26 +++++++++++++++++++ lib/ontologies_linked_data/models/class.rb | 14 +--------- 2 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb b/lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb new file mode 100644 index 000000000..f6a63c19d --- /dev/null +++ b/lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb @@ -0,0 +1,26 @@ +module LinkedData + module Concerns + module Concept + module InScheme + def self.included(base) + base.serialize_methods :isInActiveScheme + end + + def isInActiveScheme + @isInActiveScheme + end + + def inScheme?(scheme) + self.inScheme.include?(scheme) + end + + def load_is_in_scheme(schemes = []) + included = schemes.select { |s| inScheme?(s) } + included = [self.submission.get_main_concept_scheme] if included.empty? + @isInActiveScheme = included + end + + end + end + end +end diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 03583171a..61e0fd98d 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -12,6 +12,7 @@ class ClassAttributeNotLoaded < StandardError class Class < LinkedData::Models::Base include LinkedData::Concerns::Concept::Sort include LinkedData::Concerns::Concept::Tree + include LinkedData::Concerns::Concept::InScheme model :class, name_with: :id, collection: :submission, namespace: :owl, :schemaless => :true, @@ -352,19 +353,6 @@ def hasChildren() return @intlHasChildren end - def inScheme?(scheme) - self.inScheme.include?(scheme) - end - - def isInActiveScheme - @isInActiveScheme - end - - def load_is_in_scheme(schemes = []) - included = schemes.select {|s| inScheme?(s)} - included = [self.submission.get_main_concept_scheme] if included.empty? - @isInActiveScheme = included - end def load_has_children() From 72fa83cdb0d6b9492bdd88c7586bf8aeae3dd390 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 20 Oct 2022 16:35:23 +0200 Subject: [PATCH 23/62] add :inCollection and :isInCollection to classes --- .../concepts/concept_in_collection.rb | 25 +++++++++++++++++++ lib/ontologies_linked_data/models/class.rb | 7 +++--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb b/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb new file mode 100644 index 000000000..9a90435b2 --- /dev/null +++ b/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb @@ -0,0 +1,25 @@ +module LinkedData + module Concerns + module Concept + module InCollection + def self.included(base) + base.serialize_methods :isInActiveCollection + end + + def isInActiveCollection + @isInActiveCollection + end + + def inCollection?(collection) + self.inCollection.include?(collection) + end + + def load_is_in_collection(collections = []) + included = collections.select { |s| incollection?(s) } + @isInActiveCollection = included + end + + end + end + end +end diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 61e0fd98d..c531dbab7 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -13,6 +13,7 @@ class Class < LinkedData::Models::Base include LinkedData::Concerns::Concept::Sort include LinkedData::Concerns::Concept::Tree include LinkedData::Concerns::Concept::InScheme + include LinkedData::Concerns::Concept::InCollection model :class, name_with: :id, collection: :submission, namespace: :owl, :schemaless => :true, @@ -81,17 +82,17 @@ def self.urn_id(acronym,classId) attribute :notes, inverse: { on: :note, attribute: :relatedClass } attribute :inScheme, enforce: [:list, :uri], namespace: :skos - + attribute :inCollection, inverse: { on: :collection , :attribute => :member } # Hypermedia settings embed :children, :ancestors, :descendants, :parents serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional # an attribute used in Search (not shown out of context) - serialize_methods :properties, :childrenCount, :hasChildren, :isInActiveScheme + serialize_methods :properties, :childrenCount, :hasChildren serialize_never :submissionAcronym, :submissionId, :submission, :descendants aggregates childrenCount: [:count, :children] links_load submission: [ontology: [:acronym]] do_not_load :descendants, :ancestors - prevent_serialize_when_nested :properties, :parents, :children, :ancestors, :descendants + prevent_serialize_when_nested :properties, :parents, :children, :ancestors, :descendants, :inCollection link_to LinkedData::Hypermedia::Link.new("self", lambda {|s| "ontologies/#{s.submission.ontology.acronym}/classes/#{CGI.escape(s.id.to_s)}"}, self.uri_type), LinkedData::Hypermedia::Link.new("ontology", lambda {|s| "ontologies/#{s.submission.ontology.acronym}"}, Goo.vocabulary["Ontology"]), LinkedData::Hypermedia::Link.new("children", lambda {|s| "ontologies/#{s.submission.ontology.acronym}/classes/#{CGI.escape(s.id.to_s)}/children"}, self.uri_type), From 1e62ac3a36facf5d03e237e0eb9367031f72da67 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 20 Oct 2022 16:46:09 +0200 Subject: [PATCH 24/62] filter roots and children by collections --- lib/ontologies_linked_data/models/class.rb | 13 ++++++++++++- .../models/ontology_submission.rb | 14 ++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index c531dbab7..af818c53d 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -286,8 +286,10 @@ def properties end def self.partially_load_children(models, threshold, submission) - ld = [:prefLabel, :definition, :synonym, :inScheme] + ld = [:prefLabel, :definition, :synonym] ld << :subClassOf if submission.hasOntologyLanguage.obo? + ld += LinkedData::Models::Class.concept_is_in_attributes if submission.skos? + single_load = [] query = self.in(submission).models(models) query.aggregate(:count, :children).all @@ -314,6 +316,15 @@ def self.partially_load_children(models, threshold, submission) self.in(submission).models(single_load).include({children: ld}).all if single_load.length > 0 end + def load_computed_attributes(to_load:, options:) + self.load_has_children if to_load.include?(:hasChildren) + self.load_is_in_scheme(options[:schemes]) if to_load.include?(:isInActiveScheme) + self.load_is_in_collection(options[:collections]) if to_load.include?(:isInActiveCollection) + end + + def self.concept_is_in_attributes + [:inScheme, :isInActiveScheme, :inCollection, :isInActiveCollection] + end def retrieve_ancestors() diff --git a/lib/ontologies_linked_data/models/ontology_submission.rb b/lib/ontologies_linked_data/models/ontology_submission.rb index 32e7469f3..8db7c3118 100644 --- a/lib/ontologies_linked_data/models/ontology_submission.rb +++ b/lib/ontologies_linked_data/models/ontology_submission.rb @@ -7,7 +7,6 @@ require 'csv' require 'fileutils' - module LinkedData module Models @@ -2202,9 +2201,7 @@ def delete(*args) FileUtils.remove_dir(self.data_folder) if Dir.exist?(self.data_folder) end - - - def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: []) + def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: [], concept_collections: []) self.bring(:ontology) unless self.loaded_attributes.include?(:ontology) self.bring(:hasOntologyLanguage) unless self.loaded_attributes.include?(:hasOntologyLanguage) paged = false @@ -2219,10 +2216,9 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: []) skos = self.skos? classes = [] - if skos classes = skos_roots(concept_schemes, page, paged, pagesize) - extra_include += [:inScheme, :isInActiveScheme] + extra_include += LinkedData::Models::Class.concept_is_in_attributes else self.ontology.bring(:flat) data_query = nil @@ -2286,8 +2282,10 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: []) classes.delete_if { |c| obs = !c.obsolete.nil? && c.obsolete == true - c.load_has_children if extra_include&.include?(:hasChildren) && !obs - c.load_is_in_scheme(current_schemes(concept_schemes)) if extra_include&.include?(:isInActiveScheme) && !obs && skos + if !obs + c.load_computed_attributes(to_load: extra_include, + options: { schemes: current_schemes(concept_schemes), collections: concept_collections }) + end obs } classes From 13b381178e41b5d90c121b2cad510626d3cce057 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 20 Oct 2022 16:46:54 +0200 Subject: [PATCH 25/62] update concepts tree to be filtered by collections --- Gemfile.lock | 54 ++++++++++--------- .../concerns/concepts/concept_tree.rb | 19 ++++--- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f53ec0322..29dc8b357 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -23,7 +23,7 @@ GIT GIT remote: https://github.com/ontoportal-lirmm/goo.git - revision: 60c686f9408fddc86e930fa5afcb1774f8dc693d + revision: 835aefa458186485eef60d3845315c478a95ff23 branch: development specs: goo (0.0.2) @@ -49,10 +49,11 @@ GEM addressable (2.3.5) ansi (1.5.0) ast (2.4.2) - bcrypt (3.1.17) + bcrypt (3.1.18) builder (3.2.4) coderay (1.1.3) - concurrent-ruby (1.1.9) + concurrent-ruby (1.1.10) + connection_pool (2.3.0) cube-ruby (0.0.3) daemons (1.4.1) docile (1.4.0) @@ -66,14 +67,14 @@ GEM elasticsearch-transport (2.0.0) faraday multi_json - email_spec (2.2.0) + email_spec (2.2.1) htmlentities (~> 4.3.3) launchy (~> 2.1) mail (~> 2.7) ethon (0.15.0) ffi (>= 1.15.0) eventmachine (1.2.7) - faraday (1.10.0) + faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -89,8 +90,8 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.0.3) - multipart-post (>= 1.2, < 3) + faraday-multipart (1.0.4) + multipart-post (~> 2) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) @@ -100,11 +101,12 @@ GEM hashie (5.0.0) htmlentities (4.3.4) http-accept (1.7.0) - http-cookie (1.0.4) + http-cookie (1.0.5) domain_name (~> 0.5) i18n (0.9.5) concurrent-ruby (~> 1.0) - json_pure (2.6.1) + json (2.6.2) + json_pure (2.6.2) launchy (2.4.3) addressable (~> 2.3) libxml-ruby (2.9.0) @@ -125,15 +127,15 @@ GEM minitest (>= 2.12, < 5.0) powerbar multi_json (1.15.0) - multipart-post (2.1.1) + multipart-post (2.2.3) mysql2 (0.5.2) net-http-persistent (2.9.4) netrc (0.11.0) oj (2.18.5) omni_logger (0.1.4) logger - parallel (1.22.0) - parser (3.1.1.0) + parallel (1.22.1) + parser (3.1.2.1) ast (~> 2.4.1) pony (1.13.1) mail (>= 2.0) @@ -149,9 +151,12 @@ GEM rake (10.5.0) rdf (1.0.8) addressable (>= 2.2) - redis (4.6.0) + redis (5.0.5) + redis-client (>= 0.9.0) + redis-client (0.10.0) + connection_pool ref (2.0.0) - regexp_parser (2.2.1) + regexp_parser (2.6.0) rest-client (2.1.0) http-accept (>= 1.7.0, < 2.0) http-cookie (>= 1.0.2, < 2.0) @@ -160,22 +165,23 @@ GEM rexml (3.2.5) rsolr (1.1.2) builder (>= 2.1.2) - rubocop (1.26.0) + rubocop (1.37.0) + json (~> 2.3) parallel (~> 1.10) - parser (>= 3.1.0.0) + parser (>= 3.1.2.1) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) - rexml - rubocop-ast (>= 1.16.0, < 2.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.22.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.16.0) + rubocop-ast (1.22.0) parser (>= 3.1.1.0) ruby-progressbar (1.11.0) ruby-xxHash (0.4.0.2) ruby2_keywords (0.0.5) rubyzip (1.3.0) - sequel (5.54.0) + sequel (5.61.0) simplecov (0.21.2) docile (~> 1.1) simplecov-html (~> 0.11) @@ -192,11 +198,11 @@ GEM thread_safe (0.3.6) typhoeus (1.4.0) ethon (>= 0.9.0) - tzinfo (0.3.60) + tzinfo (0.3.61) unf (0.1.4) unf_ext - unf_ext (0.0.8.1) - unicode-display_width (2.1.0) + unf_ext (0.0.8.2) + unicode-display_width (2.3.0) uuid (2.3.9) macaddr (~> 1.0) @@ -234,4 +240,4 @@ DEPENDENCIES thin BUNDLED WITH - 2.3.5 + 2.3.15 diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb index 0e90db9b9..def296828 100644 --- a/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb +++ b/lib/ontologies_linked_data/concerns/concepts/concept_tree.rb @@ -2,18 +2,19 @@ module LinkedData module Concerns module Concept module Tree - def tree(concept_schemes: [], roots: nil) + def tree(concept_schemes: [], concept_collections: [], roots: nil) bring(parents: [:prefLabel]) if bring?(:parents) return self if parents.nil? || parents.empty? - - roots = self.submission.roots(extra_include=[:hasChildren], concept_schemes:concept_schemes) if roots.nil? + extra_include = [:hasChildren, :isInActiveScheme, :isInActiveCollection] + roots = self.submission.roots( extra_include, concept_schemes:concept_schemes) if roots.nil? path = path_to_root(roots) threshold = 99 return self if path.nil? - attrs_to_load = %i[prefLabel synonym obsolete inScheme] + attrs_to_load = %i[prefLabel synonym obsolete] attrs_to_load << :subClassOf if submission.hasOntologyLanguage.obo? + attrs_to_load += self.class.concept_is_in_attributes if submission.skos? self.class.in(submission) .models(path) .include(attrs_to_load).all @@ -27,9 +28,11 @@ def tree(concept_schemes: [], roots: nil) next if m.id.to_s["#Thing"] m.children.each do |c| childrens_hash[c.id.to_s] = c - c.load_is_in_scheme(concept_schemes) + c.load_computed_attributes(to_load:extra_include , + options: {schemes: concept_schemes, collections: concept_collections}) end - m.load_is_in_scheme(concept_schemes) + m.load_computed_attributes(to_load:extra_include , + options: {schemes: concept_schemes, collections: concept_collections}) end load_children(childrens_hash.values, threshold: threshold) @@ -37,8 +40,8 @@ def tree(concept_schemes: [], roots: nil) build_tree(path) end - def tree_sorted(concept_schemes: [], roots: nil) - tr = tree(concept_schemes: concept_schemes, roots: roots) + def tree_sorted(concept_schemes: [], concept_collections: [], roots: nil) + tr = tree(concept_schemes: concept_schemes, concept_collections: concept_collections, roots: roots) self.class.sort_tree_children(tr) tr end From 296be06ac8fd6dac3d3d8295dc8f8e05c4d18739 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 28 Oct 2022 09:32:55 +0200 Subject: [PATCH 26/62] fix load_is_in_scheme if schemes equal nil --- .../concerns/concepts/concept_in_scheme.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb b/lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb index f6a63c19d..ba3592d2c 100644 --- a/lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb +++ b/lib/ontologies_linked_data/concerns/concepts/concept_in_scheme.rb @@ -16,7 +16,7 @@ def inScheme?(scheme) def load_is_in_scheme(schemes = []) included = schemes.select { |s| inScheme?(s) } - included = [self.submission.get_main_concept_scheme] if included.empty? + included = [self.submission.get_main_concept_scheme] if included.empty? && schemes&.empty? @isInActiveScheme = included end From 734a95626268089c71477e7f187cfbb2e7054cf2 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 28 Oct 2022 09:34:05 +0200 Subject: [PATCH 27/62] add skosxl:Label model --- .../models/skos/skosxl.rb | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lib/ontologies_linked_data/models/skos/skosxl.rb diff --git a/lib/ontologies_linked_data/models/skos/skosxl.rb b/lib/ontologies_linked_data/models/skos/skosxl.rb new file mode 100644 index 000000000..7357c9b30 --- /dev/null +++ b/lib/ontologies_linked_data/models/skos/skosxl.rb @@ -0,0 +1,25 @@ +module LinkedData + module Models + module SKOS + class Label < LinkedData::Models::Base + + model :label, name_with: :id, collection: :submission, + namespace: :skos, rdf_type: ->(*x) { RDF::URI.new('http://www.w3.org/2008/05/skos-xl#Label') } + + attribute :literalForm, namespace: :skosxl, enforce: [:existence] + attribute :submission, collection: ->(s) { s.resource_id }, namespace: :metadata + + serialize_never :submission, :id + serialize_methods :properties + + cache_timeout 14400 + + def properties + self.unmapped + end + + end + end + end + +end From aa21248848697e0de94a49242fe20633c74a32cd Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 28 Oct 2022 09:34:36 +0200 Subject: [PATCH 28/62] add sksoxl namespace to configuration --- lib/ontologies_linked_data/config/config.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/ontologies_linked_data/config/config.rb b/lib/ontologies_linked_data/config/config.rb index cda30a977..77edc328b 100644 --- a/lib/ontologies_linked_data/config/config.rb +++ b/lib/ontologies_linked_data/config/config.rb @@ -194,6 +194,7 @@ def goo_namespaces conf.add_namespace(:cclicense, RDF::Vocabulary.new("http://creativecommons.org/licenses/")) conf.add_namespace(:nkos, RDF::Vocabulary.new("http://w3id.org/nkos#")) + conf.add_namespace(:skosxl, RDF::Vocabulary.new("http://www.w3.org/2008/05/skos-xl#")) conf.id_prefix = DEFAULT_PREFIX From 8fd880451f8ac87285e06a1c727c9b8cb06a7192 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 28 Oct 2022 09:39:12 +0200 Subject: [PATCH 29/62] add skosxl properties to class model --- lib/ontologies_linked_data/models/class.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index af818c53d..ba6514879 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -45,6 +45,9 @@ def self.urn_id(acronym,classId) attribute :label, namespace: :rdfs, enforce: [:list] attribute :prefLabel, namespace: :skos, enforce: [:existence], alias: true + attribute :prefLabelXl, property: :prefLabel, namespace: :skosxl, enforce: [:label, :list], alias: true + attribute :altLabelXl, property: :altLabel, namespace: :skosxl, enforce: [:label, :list], alias: true + attribute :hiddenLabelXl, property: :hiddenLabel, namespace: :skosxl, enforce: [:label, :list], alias: true attribute :synonym, namespace: :skos, enforce: [:list], property: :altLabel, alias: true attribute :definition, namespace: :skos, enforce: [:list], alias: true attribute :obsolete, namespace: :owl, property: :deprecated, alias: true @@ -85,7 +88,7 @@ def self.urn_id(acronym,classId) attribute :inCollection, inverse: { on: :collection , :attribute => :member } # Hypermedia settings - embed :children, :ancestors, :descendants, :parents + embed :children, :ancestors, :descendants, :parents, :prefLabelXl, :altLabelXl, :hiddenLabelXl serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional # an attribute used in Search (not shown out of context) serialize_methods :properties, :childrenCount, :hasChildren serialize_never :submissionAcronym, :submissionId, :submission, :descendants From 4b0a6a489dbab253db7a9439f7f708eae1b4f660 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sat, 29 Oct 2022 16:57:43 +0200 Subject: [PATCH 30/62] add get roots by topConcept is no hasTopConcept found --- .../skos/skos_submission_roots.rb | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_roots.rb b/lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_roots.rb index 5f90ae9fd..4a88c12a0 100644 --- a/lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_roots.rb +++ b/lib/ontologies_linked_data/concerns/ontology_submissions/skos/skos_submission_roots.rb @@ -3,26 +3,32 @@ module Models module SKOS module RootsFetcher - private - def skos_roots(concept_schemes, page, paged, pagesize) classes = [] - query_body = <<-eos - ?x #{RDF::SKOS[:hasTopConcept].to_ntriples} ?root . - #{concept_schemes_filter(concept_schemes)} - eos + class_ids, count = roots_by_has_top_concept(concept_schemes, page, paged, pagesize) + + class_ids, count = roots_by_top_concept_of(concept_schemes, page, paged, pagesize) if class_ids.empty? + + class_ids.each do |id| + classes << LinkedData::Models::Class.find(id).in(self).disable_rules.first + end + + classes = Goo::Base::Page.new(page, pagesize, count, classes) if paged + classes + end + + private + def roots_by_query(query_body, page, paged, pagesize) root_skos = <<-eos SELECT DISTINCT ?root WHERE { GRAPH #{self.id.to_ntriples} { - #{query_body} + #{query_body} }} eos count = 0 - if paged - count, root_skos = add_pagination(query_body, page, pagesize, root_skos) - end + count, root_skos = add_pagination(query_body, page, pagesize, root_skos) if paged #needs to get cached class_ids = [] @@ -31,12 +37,23 @@ def skos_roots(concept_schemes, page, paged, pagesize) class_ids << s[:root] end - class_ids.each do |id| - classes << LinkedData::Models::Class.find(id).in(self).disable_rules.first - end + [class_ids, count] + end - classes = Goo::Base::Page.new(page, pagesize, count, classes) if paged - classes + def roots_by_has_top_concept(concept_schemes, page, paged, pagesize) + query_body = <<-eos + ?x #{RDF::SKOS[:hasTopConcept].to_ntriples} ?root . + #{concept_schemes_filter(concept_schemes)} + eos + roots_by_query query_body, page, paged, pagesize + end + + def roots_by_top_concept_of(concept_schemes, page, paged, pagesize) + query_body = <<-eos + ?root #{RDF::SKOS[:topConceptOf].to_ntriples} ?x. + #{concept_schemes_filter(concept_schemes)} + eos + roots_by_query query_body, page, paged, pagesize end def add_pagination(query_body, page, pagesize, root_skos) From 8859e26e91a6087e3ccc6b50255e74a729b1e03f Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 3 Nov 2022 17:51:18 +0100 Subject: [PATCH 31/62] add dcterms namespace --- lib/ontologies_linked_data/config/config.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/ontologies_linked_data/config/config.rb b/lib/ontologies_linked_data/config/config.rb index a01a9faa7..d164d6fbc 100644 --- a/lib/ontologies_linked_data/config/config.rb +++ b/lib/ontologies_linked_data/config/config.rb @@ -166,9 +166,7 @@ def goo_namespaces conf.add_namespace(:oboinowl_gen, RDF::Vocabulary.new("http://www.geneontology.org/formats/oboInOwl#")) conf.add_namespace(:obo_purl, RDF::Vocabulary.new("http://purl.obolibrary.org/obo/")) - conf.add_namespace(:umls, - RDF::Vocabulary.new("http://bioportal.bioontology.org/ontologies/umls/")) - conf.id_prefix = "http://data.bioontology.org/" + conf.add_namespace(:dcterms, RDF::Vocabulary.new("http://purl.org/dc/terms/")) conf.pluralize_models(true) end end From f058cb22204f58d12ecb4e8fb6e3bd456f606adb Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 3 Nov 2022 17:51:56 +0100 Subject: [PATCH 32/62] add the attributes dcterms:created and dcterms:modified to classes model --- lib/ontologies_linked_data/models/class.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 20d74a56f..76cc22dd9 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -77,10 +77,11 @@ def self.urn_id(acronym,classId) attribute :notes, inverse: { on: :note, attribute: :relatedClass } + attribute :created, namespace: :dcterms + attribute :modified, namespace: :dcterms # Hypermedia settings - embed :children, :ancestors, :descendants, :parents - serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional # an attribute used in Search (not shown out of context) + serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional, :created, :modified # an attribute used in Search (not shown out of context) serialize_methods :properties, :childrenCount, :hasChildren serialize_never :submissionAcronym, :submissionId, :submission, :descendants aggregates childrenCount: [:count, :children] From 2a4a3cab1d47b214afcebcf4cf70efaa6cb26579 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 3 Nov 2022 17:51:18 +0100 Subject: [PATCH 33/62] add dcterms namespace --- lib/ontologies_linked_data/config/config.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/config/config.rb b/lib/ontologies_linked_data/config/config.rb index a01a9faa7..8786e3c3f 100644 --- a/lib/ontologies_linked_data/config/config.rb +++ b/lib/ontologies_linked_data/config/config.rb @@ -166,8 +166,9 @@ def goo_namespaces conf.add_namespace(:oboinowl_gen, RDF::Vocabulary.new("http://www.geneontology.org/formats/oboInOwl#")) conf.add_namespace(:obo_purl, RDF::Vocabulary.new("http://purl.obolibrary.org/obo/")) - conf.add_namespace(:umls, - RDF::Vocabulary.new("http://bioportal.bioontology.org/ontologies/umls/")) + conf.add_namespace(:umls, RDF::Vocabulary.new("http://bioportal.bioontology.org/ontologies/umls/")) + conf.add_namespace(:dcterms, RDF::Vocabulary.new("http://purl.org/dc/terms/")) + conf.id_prefix = "http://data.bioontology.org/" conf.pluralize_models(true) end From f4df352d97aef0823daddb35e6e4a23225db8e76 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 3 Nov 2022 17:51:56 +0100 Subject: [PATCH 34/62] add the attributes dcterms:created and dcterms:modified to classes model --- lib/ontologies_linked_data/models/class.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 20d74a56f..12841bb77 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -77,10 +77,12 @@ def self.urn_id(acronym,classId) attribute :notes, inverse: { on: :note, attribute: :relatedClass } + attribute :created, namespace: :dcterms + attribute :modified, namespace: :dcterms # Hypermedia settings embed :children, :ancestors, :descendants, :parents - serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional # an attribute used in Search (not shown out of context) + serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional, :created, :modified # an attribute used in Search (not shown out of context) serialize_methods :properties, :childrenCount, :hasChildren serialize_never :submissionAcronym, :submissionId, :submission, :descendants aggregates childrenCount: [:count, :children] From a00dac9a0825697cb7f6ac5e0f4db6ab8f4bae79 Mon Sep 17 00:00:00 2001 From: mdorf Date: Thu, 3 Nov 2022 13:44:22 -0700 Subject: [PATCH 35/62] a partial fix to ncbo/bioportal-project#251 --- Gemfile.lock | 4 ++-- .../models/properties/ontology_property.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5f86d9934..e40305b2f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/ncbo/goo.git - revision: 7fe22f03b56a944822c986269076a2e2aa64d6a2 + revision: 091e0ca001244a7dbaed0644b0b1087a3a24d16a branch: develop specs: goo (0.0.2) @@ -151,7 +151,7 @@ GEM rubocop-ast (>= 1.20.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.21.0) + rubocop-ast (1.22.0) parser (>= 3.1.1.0) ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) diff --git a/lib/ontologies_linked_data/models/properties/ontology_property.rb b/lib/ontologies_linked_data/models/properties/ontology_property.rb index bf43c2b62..1e9ced842 100644 --- a/lib/ontologies_linked_data/models/properties/ontology_property.rb +++ b/lib/ontologies_linked_data/models/properties/ontology_property.rb @@ -127,7 +127,7 @@ def load_has_children def has_children_query(class_id, submission_id) property_tree = RDF::RDFS[:subPropertyOf] - safe_class_id_uri = class_id.to_s.gsub(' ', '%20').gsub('<', '%3C').gsub('>', '%3E') + safe_class_id_uri = class_id.to_s.gsub(' ', '%20').gsub('<', '%3C').gsub('>', '%3E').gsub('[', '%5B').gsub(']', '%5D') pattern = "?c <#{property_tree.to_s}> <#{safe_class_id_uri}> . " query = < Date: Thu, 3 Nov 2022 13:49:20 -0700 Subject: [PATCH 36/62] Gemfile.lock update --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e40305b2f..74be539ea 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -130,7 +130,7 @@ GEM addressable (>= 2.2) redis (5.0.5) redis-client (>= 0.9.0) - redis-client (0.10.0) + redis-client (0.11.0) connection_pool regexp_parser (2.6.0) rest-client (2.1.0) @@ -141,17 +141,17 @@ GEM rexml (3.2.5) rsolr (1.1.2) builder (>= 2.1.2) - rubocop (1.36.0) + rubocop (1.38.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.1.2.1) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.20.1, < 2.0) + rubocop-ast (>= 1.23.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.22.0) + rubocop-ast (1.23.0) parser (>= 3.1.1.0) ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) From b0f56d5daecabba2478396bf1e14f39177d5135c Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 15 Nov 2022 04:24:42 +0100 Subject: [PATCH 37/62] add collection, scheme and xl_labels links to ontology --- lib/ontologies_linked_data/models/ontology.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/ontologies_linked_data/models/ontology.rb b/lib/ontologies_linked_data/models/ontology.rb index c68cddadb..ef0984a13 100644 --- a/lib/ontologies_linked_data/models/ontology.rb +++ b/lib/ontologies_linked_data/models/ontology.rb @@ -6,6 +6,9 @@ require 'ontologies_linked_data/models/metric' require 'ontologies_linked_data/models/category' require 'ontologies_linked_data/models/project' +require 'ontologies_linked_data/models/skos/scheme' +require 'ontologies_linked_data/models/skos/collection' +require 'ontologies_linked_data/models/skos/skosxl' require 'ontologies_linked_data/models/notes/note' require 'ontologies_linked_data/purl/purl_client' @@ -59,6 +62,9 @@ class OntologyAnalyticsError < StandardError; end LinkedData::Hypermedia::Link.new("classes", lambda {|s| "ontologies/#{s.acronym}/classes"}, LinkedData::Models::Class.uri_type), LinkedData::Hypermedia::Link.new("single_class", lambda {|s| "ontologies/#{s.acronym}/classes/{class_id}"}, LinkedData::Models::Class.uri_type), LinkedData::Hypermedia::Link.new("roots", lambda {|s| "ontologies/#{s.acronym}/classes/roots"}, LinkedData::Models::Class.uri_type), + LinkedData::Hypermedia::Link.new("schemes", lambda {|s| "ontologies/#{s.acronym}/schemes"}, LinkedData::Models::SKOS::Scheme.uri_type), + LinkedData::Hypermedia::Link.new("collections", lambda {|s| "ontologies/#{s.acronym}/collections"}, LinkedData::Models::SKOS::Collection.uri_type), + LinkedData::Hypermedia::Link.new("xl_labels", lambda {|s| "ontologies/#{s.acronym}/skos_xl_labels"}, LinkedData::Models::SKOS::Label.uri_type), LinkedData::Hypermedia::Link.new("instances", lambda {|s| "ontologies/#{s.acronym}/instances"}, Goo.vocabulary["Instance"]), LinkedData::Hypermedia::Link.new("metrics", lambda {|s| "ontologies/#{s.acronym}/metrics"}, LinkedData::Models::Metric.type_uri), LinkedData::Hypermedia::Link.new("reviews", lambda {|s| "ontologies/#{s.acronym}/reviews"}, LinkedData::Models::Review.uri_type), From 0c825020e84d3d851182cf4851cfa479e202d3ef Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 15 Nov 2022 04:25:03 +0100 Subject: [PATCH 38/62] add self link to skosxl:label model --- lib/ontologies_linked_data/models/skos/skosxl.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/models/skos/skosxl.rb b/lib/ontologies_linked_data/models/skos/skosxl.rb index 7357c9b30..9b95b7cc4 100644 --- a/lib/ontologies_linked_data/models/skos/skosxl.rb +++ b/lib/ontologies_linked_data/models/skos/skosxl.rb @@ -12,7 +12,7 @@ class Label < LinkedData::Models::Base serialize_never :submission, :id serialize_methods :properties - cache_timeout 14400 + link_to LinkedData::Hypermedia::Link.new('self', ->(s) { "ontologies/#{s.submission.ontology.acronym}/skos_xl_labels/#{CGI.escape(s.id)}"}, self.uri_type) def properties self.unmapped From bfbaa07aef5b363b17d7bba7d3ff630557f96b63 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 15 Nov 2022 07:26:43 +0100 Subject: [PATCH 39/62] fix a typo in load_is_in_collection --- .../concerns/concepts/concept_in_collection.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb b/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb index 9a90435b2..5670871b1 100644 --- a/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb +++ b/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb @@ -15,7 +15,7 @@ def inCollection?(collection) end def load_is_in_collection(collections = []) - included = collections.select { |s| incollection?(s) } + included = collections.select { |s| inCollection?(s) } @isInActiveCollection = included end From 323696d80a77f9b6a896b8b4cddb8e85bd943942 Mon Sep 17 00:00:00 2001 From: Alex Skrenchuk Date: Wed, 16 Nov 2022 17:38:48 -0800 Subject: [PATCH 40/62] Bump up version of actions/checkout to address node.js 12 deprecation warning --- .github/workflows/ruby-unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby-unit-tests.yml b/.github/workflows/ruby-unit-tests.yml index 6e684c116..31abca8a1 100644 --- a/.github/workflows/ruby-unit-tests.yml +++ b/.github/workflows/ruby-unit-tests.yml @@ -11,7 +11,7 @@ jobs: backend: ['ruby', 'ruby-agraph'] # ruby runs tests with 4store backend and ruby-agraph runs with AllegroGraph backend runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up solr configsets run: ./test/solr/generate_ncbo_configsets.sh - name: create config.rb file From 81c7977d456814102f21e76f032b99ed78468e7b Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 17 Nov 2022 15:40:30 +0100 Subject: [PATCH 41/62] get the correct type by passing the object collection as argument --- .../serializers/json.rb | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/serializers/json.rb b/lib/ontologies_linked_data/serializers/json.rb index bb8d9b6cf..6f9767741 100644 --- a/lib/ontologies_linked_data/serializers/json.rb +++ b/lib/ontologies_linked_data/serializers/json.rb @@ -14,8 +14,9 @@ def self.serialize(obj, options = {}) prefixed_id = LinkedData.settings.replace_url_prefix ? hashed_obj.id.to_s.gsub(LinkedData.settings.id_url_prefix, LinkedData.settings.rest_url_prefix) : hashed_obj.id.to_s hash["@id"] = prefixed_id end + # Add the type - hash["@type"] = current_cls.type_uri.to_s if hash["@id"] && current_cls.respond_to?(:type_uri) + hash["@type"] = type(current_cls, hash, hashed_obj) # Generate links # NOTE: If this logic changes, also change in xml.rb @@ -41,6 +42,23 @@ def self.serialize(obj, options = {}) private + def self.type(current_cls, hash, hashed_obj) + if hash["@id"] && current_cls.respond_to?(:type_uri) + # For internal class + proc = current_cls + elsif hash["@id"] && hashed_obj.respond_to?(:type_uri) + # For External and Interportal class + proc = hashed_obj + end + + collection = hashed_obj.collection + if collection + proc.type_uri(collection).to_s + else + proc.type_uri.to_s + end + end + def self.generate_context(object, serialized_attrs = [], options = {}) return remove_unused_attrs(CONTEXTS[object.hash], serialized_attrs) unless CONTEXTS[object.hash].nil? hash = {} From 0545150ddb6530d7ca55411f8bdd78d03aecab95 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 17 Nov 2022 17:24:12 +0100 Subject: [PATCH 42/62] extract if hash["@id"] condition --- lib/ontologies_linked_data/serializers/json.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ontologies_linked_data/serializers/json.rb b/lib/ontologies_linked_data/serializers/json.rb index 6f9767741..7d7ec8b25 100644 --- a/lib/ontologies_linked_data/serializers/json.rb +++ b/lib/ontologies_linked_data/serializers/json.rb @@ -16,7 +16,7 @@ def self.serialize(obj, options = {}) end # Add the type - hash["@type"] = type(current_cls, hash, hashed_obj) + hash["@type"] = type(current_cls, hash, hashed_obj) if hash["@id"] # Generate links # NOTE: If this logic changes, also change in xml.rb @@ -43,10 +43,10 @@ def self.serialize(obj, options = {}) private def self.type(current_cls, hash, hashed_obj) - if hash["@id"] && current_cls.respond_to?(:type_uri) + if current_cls.respond_to?(:type_uri) # For internal class proc = current_cls - elsif hash["@id"] && hashed_obj.respond_to?(:type_uri) + elsif hashed_obj.respond_to?(:type_uri) # For External and Interportal class proc = hashed_obj end From 39364c017602121cc1c054bac55dc81728996392 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 17 Nov 2022 17:43:12 +0100 Subject: [PATCH 43/62] remove unused argument --- lib/ontologies_linked_data/serializers/json.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/serializers/json.rb b/lib/ontologies_linked_data/serializers/json.rb index 7d7ec8b25..59f54a922 100644 --- a/lib/ontologies_linked_data/serializers/json.rb +++ b/lib/ontologies_linked_data/serializers/json.rb @@ -16,7 +16,7 @@ def self.serialize(obj, options = {}) end # Add the type - hash["@type"] = type(current_cls, hash, hashed_obj) if hash["@id"] + hash["@type"] = type(current_cls, hashed_obj) if hash["@id"] # Generate links # NOTE: If this logic changes, also change in xml.rb @@ -42,7 +42,7 @@ def self.serialize(obj, options = {}) private - def self.type(current_cls, hash, hashed_obj) + def self.type(current_cls, hashed_obj) if current_cls.respond_to?(:type_uri) # For internal class proc = current_cls From ba7a7f82dfce1c067d4ed53681294672dfc0292e Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 17 Nov 2022 17:44:26 +0100 Subject: [PATCH 44/62] test if hashed_obj.respond_to?(:collection) before calling it --- lib/ontologies_linked_data/serializers/json.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/serializers/json.rb b/lib/ontologies_linked_data/serializers/json.rb index 59f54a922..de622944a 100644 --- a/lib/ontologies_linked_data/serializers/json.rb +++ b/lib/ontologies_linked_data/serializers/json.rb @@ -51,7 +51,7 @@ def self.type(current_cls, hashed_obj) proc = hashed_obj end - collection = hashed_obj.collection + collection = hashed_obj.respond_to?(:collection) ? hashed_obj.collection : nil if collection proc.type_uri(collection).to_s else From a9a28f422ec77f1ba7fe458265688f747fabbd08 Mon Sep 17 00:00:00 2001 From: Alex Skrenchuk Date: Thu, 17 Nov 2022 11:36:15 -0800 Subject: [PATCH 45/62] Remove duplicate file --- test/docker-compose.yml | 42 ----------------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 test/docker-compose.yml diff --git a/test/docker-compose.yml b/test/docker-compose.yml deleted file mode 100644 index c9d11f4f3..000000000 --- a/test/docker-compose.yml +++ /dev/null @@ -1,42 +0,0 @@ -version: '3' - -services: - ld-unit-test: - build: ../. - environment: - - OVERRIDE_CONNECT_GOO=true - - GOO_BACKEND_NAME=4store - - GOO_PORT=9000 - - GOO_HOST=4store-ut - - GOO_PATH_QUERY=/sparql/ - - GOO_PATH_DATA=/data/ - - GOO_PATH_UPDATE=/update/ - - REDIS_HOST=redis-ut - - REDIS_PORT=6379 - - SOLR_HOST=ld-solr-ut - command: "rake test TESTOPTS='-v'" - depends_on: - - ld-solr-ut - - redis-ut - - 4store-ut - - redis-ut: - image: redis - - 4store-ut: - image: bde2020/4store - command: > - bash -c "4s-backend-setup --segments 4 ontoportal_kb - && 4s-backend ontoportal_kb - && 4s-httpd -D -s-1 -p 9000 ontoportal_kb" - - ld-solr-ut: - image: solr:8 - volumes: - - ./solr/configsets:/configsets:ro - #ports: - # - "8983:8983" - command: > - bash -c "precreate-core term_search_core1 /configsets/term_search - && precreate-core prop_search_core1 /configsets/property_search - && solr-foreground" From 8628abe3c349052fd389751db203b27e6e541087 Mon Sep 17 00:00:00 2001 From: Jennifer Vendetti Date: Thu, 17 Nov 2022 12:33:24 -0800 Subject: [PATCH 46/62] New version of the owlapi-wrapper JAR (v 1.4.1) --- ...per-1.4.0.jar => owlapi-wrapper-1.4.1.jar} | Bin 15698467 -> 15699794 bytes lib/ontologies_linked_data/parser/owlapi.rb | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename bin/{owlapi-wrapper-1.4.0.jar => owlapi-wrapper-1.4.1.jar} (94%) diff --git a/bin/owlapi-wrapper-1.4.0.jar b/bin/owlapi-wrapper-1.4.1.jar similarity index 94% rename from bin/owlapi-wrapper-1.4.0.jar rename to bin/owlapi-wrapper-1.4.1.jar index 6f4419694cf4fc1b81d2822b42077b225d9fbdb5..1dd710293436ad0df605924b042e3cfdc9015bcd 100644 GIT binary patch delta 332586 zcmZ78bzBrt+cQ$p!Z>68X(>F$yaX_RznknW|sLy!jP?pnG_x=WgOZuNPd`~Cg# z{p`$j>SAV?GwhxvFQE-_Dzgm{Lslrs(3$P#008Ii? zuq9&03O>EVQ|pY2uML?Z?OHUx5QC95sK*dWAg!G`(v>K4l5!@-xmbH^*=p@YzdfOy z-HkN*Fd}eYj21NOW;;8ml1xeht?pUZWgJVfM@qN3v}yPCCzf$bloREM>WZ3rX0ue9 zfO)7&hHB`xQ@s){geg9V?aj~z)-QKZf!ccvNSE-pPox(+Qo3F(@7h`f_aEZl^m0DZ zPsOP$WhoCRk&;b_$Lf$=K>EkW$#eEhwE|0tdlA&{5X%^)5d*R)d`^QK)!6qZUg_b< zi^CYwMsrQ?b+XefRn&cd#?ZlID** zSZt~rerije`6J9t(e?h-vSKn!QN1;WPwMs7NpCJWJ;=6CY-S{oZ;sAY&xaSGYUj&; z@|K-))JSPOKQTYSD9a%t5&l5`fd2&=3aSte3hMt()t^(-3B&gH99_fk{n-Go!)W5g ze}hGjSBEA3TjUBW`L_tG+!8ll+leIp@Mty#-c%3YOy&T%W7$WDm z*cs*Rr+NF2yG;CPFO<>kx}Zm1GLQ7khF|AjJRZeKPY1RPSYIIHFPoqTca(O^bI|th zc45N4(}!EwXJtc?3zKzj>2y(?gl0byJc^}CuE~eRq zxeXQ0E}gkmNaM{qesFNDmC+8LI&~;2{Fpu$PAyVAD=V={)xsO7+Bejo4#krgV8ZQwmyE4L9F>CC7XXVbq|A{vcwMmozy2tD3q{Q|G|7l3yH3!?J`> zNY`7~b=%D^ct z!3uS>MJ39RLwMHVv_<9OrW%FY_ba^_OsQU#E*Ha&eho$1G)13zlj3VE7YTN%KA5G>l6K(#iRBa3=GD=Z#GENb_Xk21+yO$Le^)#j0 zelh7aw%HECx4l!qF!!~p{kp5s-Y}ge%-?f5JTIbs5G{NV?6mQVIpvIw;Ks7@K73u5 zCHS{i<$an`YsK?ee)r_4Jm1XZ{LYknqxnr!!OY}nTEGu@`ED((^76{kvK8%ioAZ4< zIYP7fCcjJAf(=nK7i%9cCftPxlLfilSa&b-sWyHP)(H|vq!nt69$;Ms~2MNy|Bq~se>JC`aUl92&3t&i{2 zHnPQFEq1z;si)gQt?fHiWK8aDXvbgq2Jx$hPmWv#;vyc5%JttDH<7{E zA?i7ta-~LOi<*d|k#;4Gw3mk(REmSgm7_Q@CFUqLsr#y5;9 zf#eC?G>z6cO*?&c%=KS|^pY?$cWPI86x>nHi)uMTXzAc19Ws+*ieGi~2y`90V~Sr_ zY0J@1c?a&f`eBVT%M)-YTv037XdHKHL!n_8v$Gj_cNbd4Z7(b5SLCfEqReaVS6gb^ zl1HUtdKjW`5 zzUQZP;3|1)8I$3jC4|bez(BIFt}V&qeq&w9#p&DolbmN_IUUNVuG%Ja&-ZR2cD

Cl_X*jFS~v48uZ(8_jy$I8{^opzXoEthID0|*N< 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

m9 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 ggXpvS&g_;emv5-)Zt#h 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

7zCl*w-|ewERmTXtgP}M` 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

q}$ID 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 Date: Mon, 21 Nov 2022 17:40:59 +0100 Subject: [PATCH 47/62] use uneskos:memberOf instead of inCollection --- lib/ontologies_linked_data/config/config.rb | 1 + lib/ontologies_linked_data/models/class.rb | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ontologies_linked_data/config/config.rb b/lib/ontologies_linked_data/config/config.rb index cda30a977..80576713d 100644 --- a/lib/ontologies_linked_data/config/config.rb +++ b/lib/ontologies_linked_data/config/config.rb @@ -194,6 +194,7 @@ def goo_namespaces conf.add_namespace(:cclicense, RDF::Vocabulary.new("http://creativecommons.org/licenses/")) conf.add_namespace(:nkos, RDF::Vocabulary.new("http://w3id.org/nkos#")) + conf.add_namespace(:uneskos, RDF::Vocabulary.new("http://purl.org/umu/uneskos#")) conf.id_prefix = DEFAULT_PREFIX diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index af818c53d..b7826534f 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -82,7 +82,7 @@ def self.urn_id(acronym,classId) attribute :notes, inverse: { on: :note, attribute: :relatedClass } attribute :inScheme, enforce: [:list, :uri], namespace: :skos - attribute :inCollection, inverse: { on: :collection , :attribute => :member } + attribute :memberOf, namespace: :uneskos, inverse: { on: :collection , :attribute => :member } # Hypermedia settings embed :children, :ancestors, :descendants, :parents @@ -92,7 +92,7 @@ def self.urn_id(acronym,classId) aggregates childrenCount: [:count, :children] links_load submission: [ontology: [:acronym]] do_not_load :descendants, :ancestors - prevent_serialize_when_nested :properties, :parents, :children, :ancestors, :descendants, :inCollection + prevent_serialize_when_nested :properties, :parents, :children, :ancestors, :descendants, :memberOf link_to LinkedData::Hypermedia::Link.new("self", lambda {|s| "ontologies/#{s.submission.ontology.acronym}/classes/#{CGI.escape(s.id.to_s)}"}, self.uri_type), LinkedData::Hypermedia::Link.new("ontology", lambda {|s| "ontologies/#{s.submission.ontology.acronym}"}, Goo.vocabulary["Ontology"]), LinkedData::Hypermedia::Link.new("children", lambda {|s| "ontologies/#{s.submission.ontology.acronym}/classes/#{CGI.escape(s.id.to_s)}/children"}, self.uri_type), @@ -323,7 +323,7 @@ def load_computed_attributes(to_load:, options:) end def self.concept_is_in_attributes - [:inScheme, :isInActiveScheme, :inCollection, :isInActiveCollection] + [:inScheme, :isInActiveScheme, :memberOf, :isInActiveCollection] end From 0615583ff67fe79106993d98c3a6c54f36bf938a Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 11:39:36 +0100 Subject: [PATCH 48/62] add skos concept schemes tests --- ....rdf => thesaurusINRAE_nouv_structure.rdf} | 28 +- test/models/skos/test_schemes.rb | 367 ++++++++++++++++++ 2 files changed, 394 insertions(+), 1 deletion(-) rename test/data/ontology_files/{thesaurusINRAE_nouv_structure.skos.rdf => thesaurusINRAE_nouv_structure.rdf} (99%) create mode 100644 test/models/skos/test_schemes.rb diff --git a/test/data/ontology_files/thesaurusINRAE_nouv_structure.skos.rdf b/test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf similarity index 99% rename from test/data/ontology_files/thesaurusINRAE_nouv_structure.skos.rdf rename to test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf index 452fa9c00..fef6bbe2c 100644 --- a/test/data/ontology_files/thesaurusINRAE_nouv_structure.skos.rdf +++ b/test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf @@ -19,7 +19,30 @@ xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:rdf4j="http://rdf4j.org/schema/rdf4j#"> + xmlns:rdf4j="http://rdf4j.org/schema/rdf4j#" + xmlns:skos-xl="http://www.w3.org/2008/05/skos-xl#" + xmlns:terms="http://purl.org/dc/terms/" + xmlns:void="http://rdfs.org/ns/void#"> + + + + + + + 1331561625299 + aktivite + 2012-03-12T22:13:45Z + 2017-09-22T14:09:06Z + + + + + + 00008d7b + air-water exchanges + 2019-09-04T12:02:37 + + @@ -20712,6 +20735,9 @@ + + + diff --git a/test/models/skos/test_schemes.rb b/test/models/skos/test_schemes.rb new file mode 100644 index 000000000..4960c33bb --- /dev/null +++ b/test/models/skos/test_schemes.rb @@ -0,0 +1,367 @@ +require_relative '../test_ontology_common' +require 'logger' + +class TestSchemes < LinkedData::TestOntologyCommon + + + def self.before_suite + LinkedData::TestCase.backend_4s_delete + end + + def test_schemes_all + submission_parse('INRAETHES', 'Testing skos', + 'test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf', + 1, + process_rdf: true, index_search: false, + run_metrics: false, reasoning: false) + ont = 'INRAETHES' + sub = LinkedData::Models::Ontology.find(ont).first.latest_submission + schemes = LinkedData::Models::SKOS::Scheme.in(sub).include(:prefLabel).all + + assert_equal 66, schemes.size + schemes_test = test_data + + schemes.each_with_index do |x, i| + scheme_test = schemes_test[i] + assert_equal scheme_test[:id], x.id.to_s + assert_equal scheme_test[:prefLabel], x.prefLabel + end + end + + private + + def test_data + [ + { + "prefLabel": 'BIO neurosciences', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_74', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'INRAE domains', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/domainesINRAE', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'EAR meteorology and climatology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_107', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'HEA prevention and therapy', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_77', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'PHY materials sciences', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_85', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO cell biology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_64', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH human geography', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_20661', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO immunology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_75', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'APP variables, parameters and data', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_23256', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH information and communication', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_20962', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO diet and nutrition', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_23276', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH research and education', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_20150', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CON processing technology and equipment', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_54', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO molecular biology and biochemistry', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_65', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'EAR soil sciences', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_105', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO toxicology and ecotoxicology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_68', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'AGR farms and farming systems', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_44', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'AGR plant cultural practices and experimentations', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_47', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CHE chemical and physicochemical analysis', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_23260', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CON quality of processed products', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_55', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'EAR geology and geomorphology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_104', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'APP research methods', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_98', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH laws and standards', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_21670', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO general biology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_26224', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO ethology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_69', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'PHY energy and thermodynamics', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_86', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'PHY mechanics and robotics', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_88', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'HEA health and welfare', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_78', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'ENV environment and natural resources', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_14', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'PHY civil engineering', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_89', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'HEA diseases, disorders and symptoms', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_76', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'HEA disease vectors', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_79', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'ENV natural and technological hazards', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_17', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CHE chemical compounds and elements', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_100', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'ENV waste', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_15', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CON supply chain management', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_56', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'AGR animal husbandry and breeding', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_48', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'ENV water management', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_18', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'AGR agricultural products', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_46', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'MAT computer sciences and artificial intelligence', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_91', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'AGR agricultural machinery and equipment', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_49', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO microbiology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_71', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'ENV pollution', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_16', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO physiology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_72', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH culture and humanities', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_26297', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'MAT mathematics and statistics', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_90', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": nil, + "id": 'http://opendata.inrae.fr/thesaurusINRAE/thesaurusINRAE', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH politics and administration', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_22445', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'EAR hydrology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_106', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'AGR agricultural management', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_26298', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH management sciences', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_21074', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH economics', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_20544', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO anatomy and body fluids', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_63', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'ORG taxonomic classification of organisms', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_26190', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CHE chemical reactions and physicochemical phenomena', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_102', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'AGR hunting and fishing', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_50', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CON processed biobased products', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_53', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO genetics', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_70', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'ORG organisms related notions', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_26191', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'SSH sociology and psychology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_20262', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'APP research equipment', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_97', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'CHE chemical and physicochemical properties', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_101', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'BIO ecology', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_67', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'PHY physical properties of matter', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_84', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'EAR physical geography', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_103', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + }, + { + "prefLabel": 'PHY hydraulics and aeraulics', + "id": 'http://opendata.inrae.fr/thesaurusINRAE/mt_87', + "type": 'http://www.w3.org/2004/02/skos/core#ConceptScheme' + } + ] + end +end From 9aeda3a487ae748062431721a355badc30d22a7d Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 11:41:18 +0100 Subject: [PATCH 49/62] add skos collections tests --- test/models/skos/test_collections.rb | 64 ++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 test/models/skos/test_collections.rb diff --git a/test/models/skos/test_collections.rb b/test/models/skos/test_collections.rb new file mode 100644 index 000000000..6d7190634 --- /dev/null +++ b/test/models/skos/test_collections.rb @@ -0,0 +1,64 @@ +require_relative '../test_ontology_common' +require 'logger' + +class TestCollections < LinkedData::TestOntologyCommon + + + def self.before_suite + LinkedData::TestCase.backend_4s_delete + end + + def test_collections_all + submission_parse('INRAETHES', 'Testing skos', + 'test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf', + 1, + process_rdf: true, index_search: false, + run_metrics: false, reasoning: false) + ont = 'INRAETHES' + sub = LinkedData::Models::Ontology.find(ont).first.latest_submission + collections = LinkedData::Models::SKOS::Collection.in(sub).include(:members, :prefLabel).all + + assert_equal 2, collections.size + collections_test = test_data + + collections.each_with_index do |x, i| + collection_test = collections_test[i] + assert_equal collection_test[:id], x.id.to_s + assert_equal collection_test[:prefLabel], x.prefLabel + assert_equal collection_test[:memberCount], x.memberCount + end + end + + def test_collection_members + submission_parse('INRAETHES', 'Testing skos', + 'test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf', + 1, + process_rdf: true, index_search: false, + run_metrics: false, reasoning: false) + ont = 'INRAETHES' + sub = LinkedData::Models::Ontology.find(ont).first.latest_submission + collection_test = test_data.first + collection = LinkedData::Models::SKOS::Collection.find(collection_test[:id]).in(sub).include(:member, :prefLabel).first + + refute_nil collection + members = collection.member + assert_equal collection_test[:memberCount], members.size + end + + private + + def test_data + [ + { + "id": 'http://opendata.inrae.fr/thesaurusINRAE/gr_6c79e7c5', + "prefLabel": 'GR. DEFINED CONCEPTS', + "memberCount": 295 + }, + { + "prefLabel": 'GR. DISCIPLINES', + "memberCount": 233, + "id": 'http://opendata.inrae.fr/thesaurusINRAE/skosCollection_e25f9c62' + } + ] + end +end From 0adc55683a9764fed5cb56728321d78c53fe327f Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 11:42:21 +0100 Subject: [PATCH 50/62] add skos xl label tests --- test/models/skos/test_skos_xl.rb | 72 ++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 test/models/skos/test_skos_xl.rb diff --git a/test/models/skos/test_skos_xl.rb b/test/models/skos/test_skos_xl.rb new file mode 100644 index 000000000..f06433177 --- /dev/null +++ b/test/models/skos/test_skos_xl.rb @@ -0,0 +1,72 @@ +require_relative '../test_ontology_common' +require 'logger' + +class TestSkosXlLabel < LinkedData::TestOntologyCommon + + def self.before_suite + LinkedData::TestCase.backend_4s_delete + end + + def test_skos_xl_label_all + submission_parse('INRAETHES', 'Testing skos', + 'test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf', + 1, + process_rdf: true, index_search: false, + run_metrics: false, reasoning: false) + ont = 'INRAETHES' + sub = LinkedData::Models::Ontology.find(ont).first.latest_submission + labels = LinkedData::Models::SKOS::Label.in(sub).include(:literalForm).all + assert_equal 2, labels.size + tests_labels = test_data + labels.each do |label| + test_label = tests_labels.select { |x| x[:id].eql?(label.id.to_s) } + refute_nil test_label.first + label_test(label, test_label.first) + end + end + + def test_class_skos_xl_label + submission_parse('INRAETHES', 'Testing skos', + 'test/data/ontology_files/thesaurusINRAE_nouv_structure.rdf', + 1, + process_rdf: true, index_search: false, + run_metrics: false, reasoning: false) + ont = 'INRAETHES' + ont = LinkedData::Models::Ontology.find(ont).first + sub = ont.latest_submission + + sub.bring_remaining + sub.hasOntologyLanguage = LinkedData::Models::OntologyFormat.find('SKOS').first + sub.save + + class_test = LinkedData::Models::Class.find('http://opendata.inrae.fr/thesaurusINRAE/c_16193') + .in(sub).include(:prefLabel, + altLabelXl: [:literalForm], + prefLabelXl: [:literalForm], + hiddenLabelXl: [:literalForm]).first + + refute_nil class_test + assert_equal 1, class_test.altLabelXl.size + assert_equal 1, class_test.prefLabelXl.size + assert_equal 1, class_test.hiddenLabelXl.size + tests_labels = test_data + + label_test(class_test.altLabelXl.first, tests_labels[0]) + label_test(class_test.prefLabelXl.first, tests_labels[1]) + label_test(class_test.hiddenLabelXl.first, tests_labels[1]) + end + + private + + def test_data + [ + { id: 'http://aims.fao.org/aos/agrovoc/xl_tr_1331561625299', literalForm: 'aktivite' }, + { id: 'http://aims.fao.org/aos/agrovoc/xl_en_668053a7', literalForm: 'air-water exchanges' } + ] + end + + def label_test(label, label_test) + assert_equal label_test[:id], label.id.to_s + assert_equal label_test[:literalForm], label.literalForm + end +end \ No newline at end of file From 00af00a88a0f59b4c878366d4037315459221889 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 15:24:34 +0100 Subject: [PATCH 51/62] update skos submission roots tests --- test/models/test_skos_submission.rb | 69 ++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/test/models/test_skos_submission.rb b/test/models/test_skos_submission.rb index 515268591..732143fe7 100644 --- a/test/models/test_skos_submission.rb +++ b/test/models/test_skos_submission.rb @@ -11,15 +11,27 @@ def before_suite process_rdf: true, index_search: false, run_metrics: false, reasoning: true) - LinkedData::Models::OntologySubmission.where(ontology: [acronym: 'SKOS-TEST'], - submissionId: 987) - .first + sub = LinkedData::Models::OntologySubmission.where(ontology: [acronym: 'SKOS-TEST'], + submissionId: 987) + .first + sub.bring_remaining + sub.uri = 'http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view' + sub.save + sub end - def test_skos_ontology + def test_get_main_concept_scheme + sub = before_suite + assert_equal sub.uri, sub.get_main_concept_scheme.to_s + end + + def test_roots_no_main_scheme sub = before_suite - assert_nil sub.get_main_concept_scheme # no concept scheme as owl:ontology found + sub.uri = nil # no concept scheme as owl:ontology found + sub.save + assert_nil sub.get_main_concept_scheme + # if no main scheme found get all roots (topConcepts) assert sub.roots.map { |x| x.id.to_s }.sort == ['http://www.ebi.ac.uk/efo/EFO_0000311', 'http://www.ebi.ac.uk/efo/EFO_0001444', 'http://www.ifomis.org/bfo/1.1/snap#Disposition', @@ -41,38 +53,55 @@ def test_skos_ontology end end - def test_get_main_concept_scheme + def test_roots_main_scheme sub = before_suite - sub.bring_remaining - sub.URI = 'http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view' - sub.save - assert_equal sub.URI, sub.get_main_concept_scheme.to_s + + roots = sub.roots + assert_equal 4, roots.size + roots.each do |r| + assert_equal r.isInActiveScheme, [sub.get_main_concept_scheme.to_s] + assert_equal r.isInActiveCollection, [] + end + roots = roots.map { |r| r.id.to_s } unless roots.nil? + refute_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000311' + refute_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000324' end def test_roots_of_a_scheme sub = before_suite - - roots = sub.roots(concept_schemes: ['http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view_2']) - roots = roots.map { |r| r.id.to_s } unless roots.nil? + concept_schemes = ['http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view_2'] + roots = sub.roots(concept_schemes: concept_schemes) assert_equal 2, roots.size + roots.each do |r| + assert_includes r.inScheme, concept_schemes.first + assert_equal r.isInActiveScheme, concept_schemes + assert_equal r.isInActiveCollection, [] + end + roots = roots.map { |r| r.id.to_s } unless roots.nil? assert_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000311' assert_includes roots, 'http://www.ebi.ac.uk/efo/EFO_0000324' end - def test_roots_of_miltiple_scheme + def test_roots_of_multiple_scheme sub = before_suite concept_schemes = ['http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view_2', 'http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view'] roots = sub.roots(concept_schemes: concept_schemes) - roots = roots.map { |r| r.id.to_s } unless roots.nil? assert_equal 6, roots.size + roots.each do |r| + selected_schemes = r.inScheme.select { |s| concept_schemes.include?(s) } + refute_empty selected_schemes + assert_equal r.isInActiveScheme, selected_schemes + assert_equal r.isInActiveCollection, [] + end + roots = roots.map { |r| r.id.to_s } unless roots.nil? assert roots.sort == ['http://www.ebi.ac.uk/efo/EFO_0000311', - 'http://www.ebi.ac.uk/efo/EFO_0001444', - 'http://www.ifomis.org/bfo/1.1/snap#Disposition', - 'http://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:37577', - 'http://www.ebi.ac.uk/efo/EFO_0000635', - 'http://www.ebi.ac.uk/efo/EFO_0000324'].sort + 'http://www.ebi.ac.uk/efo/EFO_0001444', + 'http://www.ifomis.org/bfo/1.1/snap#Disposition', + 'http://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:37577', + 'http://www.ebi.ac.uk/efo/EFO_0000635', + 'http://www.ebi.ac.uk/efo/EFO_0000324'].sort end end From 62a286ff94e9b3c0dc8a4ee2fcd69ac5dcd054dc Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 15:25:35 +0100 Subject: [PATCH 52/62] add skos submission roots collections filter tests --- test/data/ontology_files/efo_gwas.skos.owl | 11 ++++++++- test/models/test_skos_submission.rb | 28 ++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/test/data/ontology_files/efo_gwas.skos.owl b/test/data/ontology_files/efo_gwas.skos.owl index a57a5a549..dbcba0215 100644 --- a/test/data/ontology_files/efo_gwas.skos.owl +++ b/test/data/ontology_files/efo_gwas.skos.owl @@ -634,6 +634,7 @@ + @@ -710,6 +711,7 @@ + @@ -4270,8 +4272,15 @@ - + + + + + + + + diff --git a/test/models/test_skos_submission.rb b/test/models/test_skos_submission.rb index 515268591..f7da18b81 100644 --- a/test/models/test_skos_submission.rb +++ b/test/models/test_skos_submission.rb @@ -74,5 +74,33 @@ def test_roots_of_miltiple_scheme 'http://www.ebi.ac.uk/efo/EFO_0000635', 'http://www.ebi.ac.uk/efo/EFO_0000324'].sort end + + def test_roots_of_scheme_collection + sub = before_suite + + concept_schemes = ['http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view'] + concept_collection = ['http://www.ebi.ac.uk/efo/skos/collection_1'] + roots = sub.roots(concept_schemes: concept_schemes, concept_collections: concept_collection) + assert_equal 4, roots.size + + roots.each do |r| + assert_equal r.isInActiveCollection, concept_collection if r.memberOf.include?(concept_collection.first) + end + end + + def test_roots_of_scheme_collections + sub = before_suite + + concept_schemes = ['http://www.ebi.ac.uk/efo/skos/EFO_GWAS_view'] + concept_collection = ['http://www.ebi.ac.uk/efo/skos/collection_1', + 'http://www.ebi.ac.uk/efo/skos/collection_2'] + roots = sub.roots(concept_schemes: concept_schemes, concept_collections: concept_collection) + assert_equal 4, roots.size + + roots.each do |r| + selected_collections = r.memberOf.select { |c| concept_collection.include?(c)} + assert_equal r.isInActiveCollection, selected_collections unless selected_collections.empty? + end + end end From 5063e5a8c54c7a5ef2caf67514f6c595df930b5d Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 15:53:52 +0100 Subject: [PATCH 53/62] use memberOf instead of inCollection in InCollection module --- .../concerns/concepts/concept_in_collection.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb b/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb index 5670871b1..1707dea35 100644 --- a/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb +++ b/lib/ontologies_linked_data/concerns/concepts/concept_in_collection.rb @@ -11,7 +11,7 @@ def isInActiveCollection end def inCollection?(collection) - self.inCollection.include?(collection) + self.memberOf.include?(collection) end def load_is_in_collection(collections = []) From b6c1ca34f2e7d2ea6e64aaa0b9068b025b969ae9 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 16:03:08 +0100 Subject: [PATCH 54/62] handle nil to_load --- lib/ontologies_linked_data/models/class.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index b7826534f..6bc0487e6 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -317,9 +317,9 @@ def self.partially_load_children(models, threshold, submission) end def load_computed_attributes(to_load:, options:) - self.load_has_children if to_load.include?(:hasChildren) - self.load_is_in_scheme(options[:schemes]) if to_load.include?(:isInActiveScheme) - self.load_is_in_collection(options[:collections]) if to_load.include?(:isInActiveCollection) + self.load_has_children if to_load&.include?(:hasChildren) + self.load_is_in_scheme(options[:schemes]) if to_load&.include?(:isInActiveScheme) + self.load_is_in_collection(options[:collections]) if to_load&.include?(:isInActiveCollection) end def self.concept_is_in_attributes From daf312a18fb2d197b194ae1a9bf524bd5dfa0c5b Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Fri, 25 Nov 2022 16:36:48 +0100 Subject: [PATCH 55/62] update config.rb.sample to add main_languages --- config/config.rb.sample | 3 +++ config/config.test.rb | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 config/config.test.rb diff --git a/config/config.rb.sample b/config/config.rb.sample index 9f1d6b1c0..6956d9cf5 100644 --- a/config/config.rb.sample +++ b/config/config.rb.sample @@ -15,6 +15,9 @@ LinkedData.config do |config| config.purl_password = "" config.purl_maintainers = "" config.purl_target_url_prefix = "http://bioportal.bioontology.org" + Goo.configure do |conf| + conf.main_languages = ['en'] + end end #sometimes tmp by default cannot allocate large files diff --git a/config/config.test.rb b/config/config.test.rb new file mode 100644 index 000000000..00e169da9 --- /dev/null +++ b/config/config.test.rb @@ -0,0 +1,23 @@ +LinkedData.config do |config| + config.goo_port = 9000 + config.goo_host = "localhost" + config.search_server_url = "http://localhost:8983/solr/term_search_core1" + config.property_search_server_url = "http://localhost:8983/solr/prop_search_core1" + config.repository_folder = "./test/data/ontology_files/repo" + config.rest_url_prefix = "http://data.bioontology.org/" + config.enable_security = false + config.java_max_heap_size = '10240M' + #PURL server config parameters + + config.enable_purl = false + config.purl_host = "purl.bioontology.org" + config.purl_port = 80 + config.purl_username = "" + config.purl_password = "" + config.purl_maintainers = "" + config.purl_target_url_prefix = "http://bioportal.bioontology.org" + + Goo.configure do |conf| + conf.main_languages = ['en'] + end +end \ No newline at end of file From 63da7771de8042dedf5931501f6569cc4b2a88cb Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 28 Nov 2022 21:51:45 +0100 Subject: [PATCH 56/62] fix main_languages configuration tests --- test/models/test_class_main_lang.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/models/test_class_main_lang.rb b/test/models/test_class_main_lang.rb index 07ad63b4b..352dbe7f0 100644 --- a/test/models/test_class_main_lang.rb +++ b/test/models/test_class_main_lang.rb @@ -1,6 +1,14 @@ require_relative './test_ontology_common' class TestClassMainLang < LinkedData::TestOntologyCommon + def self.before_suite + @@old_main_languages = Goo.main_languages + end + + def self.after_suite + Goo.main_languages = @@old_main_languages + end + def test_map_attribute_found cls = parse_and_get_class lang: ['fr'] cls.bring :unmapped From 0e96a3b1972c48f93a21a56a0cce385f55a1ec52 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 29 Nov 2022 01:28:56 +0100 Subject: [PATCH 57/62] remove SAME_URI filter exception --- lib/ontologies_linked_data/mappings/mappings.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/ontologies_linked_data/mappings/mappings.rb b/lib/ontologies_linked_data/mappings/mappings.rb index 54838f23d..026fa8676 100644 --- a/lib/ontologies_linked_data/mappings/mappings.rb +++ b/lib/ontologies_linked_data/mappings/mappings.rb @@ -869,7 +869,6 @@ def self.mappings_ont_build_query(class_id, page, size, sub1, sub2) filter = class_id.nil? ? "FILTER ((?s1 != ?s2) || (?source = 'SAME_URI'))" : '' if sub2.nil? - class_id_subject = class_id.nil? ? '?s1' : "<#{class_id.to_s}>" source_graph = sub1.nil? ? '?g' : "<#{sub1.to_s}>" internal_mapping_predicates.each do |_source, predicate| @@ -889,7 +888,7 @@ def self.mappings_ont_build_query(class_id, page, size, sub1, sub2) #STRSTARTS is used to not count older graphs #no need since now we delete older graphs - filter += "\nFILTER (!STRSTARTS(str(?g),'#{ont_id}') || (?source = 'SAME_URI')" + filter += "\nFILTER (!STRSTARTS(str(?g),'#{ont_id}')" filter += " || " + internal_mapping_predicates.keys.map{|x| "(?source = '#{x}')"}.join('||') filter += ")" end From b0c2c65ad00446cdcf55c6544aadd5c676a3a9bc Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 29 Nov 2022 02:14:16 +0100 Subject: [PATCH 58/62] fix rest mappings tests --- test/models/test_mappings.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/models/test_mappings.rb b/test/models/test_mappings.rb index f876758d2..6b4e2e29f 100644 --- a/test/models/test_mappings.rb +++ b/test/models/test_mappings.rb @@ -40,6 +40,11 @@ def self.ontologies_parse() LinkedData::Mappings.create_mapping_counts(Logger.new(TestLogFile.new)) end + def delete_all_rest_mappings + LinkedData::Models::RestBackupMapping.all.each do |m| + LinkedData::Mappings.delete_rest_mapping(m.id) + end + end def test_mapping_count_models LinkedData::Models::MappingCount.where.all do |x| x.delete @@ -107,9 +112,7 @@ def validate_mapping(map) end def test_mappings_ontology - LinkedData::Models::RestBackupMapping.all.each do |m| - LinkedData::Mappings.delete_rest_mapping(m.id) - end + delete_all_rest_mappings LinkedData::Mappings.create_mapping_counts(Logger.new(TestLogFile.new)) assert LinkedData::Models::MappingCount.where.all.length > 2 #bro @@ -226,6 +229,7 @@ def test_mappings_two_ontologies end def test_mappings_rest + delete_all_rest_mappings mapping_term_a, mapping_term_b, submissions_a, submissions_b, relations, user = rest_mapping_data mappings_created = [] From 0f7b7c744052296e51432136cf79e25b85d4edaa Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 13 Dec 2022 15:20:17 +0100 Subject: [PATCH 59/62] never serialize member attribute, to not be fetch with display=all --- lib/ontologies_linked_data/models/skos/collection.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/models/skos/collection.rb b/lib/ontologies_linked_data/models/skos/collection.rb index fa16496a9..afc5724e4 100644 --- a/lib/ontologies_linked_data/models/skos/collection.rb +++ b/lib/ontologies_linked_data/models/skos/collection.rb @@ -12,7 +12,7 @@ class Collection < LinkedData::Models::Base embed :member serialize_default :prefLabel, :memberCount - serialize_never :submission, :id + serialize_never :submission, :id, :member serialize_methods :properties, :memberCount aggregates memberCount: [:count, :member] From 9a692f883c9628b7344025962291bab52a392928 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Tue, 13 Dec 2022 21:28:04 +0100 Subject: [PATCH 60/62] set :memberOf, :inScheme as serialize_default for concepts --- lib/ontologies_linked_data/models/class.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/models/class.rb b/lib/ontologies_linked_data/models/class.rb index 6bc0487e6..70bff23de 100644 --- a/lib/ontologies_linked_data/models/class.rb +++ b/lib/ontologies_linked_data/models/class.rb @@ -86,7 +86,7 @@ def self.urn_id(acronym,classId) # Hypermedia settings embed :children, :ancestors, :descendants, :parents - serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional # an attribute used in Search (not shown out of context) + serialize_default :prefLabel, :synonym, :definition, :cui, :semanticType, :obsolete, :matchType, :ontologyType, :provisional, :memberOf, :inScheme # an attribute used in Search (not shown out of context) serialize_methods :properties, :childrenCount, :hasChildren serialize_never :submissionAcronym, :submissionId, :submission, :descendants aggregates childrenCount: [:count, :children] From d43c850210c61685db30a14d89885cbfbac5b8d7 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sat, 17 Dec 2022 19:26:11 +0100 Subject: [PATCH 61/62] Revert "Merge branch 'features/add-skosxl' into development" This reverts commit 79c9cd4cf0b707dc8c05a805501e0d33f87c7647. --- .dockerignore | 11 ++ .github/workflows/ruby-unit-tests.yml | 19 ++- Dockerfile | 28 ++-- Gemfile | 3 +- Gemfile.lock | 49 +++++-- config/config.rb.sample | 4 +- config/config.test.rb | 52 ++++--- dip.yml | 56 ++++++++ docker-compose.yml | 119 +++++++++++---- lib/ontologies_linked_data/config/config.rb | 2 +- run-unit-tests.sh | 18 ++- test/docker-compose.yml | 42 ++++++ test/parser/test_owl_api_command.rb | 43 ++---- test/run_tests.rb | 102 ++++++++----- test/solr/generate_ncbo_configsets.sh | 33 +++-- test/test_case.rb | 152 ++++++++++---------- 16 files changed, 491 insertions(+), 242 deletions(-) create mode 100644 .dockerignore create mode 100644 dip.yml create mode 100644 test/docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..2a0a6fabc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +# Git +.git +.gitignore +# Logs +log/* +# Temp files +tmp/* +# Editor temp files +*.swp +*.swo +test/solr diff --git a/.github/workflows/ruby-unit-tests.yml b/.github/workflows/ruby-unit-tests.yml index 7fc929117..99b26fde1 100644 --- a/.github/workflows/ruby-unit-tests.yml +++ b/.github/workflows/ruby-unit-tests.yml @@ -13,11 +13,20 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up solr configsets - run: test/solr/generate_ncbo_configsets.sh + run: ./test/solr/generate_ncbo_configsets.sh - name: create config.rb file - run: cp config/config.rb.sample config/config.rb + run: cp config/config.test.rb config/config.rb - name: Build docker-compose - run: docker-compose build + run: docker-compose --profile 4store build #profile flag is set in order to build all containers in this step - name: Run unit tests - run: docker-compose up --exit-code-from unit-test - + # unit tests are run inside a container + # http://docs.codecov.io/docs/testing-with-docker + run: | + ci_env=`bash <(curl -s https://codecov.io/env)` + docker-compose run $ci_env -e CI --rm ${{ matrix.backend }} wait-for-it solr-ut:8983 -- bundle exec rake test TESTOPTS='-v' + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + with: + flags: unittests + verbose: true + fail_ci_if_error: false # optional (default = false) diff --git a/Dockerfile b/Dockerfile index 2f1b6ef0f..f78fd9c6e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,23 @@ -FROM ruby:2.6 +ARG RUBY_VERSION +ARG DISTRO_NAME=bullseye + +FROM ruby:$RUBY_VERSION-$DISTRO_NAME + +RUN apt-get update -yqq && apt-get install -yqq --no-install-recommends \ + openjdk-11-jre-headless \ + raptor2-utils \ + wait-for-it \ + && rm -rf /var/lib/apt/lists/* -RUN apt-get update -yqq && apt-get install -yqq --no-install-recommends vim openjdk-11-jre-headless raptor2-utils -# The Gemfile Caching Trick RUN mkdir -p /srv/ontoportal/ontologies_linked_data +RUN mkdir -p /srv/ontoportal/bundle COPY Gemfile* /srv/ontoportal/ontologies_linked_data/ + WORKDIR /srv/ontoportal/ontologies_linked_data -RUN gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" -RUN bundle install --binstubs -COPY . /srv/ontoportal/ontologies_linked_data +RUN gem update --system +RUN gem install bundler +ENV BUNDLE_PATH=/srv/ontoportal/bundle +RUN bundle install -# unit tests have to run with unprivileged user -# otherwise TestOWLApi#test_command_KO_output test fails -RUN adduser --disabled-password ontoportal -RUN chown -R ontoportal /srv/ontoportal/ontologies_linked_data -USER ontoportal +COPY . /srv/ontoportal/ontologies_linked_data diff --git a/Gemfile b/Gemfile index 3a9f43a38..ce9364a80 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' gem 'activesupport', '~> 4' -gem 'addressable', '= 2.3.5' +gem 'addressable', '~> 2.8' gem 'bcrypt', '~> 3.0' gem 'cube-ruby', require: 'cube' gem 'faraday', '~> 1.9' @@ -26,6 +26,7 @@ group :test do gem 'minitest-reporters', '>= 0.5.0' gem 'pry' gem 'simplecov' + gem 'simplecov-cobertura' # for codecov.io gem 'test-unit-minitest' end diff --git a/Gemfile.lock b/Gemfile.lock index ca9accb6d..71b886381 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,17 +1,16 @@ GIT remote: https://github.com/ontoportal-lirmm/goo.git - revision: e26325e4f7d73e538ca14e126bbd0e9553a07843 + revision: 3d5bbe1db4a6aca2ff621ccfcdb85a32dbe9704e branch: development specs: goo (0.0.2) - addressable (= 2.3.5) + addressable (~> 2.8) pry rdf (= 1.0.8) redis rest-client rsolr sparql-client - systemu uuid GIT @@ -33,7 +32,8 @@ GEM multi_json (~> 1.3) thread_safe (~> 0.1) tzinfo (~> 0.3.37) - addressable (2.3.5) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) ansi (1.5.0) ast (2.4.2) bcrypt (3.1.18) @@ -43,6 +43,7 @@ GEM connection_pool (2.3.0) cube-ruby (0.0.3) daemons (1.4.1) + date (3.3.2) docile (1.4.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) @@ -82,16 +83,19 @@ GEM domain_name (~> 0.5) i18n (0.9.5) concurrent-ruby (~> 1.0) - json (2.6.2) - json_pure (2.6.2) - launchy (2.4.3) - addressable (~> 2.3) + json (2.6.3) + json_pure (2.6.3) + launchy (2.5.0) + addressable (~> 2.7) libxml-ruby (2.9.0) - logger (1.5.1) + logger (1.5.3) macaddr (1.7.2) systemu (~> 2.6.5) - mail (2.7.1) + mail (2.8.0) mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp method_source (1.0.0) mime-types (3.4.1) mime-types-data (~> 3.2015) @@ -106,12 +110,21 @@ GEM multi_json (1.15.0) multipart-post (2.2.3) net-http-persistent (2.9.4) + net-imap (0.3.2) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.1) + timeout + net-smtp (0.3.3) + net-protocol netrc (0.11.0) oj (2.18.5) omni_logger (0.1.4) logger parallel (1.22.1) - parser (3.1.2.1) + parser (3.1.3.0) ast (~> 2.4.1) pony (1.13.1) mail (>= 2.0) @@ -120,6 +133,7 @@ GEM pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) + public_suffix (5.0.1) rack (1.6.13) rack-test (0.8.3) rack (>= 1.0, < 3) @@ -140,7 +154,7 @@ GEM rexml (3.2.5) rsolr (1.1.2) builder (>= 2.1.2) - rubocop (1.39.0) + rubocop (1.40.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.1.2.1) @@ -150,7 +164,7 @@ GEM rubocop-ast (>= 1.23.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.23.0) + rubocop-ast (1.24.0) parser (>= 3.1.1.0) ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) @@ -159,6 +173,9 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) systemu (2.6.5) @@ -169,6 +186,7 @@ GEM eventmachine (~> 1.0, >= 1.0.4) rack (>= 1, < 3) thread_safe (0.3.6) + timeout (0.3.1) tzinfo (0.3.61) unf (0.1.4) unf_ext @@ -182,7 +200,7 @@ PLATFORMS DEPENDENCIES activesupport (~> 4) - addressable (= 2.3.5) + addressable (~> 2.8) bcrypt (~> 3.0) cube-ruby email_spec @@ -205,9 +223,10 @@ DEPENDENCIES rubocop rubyzip (~> 1.0) simplecov + simplecov-cobertura sparql-client! test-unit-minitest thin BUNDLED WITH - 2.3.14 + 2.3.15 diff --git a/config/config.rb.sample b/config/config.rb.sample index 6956d9cf5..7b8d3ef23 100644 --- a/config/config.rb.sample +++ b/config/config.rb.sample @@ -15,9 +15,9 @@ LinkedData.config do |config| config.purl_password = "" config.purl_maintainers = "" config.purl_target_url_prefix = "http://bioportal.bioontology.org" - Goo.configure do |conf| + Goo.configure do |conf| conf.main_languages = ['en'] - end + end end #sometimes tmp by default cannot allocate large files diff --git a/config/config.test.rb b/config/config.test.rb index 00e169da9..fed009e38 100644 --- a/config/config.test.rb +++ b/config/config.test.rb @@ -1,23 +1,35 @@ -LinkedData.config do |config| - config.goo_port = 9000 - config.goo_host = "localhost" - config.search_server_url = "http://localhost:8983/solr/term_search_core1" - config.property_search_server_url = "http://localhost:8983/solr/prop_search_core1" - config.repository_folder = "./test/data/ontology_files/repo" - config.rest_url_prefix = "http://data.bioontology.org/" - config.enable_security = false - config.java_max_heap_size = '10240M' - #PURL server config parameters +### +# This file is designed for use in docker based unit testing +# +# All the defaults are set in +# https://github.com/ncbo/ontologies_linked_data/blob/master/lib/ontologies_linked_data/config/config.rb +### - config.enable_purl = false - config.purl_host = "purl.bioontology.org" - config.purl_port = 80 - config.purl_username = "" - config.purl_password = "" - config.purl_maintainers = "" - config.purl_target_url_prefix = "http://bioportal.bioontology.org" +GOO_BACKEND_NAME = ENV.include?("GOO_BACKEND_NAME") ? ENV["GOO_BACKEND_NAME"] : "4store" +GOO_PATH_QUERY = ENV.include?("GOO_PATH_QUERY") ? ENV["GOO_PATH_QUERY"] : "/sparql/" +GOO_PATH_DATA = ENV.include?("GOO_PATH_DATA") ? ENV["GOO_PATH_DATA"] : "/data/" +GOO_PATH_UPDATE = ENV.include?("GOO_PATH_UPDATE") ? ENV["GOO_PATH_UPDATE"] : "/update/" +GOO_PORT = ENV.include?("GOO_PORT") ? ENV["GOO_PORT"] : 9000 +GOO_HOST = ENV.include?("GOO_HOST") ? ENV["GOO_HOST"] : "localhost" +REDIS_HOST = ENV.include?("REDIS_HOST") ? ENV["REDIS_HOST"] : "localhost" +REDIS_PORT = ENV.include?("REDIS_PORT") ? ENV["REDIS_PORT"] : 6379 +SOLR_TERM_SEARCH_URL = ENV.include?("SOLR_TERM_SEARCH_URL") ? ENV["SOLR_TERM_SEARCH_URL"] : "http://localhost:8983/solr/term_search_core1" +SOLR_PROP_SEARCH_URL = ENV.include?("SOLR_PROP_SEARCH_URL") ? ENV["SOLR_PROP_SEARCH_URL"] : "http://localhost:8983/solr/prop_search_core1" - Goo.configure do |conf| - conf.main_languages = ['en'] - end +LinkedData.config do |config| + config.goo_backend_name = GOO_BACKEND_NAME.to_s + config.goo_host = GOO_HOST.to_s + config.goo_port = GOO_PORT.to_i + config.goo_path_query = GOO_PATH_QUERY.to_s + config.goo_path_data = GOO_PATH_DATA.to_s + config.goo_path_update = GOO_PATH_UPDATE.to_s + config.goo_redis_host = REDIS_HOST.to_s + config.goo_redis_port = REDIS_PORT.to_i + config.http_redis_host = REDIS_HOST.to_s + config.http_redis_port = REDIS_PORT.to_i + config.ontology_analytics_redis_host = REDIS_HOST.to_s + config.ontology_analytics_redis_port = REDIS_PORT.to_i + config.search_server_url = SOLR_TERM_SEARCH_URL.to_s + config.property_search_server_url = SOLR_PROP_SEARCH_URL.to_s + # config.enable_notifications = false end \ No newline at end of file diff --git a/dip.yml b/dip.yml new file mode 100644 index 000000000..70dc642b2 --- /dev/null +++ b/dip.yml @@ -0,0 +1,56 @@ +version: '7.1' + +# Define default environment variables to pass +# to Docker Compose +#environment: +# RAILS_ENV: development + +compose: + files: + - .docker-compose.yml + project_name: ontologies_linked_data + +interaction: + # This command spins up a ontologies_api container with the required dependencies (solr, 4store, etc), + # and opens a terminal within it. + runner: + description: Open a Bash shell within a ontologies_api container (with dependencies up) + service: ruby + command: /bin/bash + + # Run a Rails container without any dependent services (useful for non-Rails scripts) + bash: + description: Run an arbitrary script within a container (or open a shell without deps) + service: ruby + command: /bin/bash + compose_run_options: [ no-deps ] + + # A shortcut to run Bundler commands + bundle: + description: Run Bundler commands + service: ruby + command: bundle + compose_run_options: [ no-deps ] + + # A shortcut to run unit tests + test: + description: Run minitest unit tests + service: ruby + command: bundle exec rake test + + test-ag: + description: Run minitest unit tests + service: ruby-ag + command: bundle exec rake test + + + 'redis-cli': + description: Run Redis console + service: redis-ut + command: redis-cli -h redis-ut + +#provision: + #- dip compose down --volumes + #- dip compose up -d solr 4store + #- dip bundle install + #- dip bash -c bin/setup diff --git a/docker-compose.yml b/docker-compose.yml index 69e11783c..a44b58187 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,50 +1,109 @@ -version: '3' +x-app: &app + build: + context: . + args: + RUBY_VERSION: '2.7' + # Increase the version number in the image tag every time Dockerfile or its arguments is changed + image: ontologies_ld-dev:0.0.2 + environment: &env + # default bundle config resolves to /usr/local/bundle/config inside of the container + # we are setting it to local app directory if we need to use 'bundle config local' + BUNDLE_APP_CONFIG: /srv/ontoportal/ontologies_api/.bundle + BUNDLE_PATH: /srv/ontoportal/bundle + COVERAGE: 'true' # enable simplecov code coverage + REDIS_HOST: redis-ut + REDIS_PORT: 6379 + SOLR_TERM_SEARCH_URL: http://solr-ut:8983/solr/term_search_core1 + SOLR_PROP_SEARCH_URL: http://solr-ut:8983/solr/prop_search_core1 + stdin_open: true + tty: true + command: /bin/bash + volumes: + # bundle volume for hosting gems installed by bundle; it speeds up gem install in local development + - bundle:/srv/ontoportal/bundle + - .:/srv/ontoportal/ontologies_linked_data + # mount directory containing development version of the gems if you need to use 'bundle config local' + #- /Users/alexskr/ontoportal:/Users/alexskr/ontoportal + depends_on: + - solr-ut + - redis-ut services: - unit-test: - # volumes: - # - .:/srv/ontoportal/ontologies_linked_data - build: . - #command: "bundle exec rake test TESTOPTS='-v' TEST='./test/parser/test_owl_api_command.rb'" + # environment wtih 4store backend + ruby: + <<: *app environment: - - GOO_BACKEND_NAME=4store - - GOO_PORT=9000 - - GOO_HOST=4store - - GOO_PATH_QUERY=/sparql/ - - GOO_PATH_DATA=/data/ - - GOO_PATH_UPDATE=/update/ - - OVERRIDE_CONNECT_GOO=true - - REDIS_HOST=redis - - REDIS_PORT=6379 - - SOLR_HOST=solr - command: "bundle exec rake test TESTOPTS='-v'" - depends_on: - - solr - - redis + <<: *env + GOO_BACKEND_NAME: 4store + GOO_PORT: 9000 + GOO_HOST: 4store-ut + GOO_PATH_QUERY: /sparql/ + GOO_PATH_DATA: /data/ + GOO_PATH_UPDATE: /update/ + profiles: - 4store + depends_on: + - solr-ut + - redis-ut + - 4store-ut - redis: + # environment with AllegroGraph backend + ruby-agraph: + <<: *app + environment: + <<: *env + GOO_BACKEND_NAME: ag + GOO_PORT: 10035 + GOO_HOST: agraph-ut + GOO_PATH_QUERY: /repositories/bioportal_test + GOO_PATH_DATA: /repositories/bioportal_test/statements + GOO_PATH_UPDATE: /repositories/bioportal_test/statements + profiles: + - agraph + depends_on: + - solr-ut + - redis-ut + - agraph-ut + + redis-ut: image: redis - 4store: + 4store-ut: image: bde2020/4store - ports: - - "9000:9000" command: > bash -c "4s-backend-setup --segments 4 ontoportal_kb && 4s-backend ontoportal_kb && 4s-httpd -D -s-1 -p 9000 ontoportal_kb" + profiles: + - 4store - solr: - image: solr:8.8 + solr-ut: + image: solr:8 volumes: - ./test/solr/configsets:/configsets:ro - ports: - - "8983:8983" + #ports: + # - "8983:8983" command: > bash -c "precreate-core term_search_core1 /configsets/term_search && precreate-core prop_search_core1 /configsets/property_search && solr-foreground" -# mgrep: -# image: ontoportal/mgrep-ncbo:0.1 + agraph-ut: + image: franzinc/agraph:v7.3.0 + environment: + - AGRAPH_SUPER_USER=test + - AGRAPH_SUPER_PASSWORD=xyzzy + shm_size: 1g + # ports: + # - 10035:10035 + command: > + bash -c "/agraph/bin/agraph-control --config /agraph/etc/agraph.cfg start + ; agtool repos create bioportal_test + ; agtool users add anonymous + ; agtool users grant anonymous root:bioportal_test:rw + ; tail -f /agraph/data/agraph.log" + profiles: + - agraph + +volumes: + bundle: diff --git a/lib/ontologies_linked_data/config/config.rb b/lib/ontologies_linked_data/config/config.rb index 488197609..95d1409e9 100644 --- a/lib/ontologies_linked_data/config/config.rb +++ b/lib/ontologies_linked_data/config/config.rb @@ -198,8 +198,8 @@ def goo_namespaces conf.add_namespace(:dcterms, RDF::Vocabulary.new("http://purl.org/dc/terms/")) conf.add_namespace(:uneskos, RDF::Vocabulary.new("http://purl.org/umu/uneskos#")) + conf.id_prefix = DEFAULT_PREFIX - conf.pluralize_models(true) end end diff --git a/run-unit-tests.sh b/run-unit-tests.sh index ec8824981..10dc3f01a 100755 --- a/run-unit-tests.sh +++ b/run-unit-tests.sh @@ -1,11 +1,17 @@ #!/bin/bash # sample script to run unit tests with docker -#generate solr configsets +#DC='docker-compose --profile 4store' +DC='docker-compose' + +# unit test expects config file even though all settings are set via env vars. +[ -f config/config.rb ] || cp config/config.rb.sample config/config.rb + +# generate solr configsets for solr container test/solr/generate_ncbo_configsets.sh -# build docker env -docker-compose build -# start up all containers and exit with exit code from unit-test container which runs unit tests -docker-compose up --exit-code-from unit-test -#docker-compose run --rm ont_ld bundle exec rake test TESTOPTS='-v' +# build docker containers +#$DC up --build -d +#$DC run --rm ruby wait-for-it solr-ut:8983 -- bundle exec rake test TESTOPTS='-v' TEST='./test/models/test_mappings.rb' +$DC run --rm ruby wait-for-it solr-ut:8983 -- bundle exec rake test TESTOPTS='-v' +#$DC down diff --git a/test/docker-compose.yml b/test/docker-compose.yml new file mode 100644 index 000000000..c9d11f4f3 --- /dev/null +++ b/test/docker-compose.yml @@ -0,0 +1,42 @@ +version: '3' + +services: + ld-unit-test: + build: ../. + environment: + - OVERRIDE_CONNECT_GOO=true + - GOO_BACKEND_NAME=4store + - GOO_PORT=9000 + - GOO_HOST=4store-ut + - GOO_PATH_QUERY=/sparql/ + - GOO_PATH_DATA=/data/ + - GOO_PATH_UPDATE=/update/ + - REDIS_HOST=redis-ut + - REDIS_PORT=6379 + - SOLR_HOST=ld-solr-ut + command: "rake test TESTOPTS='-v'" + depends_on: + - ld-solr-ut + - redis-ut + - 4store-ut + + redis-ut: + image: redis + + 4store-ut: + image: bde2020/4store + command: > + bash -c "4s-backend-setup --segments 4 ontoportal_kb + && 4s-backend ontoportal_kb + && 4s-httpd -D -s-1 -p 9000 ontoportal_kb" + + ld-solr-ut: + image: solr:8 + volumes: + - ./solr/configsets:/configsets:ro + #ports: + # - "8983:8983" + command: > + bash -c "precreate-core term_search_core1 /configsets/term_search + && precreate-core prop_search_core1 /configsets/property_search + && solr-foreground" diff --git a/test/parser/test_owl_api_command.rb b/test/parser/test_owl_api_command.rb index 945d48221..bafbe8984 100644 --- a/test/parser/test_owl_api_command.rb +++ b/test/parser/test_owl_api_command.rb @@ -1,12 +1,11 @@ require_relative "../test_case" -require 'logger' +require "logger" class TestOWLApi < LinkedData::TestCase - def test_command_owl_api_single_file return if ENV["SKIP_PARSING"] - output_repo = "test/data/ontology_files/repo/bro/10/output" + output_repo = "test/data/ontology_files/repo/bro/10/output" input_file = "test/data/ontology_files/BRO_v3.2.owl" begin tmp_log = Logger.new(TestLogFile.new) @@ -16,7 +15,7 @@ def test_command_owl_api_single_file raise e end - owlapi = LinkedData::Parser::OWLAPICommand.new(input_file,output_repo) + owlapi = LinkedData::Parser::OWLAPICommand.new(input_file, output_repo) owlapi.parse assert(File.exist?(output_repo)) assert(File.exist?(input_file)) @@ -26,42 +25,28 @@ def test_command_owl_api_single_file def test_command_KO_output return if ENV["SKIP_PARSING"] - output_repo = "/var/log/xxxxx" + # raise error when creatting a directory on a read only file system + output_repo = "/sys/cant_create_such_dir_on_a_read_only_file_system" input_file = "test/data/ontology_files/" - owlapi = LinkedData::Parser::OWLAPICommand.new(input_file,output_repo) - begin - owlapi.parse - assert(false) - rescue LinkedData::Parser::ParserException => e - assert(e.kind_of? LinkedData::Parser::MkdirException) - end + owlapi = LinkedData::Parser::OWLAPICommand.new(input_file, output_repo) + assert_raises(LinkedData::Parser::MkdirException) { owlapi.parse } end + def test_command_KO_input return if ENV["SKIP_PARSING"] - output_repo = "/var/log/xxxxx" + output_repo = "/var/log/xxxxx" input_file = "test/data/ontology_files/aaaa" - owlapi = LinkedData::Parser::OWLAPICommand.new(input_file,output_repo) - begin - owlapi.parse - assert(false) - rescue LinkedData::Parser::ParserException => e - assert(e.kind_of? LinkedData::Parser::InputFileNotFoundError) - end + owlapi = LinkedData::Parser::OWLAPICommand.new(input_file, output_repo) + assert_raises(LinkedData::Parser::InputFileNotFoundError) { owlapi.parse } end def test_command_KO_master return if ENV["SKIP_PARSING"] - output_repo = "/var/log/xxxxx" + output_repo = "/var/log/xxxxx" input_file = "test/data/ontology_files/radlex_owl_v3.0.1.zip" - owlapi = LinkedData::Parser::OWLAPICommand.new(input_file,output_repo) - begin - owlapi.parse - assert(false) - rescue LinkedData::Parser::ParserException => e - assert(e.kind_of? LinkedData::Parser::MasterFileMissingException) - end + owlapi = LinkedData::Parser::OWLAPICommand.new(input_file, output_repo) + assert_raises(LinkedData::Parser::MasterFileMissingException) { owlapi.parse } end - end diff --git a/test/run_tests.rb b/test/run_tests.rb index 16f41b8c2..3041bf11f 100644 --- a/test/run_tests.rb +++ b/test/run_tests.rb @@ -13,7 +13,10 @@ JOB_NAME = 'bioportal' DEF_VERSION = 'latest' REDIS_HOST = 'localhost' -REDIS_PORT = 6379 +DEF_REDIS_PORT = 6379 +DEF_MGREP_VERSION = '0.1' +MGREP_HOST = 'localhost' +DEF_MGREP_PORT = 55556 @options = nil def main @@ -22,21 +25,21 @@ def main if @options[:backend] == BACKEND_AG @options[:backend_port] = DEF_AG_PORT if @options[:backend_port] <= 0 - puts "\nUsing AllegroGraph #{@options[:version]} on port #{@options[:backend_port]}...\n\n" - pull_cmd = "docker pull franzinc/agraph:#{@options[:version]}" + puts "\nUsing AllegroGraph #{@options[:backend_version]} on port #{@options[:backend_port]}...\n\n" + pull_cmd = "docker pull franzinc/agraph:#{@options[:backend_version]}" elsif @options[:backend] == BACKEND_4STORE @options[:backend_port] = DEF_4STORE_PORT if @options[:backend_port] <= 0 - puts "\nUsing 4store #{@options[:version]} on port #{@options[:backend_port]}...\n\n" - pull_cmd = "docker pull bde2020/4store:#{@options[:version]}" + puts "\nUsing 4store #{@options[:backend_version]} on port #{@options[:backend_port]}...\n\n" + pull_cmd = "docker pull bde2020/4store:#{@options[:backend_version]}" end pulled = system("#{pull_cmd}") - abort("Unable to pull the #{@options[:backend]} Docker image: #{@options[:version]}. Aborting...\n") unless pulled + abort("Unable to pull the #{@options[:backend]} Docker image: #{@options[:backend_version]}. Aborting...\n") unless pulled resp = true begin if @options[:backend] == BACKEND_AG - container_name = "#{@options[:backend]}-#{@options[:version]}-#{@options[:backend_port]}" - run_cmd = "docker run -d --rm -e AGRAPH_SUPER_USER=#{AG_USERNAME} -e AGRAPH_SUPER_PASSWORD=#{AG_PASSWORD} -p #{@options[:backend_port]}:#{DEF_AG_PORT} --shm-size 1g --name #{container_name} franzinc/agraph:#{@options[:version]}" + container_name = "#{@options[:backend]}-#{@options[:backend_version]}-#{@options[:backend_port]}" + run_cmd = "docker run -d --rm -e AGRAPH_SUPER_USER=#{AG_USERNAME} -e AGRAPH_SUPER_PASSWORD=#{AG_PASSWORD} -p #{@options[:backend_port]}:#{DEF_AG_PORT} --shm-size 1g --name #{container_name} franzinc/agraph:#{@options[:backend_version]}" puts "\n#{run_cmd}\n\n" system("#{run_cmd}") sleep(5) @@ -55,10 +58,10 @@ def main ag_rest_call('/users/anonymous', 'PUT') ag_rest_call("/users/anonymous/access?read=true&write=true&repositories=#{JOB_NAME}", 'PUT') elsif @options[:backend] == BACKEND_4STORE - run_cmd = "docker run -d --rm -p #{@options[:backend_port]}:#{@options[:backend_port]} --name #{@options[:backend]}-#{@options[:version]}-#{@options[:backend_port]} bde2020/4store:#{@options[:version]}" - exec_cmd1 = "docker exec #{@options[:backend]}-#{@options[:version]}-#{@options[:backend_port]} 4s-backend-setup --segments 4 #{JOB_NAME}" - exec_cmd2 = "docker exec #{@options[:backend]}-#{@options[:version]}-#{@options[:backend_port]} 4s-admin start-stores #{JOB_NAME}" - exec_cmd3 = "docker exec #{@options[:backend]}-#{@options[:version]}-#{@options[:backend_port]} 4s-httpd -s-1 -p#{@options[:backend_port]} #{JOB_NAME}" + run_cmd = "docker run -d --rm -p #{@options[:backend_port]}:#{@options[:backend_port]} --name #{@options[:backend]}-#{@options[:backend_version]}-#{@options[:backend_port]} bde2020/4store:#{@options[:backend_version]}" + exec_cmd1 = "docker exec #{@options[:backend]}-#{@options[:backend_version]}-#{@options[:backend_port]} 4s-backend-setup --segments 4 #{JOB_NAME}" + exec_cmd2 = "docker exec #{@options[:backend]}-#{@options[:backend_version]}-#{@options[:backend_port]} 4s-admin start-stores #{JOB_NAME}" + exec_cmd3 = "docker exec #{@options[:backend]}-#{@options[:backend_version]}-#{@options[:backend_port]} 4s-httpd -s-1 -p#{@options[:backend_port]} #{JOB_NAME}" puts "\n#{run_cmd}\n\n" system("#{run_cmd}") system("#{exec_cmd1}") @@ -68,10 +71,23 @@ def main sleep(1) end - # start redis container - puts "starting redis container on port #{@options[:redis_port]}" - run_cmd4 = "docker run -p #{@options[:redis_port]}:6379 --name redis-#{@options[:redis_port]} -d redis" - system("#{run_cmd4}") + # pull and start redis container + puts "\nUsing redis #{@options[:redis_version]} on port #{@options[:redis_port]}...\n\n" + pull_cmd = "docker pull redis:#{@options[:redis_version]}" + pulled = system("#{pull_cmd}") + abort("Unable to pull redis Docker image: #{@options[:redis_version]}. Aborting...\n") unless pulled + puts "Starting redis container on port #{@options[:redis_port]}" + run_cmd = "docker run -d --rm -p #{@options[:redis_port]}:6379 --name redis-#{@options[:redis_version]}-#{@options[:redis_port]} redis:#{@options[:redis_version]}" + system("#{run_cmd}") + + # pull and start NCBO mgrep container + puts "\nUsing NCBO mgrep #{@options[:mgrep_version]} on port #{@options[:mgrep_port]}...\n\n" + pull_cmd = "docker pull ontoportal/mgrep-ncbo:#{@options[:mgrep_version]}" + pulled = system("#{pull_cmd}") + abort("Unable to pull NCBO mgrep Docker image: #{@options[:mgrep_version]}. Aborting...\n") unless pulled + puts "Starting NCBO mgrep container on port #{@options[:mgrep_port]}" + run_cmd = "docker run -d --rm -p #{@options[:mgrep_port]}:55555 --name ncbo-mgrep-#{@options[:mgrep_version]} ontoportal/mgrep-ncbo:#{@options[:mgrep_version]}" + system("#{run_cmd}") test_cmd = 'bundle exec rake test' test_cmd << " TEST=\"#{@options[:filename]}\"" unless @options[:filename].empty? @@ -79,13 +95,16 @@ def main test_cmd.gsub!(/"$/, " --name=#{@options[:test]}\"") unless @options[:test].empty? puts "\n#{test_cmd}\n\n" - ENV['OVERRIDE_CONNECT_GOO'] = 'true' + ENV['OVERRIDE_CONFIG'] = 'true' ENV['GOO_HOST'] = GOO_HOST ENV['GOO_PORT'] = @options[:backend_port].to_s ENV['GOO_BACKEND_NAME'] = @options[:backend] - ENV['GOO_REDIS_PORT'] = @options[:redis_port].to_s ENV['REDIS_HOST'] = REDIS_HOST - ENV['HTTP_REDIS_PORT'] = @options[:redis_port].to_s + ENV['REDIS_PORT'] = @options[:redis_port].to_s + ENV['ANNOTATOR_REDIS_HOST'] = REDIS_HOST + ENV['ANNOTATOR_REDIS_PORT'] = @options[:redis_port].to_s + ENV['MGREP_HOST'] = MGREP_HOST + ENV['MGREP_PORT'] = @options[:mgrep_port].to_s if @options[:backend] == BACKEND_AG ENV['GOO_PATH_QUERY'] = "/repositories/#{JOB_NAME}" @@ -104,20 +123,24 @@ def main resp = false end - img_name = "#{@options[:backend]}-#{@options[:version]}-#{@options[:backend_port]}" - img_name_redis = "redis-#{@options[:redis_port]}" - rm_cmd = "docker rm -f -v #{img_name}; docker rm -f -v #{img_name_redis}" + img_name = "#{@options[:backend]}-#{@options[:backend_version]}-#{@options[:backend_port]}" + img_name_redis = "redis-#{@options[:redis_version]}-#{@options[:redis_port]}" + img_name_mgrep = "ncbo-mgrep-#{@options[:mgrep_version]}" + + rm_cmd = "docker rm -f -v #{img_name}; docker rm -f -v #{img_name_redis}; docker rm -f -v #{img_name_mgrep};" puts "\nRemoving Backend Docker Image: #{img_name}\n" - puts "\nRemoving Redis Docker Image: #{img_name_redis}\n" + puts "Removing Redis Docker Image: #{img_name_redis}\n" + puts "Removing NCBO mgrep Docker Image: #{img_name_mgrep}\n" %x(#{rm_cmd}) exit(1) unless resp end def ag_rest_call(path, method) data = {} + url = "http://#{GOO_HOST}:#{@options[:backend_port]}#{path}" request = RestClient::Request.new( :method => method, - :url => "http://#{GOO_HOST}:#{@options[:backend_port]}#{path}", + :url => url, :user => AG_USERNAME, :password => AG_PASSWORD, :headers => { :accept => :json, :content_type => :json } @@ -130,11 +153,14 @@ def parse_options backends = [BACKEND_4STORE.downcase, BACKEND_AG.downcase] options = { backend: BACKEND_4STORE, - version: DEF_VERSION, + backend_version: DEF_VERSION, filename: '', test: '', backend_port: -1, - redis_port: 6379 + redis_port: DEF_REDIS_PORT, + redis_version: DEF_VERSION, + mgrep_port: DEF_MGREP_PORT, + mgrep_version: DEF_MGREP_VERSION } opt_parser = OptionParser.new do |opts| opts.banner = "\n\s\s\s\s\sUsage: bundle exec ruby #{File.basename(__FILE__)} [options]\n\n" @@ -143,18 +169,30 @@ def parse_options options[:backend] = bn.strip.downcase end - opts.on('-v', '--version VERSION', "An optional version of the backend server to test against. Default: '#{DEF_VERSION}'\n\t\t\t\t\s\s\s\s\sMust be a valid image tag published on repositories:\n\t\t\t\t\thttps://hub.docker.com/r/bde2020/4store/tags for #{BACKEND_4STORE}\n\t\t\t\t\thttps://hub.docker.com/r/franzinc/agraph/tags for #{BACKEND_AG}") do |ver| - options[:version] = ver.strip.downcase + opts.on('-v', '--backend_version VERSION', "An optional version of the backend server to test against. Default: '#{DEF_VERSION}'\n\t\t\t\t\s\s\s\s\sMust be a valid image tag published on repositories:\n\t\t\t\t\thttps://hub.docker.com/r/bde2020/4store/tags for #{BACKEND_4STORE}\n\t\t\t\t\thttps://hub.docker.com/r/franzinc/agraph/tags for #{BACKEND_AG}") do |ver| + options[:backend_version] = ver.strip.downcase end opts.on('-p', '--backend_port PORT', "An optional port number of the backend server to test against. Default: #{DEF_4STORE_PORT} for #{BACKEND_4STORE}, #{DEF_AG_PORT} for #{BACKEND_AG}\n\t\t\t\t\s\s\s\s\sMust be a valid integer value") do |backend_port| options[:backend_port] = backend_port.strip.to_i end - opts.on('-r', '--redis_port PORT', "An optional port number of the Redis server. Default: #{REDIS_PORT} \n\t\t\t\t\s\s\s\s\sMust be a valid integer value") do |redis_port| + opts.on('--redis_port PORT', "An optional port number of the Redis server. Default: #{DEF_REDIS_PORT} \n\t\t\t\t\s\s\s\s\sMust be a valid integer value") do |redis_port| options[:redis_port] = redis_port.strip.to_i end + opts.on('--redis_version VERSION', "An optional version of the Redis server to pull. Default: #{DEF_VERSION} \n\t\t\t\t\s\s\s\s\sMust be a valid image tag published on repositories:\n\t\t\t\t\thttps://hub.docker.com/_/redis?tab=tags") do |redis_version| + options[:redis_version] = redis_version.strip.downcase + end + + opts.on('--mgrep_port PORT', "An optional port number of the NCBO mgrep server. Default: #{DEF_MGREP_PORT} \n\t\t\t\t\s\s\s\s\sMust be a valid integer value") do |mgrep_port| + options[:mgrep_port] = mgrep_port.strip.to_i + end + + opts.on('--mgrep_version VERSION', "An optional version of the NCBO mgrep server to pull. Default: #{DEF_MGREP_VERSION} \n\t\t\t\t\s\s\s\s\sMust be a valid image tag published on repositories:\n\t\t\t\t\thttps://hub.docker.com/r/ontoportal/mgrep-ncbo/tags") do |mgrep_version| + options[:mgrep_version] = mgrep_version.strip.downcase + end + opts.on('-f', '--file TEST_FILE_PATH', "An optional path to a test file to be run. Default: all test files") do |f| options[:filename] = f.strip end @@ -169,9 +207,9 @@ def parse_options end end opt_parser.parse! - options[:version] = "v#{options[:version]}" if options[:backend] == BACKEND_AG && - options[:version] != DEF_VERSION && - options[:version][0, 1].downcase != 'v' + options[:backend_version] = "v#{options[:backend_version]}" if options[:backend] == BACKEND_AG && + options[:backend_version] != DEF_VERSION && + options[:backend_version][0, 1].downcase != 'v' unless backends.include?(options[:backend].downcase) puts "\n#{options[:backend]} is not a valid backend. The valid backends are: [#{backends.join('|')}]" diff --git a/test/solr/generate_ncbo_configsets.sh b/test/solr/generate_ncbo_configsets.sh index 2276576ae..7b4281f7c 100755 --- a/test/solr/generate_ncbo_configsets.sh +++ b/test/solr/generate_ncbo_configsets.sh @@ -2,18 +2,23 @@ # generates solr configsets by merging _default configset with config files in config/solr # _default is copied from sorl distribuion solr-8.10.1/server/solr/configsets/_default/ +#cd solr/configsets +ld_config='config/solr' +configsets='test/solr/configsets' +[ -d ${configsets}/property_search ] && rm -Rf ${configsets}/property_search +[ -d ${configsets}/term_search ] && rm -Rf ${configsets}/term_search +if [[ ! -d ${ld_config}/property_search ]]; then + echo 'cant find ld solr config sets' + exit 1 +fi +if [[ ! -d ${configsets}/_default/conf ]]; then + echo 'cant find default solr configset' + exit 1 +fi +mkdir -p ${configsets}/property_search/conf +mkdir -p ${configsets}/term_search/conf +cp -a ${configsets}/_default/conf/* ${configsets}/property_search/conf/ +cp -a ${configsets}/_default/conf/* ${configsets}/term_search/conf/ +cp -a $ld_config/property_search/* ${configsets}/property_search/conf +cp -a $ld_config/term_search/* ${configsets}/term_search/conf -pushd test/solr/configsets -ld_config='../../../config/solr/' -ls -l $ld_config -pwd -[ -d property_search ] && rm -Rf property_search -[ -d term_search ] && rm -Rf property_search -[ -d $ld_config/property_search ] || echo "cant find ontologies_linked_data project" -mkdir -p property_search/conf -mkdir -p term_search/conf -cp -a _default/conf/* property_search/conf/ -cp -a _default/conf/* term_search/conf/ -cp -a $ld_config/property_search/* property_search/conf -cp -a $ld_config/term_search/* term_search/conf -popd diff --git a/test/test_case.rb b/test/test_case.rb index 403237c3b..5ae5abd80 100644 --- a/test/test_case.rb +++ b/test/test_case.rb @@ -1,20 +1,27 @@ -# Start simplecov if this is a coverage task -if ENV["COVERAGE"].eql?("true") +# Start simplecov if this is a coverage task or if it is run in the CI pipeline +if ENV['COVERAGE'] == 'true' || ENV['CI'] == 'true' require 'simplecov' + require 'simplecov-cobertura' + # https://github.com/codecov/ruby-standard-2 + # Generate HTML and Cobertura reports which can be consumed by codecov uploader + SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new([ + SimpleCov::Formatter::HTMLFormatter, + SimpleCov::Formatter::CoberturaFormatter + ]) SimpleCov.start do - add_filter "/test/" - add_filter "app.rb" - add_filter "init.rb" - add_filter "/config/" + add_filter '/test/' + add_filter 'app.rb' + add_filter 'init.rb' + add_filter '/config/' end end -require_relative "test_log_file" -require_relative "../lib/ontologies_linked_data" +require_relative 'test_log_file' +require_relative '../lib/ontologies_linked_data' - -if ENV['OVERRIDE_CONNECT_GOO'] == 'true' +if ENV['OVERRIDE_CONFIG'] == 'true' SOLR_HOST = ENV.include?('SOLR_HOST') ? ENV['SOLR_HOST'] : 'localhost' + LinkedData.config do |config| config.goo_backend_name = ENV['GOO_BACKEND_NAME'] config.goo_port = ENV['GOO_PORT'].to_i @@ -22,21 +29,21 @@ config.goo_path_query = ENV['GOO_PATH_QUERY'] config.goo_path_data = ENV['GOO_PATH_DATA'] config.goo_path_update = ENV['GOO_PATH_UPDATE'] - config.goo_redis_port = ENV['REDIS_PORT'] config.goo_redis_host = ENV['REDIS_HOST'] - config.http_redis_port = ENV['REDIS_PORT'] + config.goo_redis_port = ENV['REDIS_PORT'] config.http_redis_host = ENV['REDIS_HOST'] + config.http_redis_port = ENV['REDIS_PORT'] config.search_server_url = "http://#{SOLR_HOST}:8983/solr/term_search_core1" config.property_search_server_url = "http://#{SOLR_HOST}:8983/solr/prop_search_core1" end end -require_relative "../config/config.rb" +require_relative '../config/config' require 'minitest/unit' MiniTest::Unit.autorun # Check to make sure you want to run if not pointed at localhost -safe_hosts = Regexp.new(/localhost|4store|redis|solr|ncbo-dev*|ncbo-unittest*/) +safe_hosts = Regexp.new(/localhost|-ut|ncbo-dev*|ncbo-unittest*/) def safe_redis_hosts?(sh) return [LinkedData.settings.http_redis_host, LinkedData.settings.goo_redis_host].select { |x| @@ -44,11 +51,11 @@ def safe_redis_hosts?(sh) }.length == 2 end unless LinkedData.settings.goo_host.match(safe_hosts) && - LinkedData.settings.search_server_url.match(safe_hosts) && - safe_redis_hosts?(safe_hosts) - print "\n\n================================== WARNING ==================================\n" - print "** TESTS CAN BE DESTRUCTIVE -- YOU ARE POINTING TO A POTENTIAL PRODUCTION/STAGE SERVER **\n" - print "Servers:\n" + LinkedData.settings.search_server_url.match(safe_hosts) && + safe_redis_hosts?(safe_hosts) + print '\n\n================================== WARNING ==================================\n' + print '** TESTS CAN BE DESTRUCTIVE -- YOU ARE POINTING TO A POTENTIAL PRODUCTION/STAGE SERVER **\n' + print 'Servers:\n' print "triplestore -- #{LinkedData.settings.goo_host}\n" print "search -- #{LinkedData.settings.search_server_url}\n" print "redis http -- #{LinkedData.settings.http_redis_host}:#{LinkedData.settings.http_redis_port}\n" @@ -56,10 +63,8 @@ def safe_redis_hosts?(sh) print "Type 'y' to continue: " $stdout.flush confirm = $stdin.gets - if !(confirm.strip == 'y') - abort("Canceling tests...\n\n") - end - print "Running tests..." + abort('Canceling tests...\n\n') unless confirm.strip == 'y' + print 'Running tests...' $stdout.flush end @@ -74,28 +79,24 @@ def after_suites end def _run_suites(suites, type) - begin - TestCase.backend_4s_delete - before_suites - super(suites, type) - ensure - TestCase.backend_4s_delete - after_suites - end + TestCase.backend_4s_delete + before_suites + super(suites, type) + ensure + TestCase.backend_4s_delete + after_suites end def _run_suite(suite, type) - begin - suite.before_suite if suite.respond_to?(:before_suite) - super(suite, type) - rescue Exception => e - puts e.message - puts e.backtrace.join("\n\t") - puts "Traced from:" - raise e - ensure - suite.after_suite if suite.respond_to?(:after_suite) - end + suite.before_suite if suite.respond_to?(:before_suite) + super(suite, type) + rescue Exception => e + puts e.message + puts e.backtrace.join("\n\t") + puts 'Traced from:' + raise e + ensure + suite.after_suite if suite.respond_to?(:after_suite) end end @@ -107,33 +108,33 @@ class TestCase < MiniTest::Unit::TestCase Thread.abort_on_exception = true def submission_dependent_objects(format, acronym, user_name) - #ontology format - owl = LinkedData::Models::OntologyFormat.where(:acronym => format).first + # ontology format + owl = LinkedData::Models::OntologyFormat.where(acronym: format).first assert_instance_of LinkedData::Models::OntologyFormat, owl - #ontology - users = LinkedData::Models::User.where(:username => user_name).all + # ontology + users = LinkedData::Models::User.where(username: user_name).all user = users.first if user.nil? - user = LinkedData::Models::User.new({:username => user_name}) - user.email = "a@example.org" - user.passwordHash = "XXXXX" + user = LinkedData::Models::User.new({username: user_name}) + user.email = 'a@example.org' + user.passwordHash = 'XXXXX' user.save end - ont = LinkedData::Models::Ontology.where(:acronym => acronym).all + ont = LinkedData::Models::Ontology.where(acronym: acronym).all ont = ont.first if ont.nil? - ont = LinkedData::Models::Ontology.new({:acronym => acronym}) + ont = LinkedData::Models::Ontology.new({acronym: acronym}) ont.name = "some name for #{acronym}" ont.administeredBy = [user] ont.save end contact = LinkedData::Models::Contact.new - contact.email = "xxx@example.org" - contact.name = "some name" + contact.email = 'xxx@example.org' + contact.name = 'some name' contact.save return owl, ont, user, contact end @@ -152,7 +153,7 @@ def create_ontologies_and_submissions(options = {}) ## # Retrieve ontology dependent objects def ontology_objects - LinkedData::SampleData::Ontology.ontology_objects() + LinkedData::SampleData::Ontology.ontology_objects end ## @@ -164,7 +165,7 @@ def delete_ontologies_and_submissions def delete_goo_models(gooModelArray) gooModelArray.each do |m| m.delete - assert_equal(false, m.exist?(reload=true), "Failed to delete a goo model.") + assert_equal(false, m.exist?(reload=true), 'Failed to delete a goo model.') end end @@ -176,7 +177,7 @@ def model_creator_test(model, user) # TODO: if the input argument is an instance, use the .class.new methods? m = model.is_a?(Class) ? model.new : model assert_equal(false, m.valid?, "#{m} .valid? returned true, it was expected to be invalid.") - m.creator = "test name" # string is not valid + m.creator = 'test name' # string is not valid assert_equal(false, m.valid?, "#{m} .valid? returned true, it was expected to be invalid.") assert_equal(false, m.errors[:creator].nil?) # We expect there to be errors on creator assert_instance_of(LinkedData::Models::User, user, "#{user} is not an instance of LinkedData::Models::User") @@ -190,38 +191,38 @@ def model_creator_test(model, user) # @note This method name cannot begin with 'test_' or it will be called as a test # @param [LinkedData::Models::Base] m a valid model instance with a 'created' attribute (without a value). def model_created_test(m) - assert_equal(true, m.kind_of?(LinkedData::Models::Base), "Expected kind_of?(LinkedData::Models::Base).") + assert_equal(true, m.is_a?(LinkedData::Models::Base), 'Expected is_a?(LinkedData::Models::Base).') assert_equal(true, m.valid?, "Expected valid model: #{m.errors}") m.save if m.valid? # The default value is auto-generated (during save), it should be OK. assert_instance_of(DateTime, m.created, "The 'created' attribute is not a DateTime instance.") - assert_equal(true, m.errors[:created].nil?, "#{m.errors}") + assert_equal(true, m.errors[:created].nil?, m.errors.to_s) begin - m.created = "this string should fail" + m.created = 'this string shuld fail' rescue Exception => e # in ruby 2.3+, this generates a runtime exception, so we need to handle it - assert_equal ArgumentError, e.class - assert_equal "invalid date", e.message + assert_equal Date::Error, e.class + assert_equal 'invalid date', e.message end # The value should be an XSD date time. m.created = DateTime.now assert m.valid? assert_instance_of(DateTime, m.created) - assert_equal(true, m.errors[:created].nil?, "#{m.errors}") + assert_equal(true, m.errors[:created].nil?, m.errors.to_s) end # Test the save and delete methods on a GOO model # @param [LinkedData::Models::Base] m a valid model instance that can be saved and deleted def model_lifecycle_test(m) - assert_equal(true, m.kind_of?(LinkedData::Models::Base), "Expected kind_of?(LinkedData::Models::Base).") + assert_equal(true, m.is_a?(LinkedData::Models::Base), 'Expected is_a?(LinkedData::Models::Base).') assert_equal(true, m.valid?, "Expected valid model: #{m.errors}") - assert_equal(false, m.exist?(reload=true), "Given model is already saved, expected one that is not.") + assert_equal(false, m.exist?(reload=true), 'Given model is already saved, expected one that is not.') m.save - assert_equal(true, m.exist?(reload=true), "Failed to save model.") + assert_equal(true, m.exist?(reload=true), 'Failed to save model.') m.delete - assert_equal(false, m.exist?(reload=true), "Failed to delete model.") + assert_equal(false, m.exist?(reload=true), 'Failed to delete model.') end def self.count_pattern(pattern) @@ -234,16 +235,15 @@ def self.count_pattern(pattern) end def self.backend_4s_delete - if TestCase.count_pattern("?s ?p ?o") < 400000 - Goo.sparql_update_client.update("DELETE {?s ?p ?o } WHERE { ?s ?p ?o }") - LinkedData::Models::SubmissionStatus.init_enum - LinkedData::Models::OntologyType.init_enum - LinkedData::Models::OntologyFormat.init_enum - LinkedData::Models::Users::Role.init_enum - LinkedData::Models::Users::NotificationType.init_enum - else - raise Exception, "Too many triples in KB, does not seem right to run tests" - end + raise StandardError, 'Too many triples in KB, does not seem right to run tests' unless + count_pattern('?s ?p ?o') < 400000 + + Goo.sparql_update_client.update('DELETE {?s ?p ?o } WHERE { ?s ?p ?o }') + LinkedData::Models::SubmissionStatus.init_enum + LinkedData::Models::OntologyType.init_enum + LinkedData::Models::OntologyFormat.init_enum + LinkedData::Models::Users::Role.init_enum + LinkedData::Models::Users::NotificationType.init_enum end end end From 5422b84d390b1f3ff387ce3ed62dc6331698dd50 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sat, 17 Dec 2022 19:52:55 +0100 Subject: [PATCH 62/62] fix skos test data conflict after merge --- test/data/ontology_files/efo_gwas.skos.owl | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/data/ontology_files/efo_gwas.skos.owl b/test/data/ontology_files/efo_gwas.skos.owl index 855fc1fa1..dbcba0215 100644 --- a/test/data/ontology_files/efo_gwas.skos.owl +++ b/test/data/ontology_files/efo_gwas.skos.owl @@ -4260,8 +4260,6 @@ - -

TGKX* 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