Skip to content

Commit 3980c4c

Browse files
committed
Add content provider & nodes to Course provider property
1 parent d44ccd3 commit 3980c4c

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

lib/bioschemas/course_generator.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def self.bioschemas_profile
1313
property :url, :url
1414
property :description, :description
1515
property :keywords, :keywords
16-
property :provider, -> (event) { event.host_institutions.map { |i| { '@type' => 'Organization', name: i } } }
16+
property :provider, -> (event) { provider(event) }
1717
property :inLanguage, :language
1818
property :audience, -> (event) {
1919
event.target_audience.map { |audience| { '@type' => 'Audience', 'audienceType' => audience } }

lib/bioschemas/generator.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,16 @@ def self.external_resources(resource)
136136

137137
def self.provider(resource)
138138
p = []
139+
140+
if resource.respond_to?(:host_institutions)
141+
resource.host_institutions.each do |i|
142+
p << {
143+
'@type' => 'Organization',
144+
'name' => i
145+
}
146+
end
147+
end
148+
139149
if resource.content_provider
140150
p << {
141151
'@type' => 'Organization',

test/integration/bioschemas_test.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ class BioschemasTest < ActionDispatch::IntegrationTest
7979
test 'Course/CourseInstance & Event bioschemas on show page for course event' do
8080
event = events(:course_event)
8181
event.external_resources.create!({ title: 'Cool website', url: 'https://external-resource.pizza' })
82-
url = event_url(event.id)
82+
event.node_names = ['Test Node']
83+
event.save!
84+
url = event_url(event.slug)
8385

8486
get url
8587

@@ -198,6 +200,19 @@ class BioschemasTest < ActionDispatch::IntegrationTest
198200
assert_equal 1, results.count
199201
assert_equal 'Cool website', results.first.name
200202
assert_equal 'https://external-resource.pizza', results.first.url
203+
204+
# Provider
205+
q = RDF::Query.new do
206+
pattern RDF::Query::Pattern.new(course_uri, RDF::Vocab::SCHEMA.provider, :provider_info)
207+
pattern RDF::Query::Pattern.new(:provider_info, RDF::Vocab::SCHEMA.name, :name)
208+
pattern RDF::Query::Pattern.new(:provider_info, RDF::Vocab::SCHEMA.url, :url, optional: true)
209+
end
210+
results = graph.query(q)
211+
providers = results.map { |r| [r.name, r.respond_to?(:url) ? r.url : nil] }
212+
assert_equal 3, providers.count
213+
assert_includes providers, ['ELIXIR Test Node', 'http://example.com']
214+
assert_includes providers, ['Goblet', 'http://mygoblet.org']
215+
assert_includes providers, ['University of Manchester', nil]
201216
end
202217

203218
test 'handles non-list markdown for prereqs on course event' do

0 commit comments

Comments
 (0)