Skip to content

Commit

Permalink
Feature: Add unmapped, range and domain attributes for properties end…
Browse files Browse the repository at this point in the history
…points (#89)

* implement in ontology  property endpoint the display all attributes

* add a new unit test for the ontology property display all option
  • Loading branch information
syphax-bouazzouni authored Aug 23, 2024
1 parent 67f376c commit 16fedb9
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 30 deletions.
20 changes: 10 additions & 10 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ GIT

GIT
remote: https://github.com/ontoportal-lirmm/ncbo_cron.git
revision: fabd04ef4fa37989d526fc6a7aa1e98830008dae
revision: bed0ff08408ad1241db3513992ad025a253eeef0
branch: master
specs:
ncbo_cron (0.0.1)
Expand All @@ -57,7 +57,7 @@ GIT

GIT
remote: https://github.com/ontoportal-lirmm/ontologies_linked_data.git
revision: 552fbe5faed5bb195396251066ef0e7b930939a0
revision: 9605eb44c4271c60bedda0520e85d8c3fa2513ac
branch: development
specs:
ontologies_linked_data (0.0.1)
Expand Down Expand Up @@ -129,7 +129,7 @@ GEM
capistrano (~> 3.1)
sshkit (~> 1.3)
coderay (1.1.3)
concurrent-ruby (1.3.3)
concurrent-ruby (1.3.4)
connection_pool (2.4.1)
crack (1.0.0)
bigdecimal
Expand Down Expand Up @@ -175,7 +175,7 @@ GEM
grpc (~> 1.59)
get_process_mem (0.2.7)
ffi (~> 1.0)
google-analytics-data (0.6.0)
google-analytics-data (0.6.1)
google-analytics-data-v1beta (>= 0.11, < 2.a)
google-cloud-core (~> 1.6)
google-analytics-data-v1beta (0.13.0)
Expand Down Expand Up @@ -220,7 +220,7 @@ GEM
hashdiff (1.1.1)
htmlentities (4.3.4)
http-accept (1.7.0)
http-cookie (1.0.6)
http-cookie (1.0.7)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (0.9.5)
Expand All @@ -247,7 +247,7 @@ GEM
method_source (1.1.0)
mime-types (3.5.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2024.0702)
mime-types-data (3.2024.0820)
mini_mime (1.1.5)
minitest (4.7.5)
minitest-stub_any_instance (1.0.3)
Expand Down Expand Up @@ -278,7 +278,7 @@ GEM
omni_logger (0.1.4)
logger
os (1.1.4)
parallel (1.25.1)
parallel (1.26.3)
parseconfig (1.1.2)
pony (1.13.1)
mail (>= 2.0)
Expand Down Expand Up @@ -320,14 +320,14 @@ GEM
rdf (~> 3.2)
rexml (~> 3.2)
redcarpet (3.6.0)
redis (5.2.0)
redis (5.3.0)
redis-client (>= 0.22.0)
redis-client (0.22.2)
connection_pool
redis-rack-cache (2.2.1)
rack-cache (>= 1.10, < 2)
redis-store (>= 1.6, < 2)
redis-store (1.10.0)
redis-store (1.11.0)
redis (>= 4, < 6)
representable (3.2.0)
declarative (< 0.1.0)
Expand All @@ -341,7 +341,7 @@ GEM
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
retriable (3.1.2)
rexml (3.3.4)
rexml (3.3.6)
strscan
rsolr (2.6.0)
builder (>= 2.1.2)
Expand Down
4 changes: 3 additions & 1 deletion controllers/properties_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ class PropertiesController < ApplicationController
get '/:property' do
prop = params[:property]
ont, submission = get_ontology_and_submission
p = ont.property(prop, submission, display_all_attributes: false)
bring_unmapped = bring_unmapped?(includes_param)

p = ont.property(prop, submission, display_all_attributes: bring_unmapped)
error 404, "Property #{prop} not found in ontology #{ont.id.to_s}" if p.nil?
reply 200, p
end
Expand Down
57 changes: 38 additions & 19 deletions test/controllers/test_properties_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@ class TestPropertiesController < TestCase

def self.before_suite
count, acronyms, bro = LinkedData::SampleData::Ontology.create_ontologies_and_submissions({
process_submission: true,
process_options:{process_rdf: true, extract_metadata: false},
acronym: "BROSEARCHTEST",
name: "BRO Search Test",
file_path: "./test/data/ontology_files/BRO_v3.2.owl",
ont_count: 1,
submission_count: 1,
ontology_type: "VALUE_SET_COLLECTION"
process_submission: true,
process_options: { process_rdf: true, extract_metadata: false },
acronym: "BROSEARCHTEST",
name: "BRO Search Test",
file_path: "./test/data/ontology_files/BRO_v3.2.owl",
ont_count: 1,
submission_count: 1,
ontology_type: "VALUE_SET_COLLECTION"
})

count, acronyms, mccl = LinkedData::SampleData::Ontology.create_ontologies_and_submissions({
process_submission: true,
process_options:{process_rdf: true, extract_metadata: true},
acronym: "MCCLSEARCHTEST",
name: "MCCL Search Test",
file_path: "./test/data/ontology_files/CellLine_OWL_BioPortal_v1.0.owl",
ont_count: 1,
submission_count: 1
process_submission: true,
process_options: { process_rdf: true, extract_metadata: true },
acronym: "MCCLSEARCHTEST",
name: "MCCL Search Test",
file_path: "./test/data/ontology_files/CellLine_OWL_BioPortal_v1.0.owl",
ont_count: 1,
submission_count: 1
})
@@ontologies = bro.concat(mccl)
@@acronyms = @@ontologies.map { |ont| ont.bring_remaining; ont.acronym }
Expand All @@ -47,14 +47,33 @@ def test_single_property
get "/ontologies/#{@@acronyms.first}/properties/http%3A%2F%2Fbioontology.org%2Fontologies%2FBiomedicalResourceOntology.owl%23Originator"
assert last_response.ok?
results = MultiJson.load(last_response.body)

assert results.is_a?(Hash)
assert_equal ["Originator"], results["label"]
assert_equal "http://bioontology.org/ontologies/BiomedicalResourceOntology.owl#Originator", results["@id"]
assert results.key?('range')
assert results.key?('domain')

get "/ontologies/#{@@acronyms.first}/properties/http%3A%2F%2Fbioontology.org%2Fontologies%2FBiomedicalResourceOntology.owl%23DummyProp"
assert_equal 404, last_response.status
end

def test_single_property_all_attributes
get "/ontologies/#{@@acronyms.first}/properties/http%3A%2F%2Fbioontology.org%2Fontologies%2FBiomedicalResourceOntology.owl%23Originator?display=all"
assert last_response.ok?
results = MultiJson.load(last_response.body)
assert_equal ["Originator"], results["label"]
assert results.key?('range')
assert results.key?('domain')

assert_equal results["properties"]["http://www.w3.org/2000/01/rdf-schema#comment"], ["Originator of a class"]
assert_equal results["properties"]["http://www.w3.org/2004/02/skos/core#prefLabel"], ["Originator"]
assert_equal results["properties"]["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], ["http://www.w3.org/2002/07/owl#DatatypeProperty"]
assert_equal results["properties"]["http://www.w3.org/2000/01/rdf-schema#domain"], ["http://bioontology.org/ontologies/BiomedicalResourceOntology.owl#Algorithm"]
assert_equal results["properties"]["http://www.w3.org/2000/01/rdf-schema#label"], ["Originator"]

end

def test_property_roots
get "/ontologies/#{@@acronyms.first}/properties/roots"
assert last_response.ok?
Expand All @@ -66,10 +85,10 @@ def test_property_roots
assert_includes [18, 13], opr.length
# count datatype properties
dpr = pr.select { |p| p["@type"] == "http://www.w3.org/2002/07/owl#DatatypeProperty" }
assert_includes [32,31], dpr.length
assert_includes [32, 31], dpr.length
# count annotation properties
apr = pr.select { |p| p["@type"] == "http://www.w3.org/2002/07/owl#AnnotationProperty" }
assert_includes [12,8], apr.length
assert_includes [12, 8], apr.length
# check for non-root properties

assert_empty pr.select { |p| ["http://www.w3.org/2004/02/skos/core#broaderTransitive",
Expand Down Expand Up @@ -174,7 +193,7 @@ def test_property_descendants
dn = MultiJson.load(last_response.body)
assert_equal 2, dn.length
assert_equal ["http://www.semanticweb.org/ontologies/2009/9/12/Ontology1255323704656.owl#overExpress",
"http://www.semanticweb.org/ontologies/2009/9/12/Ontology1255323704656.owl#underExpress"].sort, dn.map { |d| d["@id"] }.sort
"http://www.semanticweb.org/ontologies/2009/9/12/Ontology1255323704656.owl#underExpress"].sort, dn.map { |d| d["@id"] }.sort
end

def test_property_parents
Expand Down Expand Up @@ -207,7 +226,7 @@ def test_property_children
assert_empty ch

get "/ontologies/#{@@acronyms.first}/properties/http%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23semanticRelation"
return unless last_response.ok? #depending if owlapi import SKOS
return unless last_response.ok? # depending if owlapi import SKOS

get "/ontologies/#{@@acronyms.first}/properties/http%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23semanticRelation/children"
assert last_response.ok?
Expand Down

0 comments on commit 16fedb9

Please sign in to comment.