publish_my_data 0.0.29 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/controllers/concerns/publish_my_data/data_download.rb +22 -0
- data/app/controllers/concerns/publish_my_data/resource_rendering.rb +40 -0
- data/app/controllers/concerns/publish_my_data/sparql_processing.rb +81 -0
- data/app/controllers/publish_my_data/datasets_controller.rb +5 -23
- data/app/controllers/publish_my_data/information_resources_controller.rb +26 -4
- data/app/controllers/publish_my_data/queries_controller.rb +1 -1
- data/app/controllers/publish_my_data/resources_controller.rb +5 -9
- data/app/controllers/publish_my_data/sparql_controller.rb +1 -1
- data/app/controllers/publish_my_data/vocabularies_controller.rb +18 -0
- data/app/models/concerns/publish_my_data/all_features.rb +79 -0
- data/app/models/concerns/publish_my_data/basic_features.rb +21 -0
- data/app/models/concerns/publish_my_data/dataset_powers.rb +130 -0
- data/{lib → app/models/concerns}/publish_my_data/defined_by_ontology.rb +5 -0
- data/app/models/publish_my_data/concept.rb +2 -2
- data/app/models/publish_my_data/concept_scheme.rb +31 -3
- data/app/models/publish_my_data/dataset.rb +2 -128
- data/app/models/publish_my_data/example_resource.rb +21 -0
- data/app/models/publish_my_data/ontology.rb +35 -6
- data/app/models/publish_my_data/ontology_class.rb +3 -5
- data/app/models/publish_my_data/property.rb +3 -5
- data/app/models/publish_my_data/rdf_type.rb +1 -2
- data/app/models/publish_my_data/resource.rb +25 -96
- data/app/models/publish_my_data/theme.rb +1 -3
- data/app/models/publish_my_data/third_party/concept_scheme.rb +30 -0
- data/app/models/publish_my_data/third_party/ontology.rb +30 -0
- data/app/models/publish_my_data/vocabulary.rb +22 -0
- data/app/views/publish_my_data/classes/show.html.erb +3 -0
- data/app/views/publish_my_data/concept_schemes/_concepts.html.erb +18 -3
- data/app/views/publish_my_data/concept_schemes/show.html.erb +3 -1
- data/app/views/publish_my_data/concepts/show.html.erb +3 -3
- data/app/views/publish_my_data/datasets/show.html.erb +2 -2
- data/app/views/publish_my_data/ontologies/show.html.erb +6 -6
- data/app/views/publish_my_data/properties/show.html.erb +3 -3
- data/app/views/publish_my_data/resources/_summaries.html.erb +18 -0
- data/app/views/publish_my_data/resources/show.html.erb +3 -3
- data/config/routes.rb +8 -4
- data/lib/publish_my_data.rb +14 -5
- data/lib/publish_my_data/engine.rb +3 -0
- data/lib/publish_my_data/version.rb +1 -1
- data/spec/controllers/publish_my_data/datasets_controller_spec.rb +3 -3
- data/spec/controllers/publish_my_data/information_resources_controller_spec.rb +158 -104
- data/spec/controllers/publish_my_data/resources_controller_spec.rb +0 -71
- data/spec/controllers/publish_my_data/vocabularies_controller_spec.rb +14 -0
- data/spec/dummy/config/environments/development.rb +1 -1
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/log/test.log +208075 -0
- data/spec/factories/concept_scheme_factories.rb +17 -13
- data/spec/factories/dataset_factories.rb +2 -0
- data/spec/factories/example_resource_factories.rb +9 -0
- data/spec/factories/ontology_factories.rb +17 -12
- data/spec/factories/property_factories.rb +1 -1
- data/spec/factories/resource_factories.rb +10 -0
- data/spec/features/running_a_sparql_query_spec.rb +2 -2
- data/spec/features/viewing_resources_spec.rb +96 -0
- data/spec/{renderers → lib}/publish_my_data/renderers_spec.rb +0 -0
- data/spec/models/publish_my_data/concept_scheme_spec.rb +20 -0
- data/spec/models/publish_my_data/dataset_spec.rb +113 -11
- data/spec/models/publish_my_data/example_resource_spec.rb +18 -0
- data/spec/models/publish_my_data/ontology_spec.rb +20 -0
- data/spec/models/publish_my_data/resource_spec.rb +63 -0
- data/spec/models/publish_my_data/third_party_concept_scheme_spec.rb +16 -0
- data/spec/models/publish_my_data/third_party_ontology_spec.rb +16 -0
- data/spec/spec_helper.rb +2 -1
- data/spec/support/all_features.rb +26 -0
- data/spec/support/data_download.rb +60 -0
- data/spec/support/vocabularies.rb +150 -0
- metadata +53 -33
- data/app/views/publish_my_data/ontologies/_classes.html.erb +0 -3
- data/app/views/publish_my_data/ontologies/_properties.html.erb +0 -3
- data/config/initializers/zz_factories.rb +0 -7
- data/lib/publish_my_data/concerns.rb +0 -4
- data/lib/publish_my_data/concerns/controllers/resource.rb +0 -23
- data/lib/publish_my_data/concerns/controllers/sparql.rb +0 -86
- data/lib/publish_my_data/concerns/models/resource.rb +0 -14
- data/lib/publish_my_data/render_params.rb +0 -7
- data/lib/publish_my_data/render_params/concept_render_params.rb +0 -18
- data/lib/publish_my_data/render_params/concept_scheme_render_params.rb +0 -31
- data/lib/publish_my_data/render_params/dataset_render_params.rb +0 -32
- data/lib/publish_my_data/render_params/ontology_class_render_params.rb +0 -18
- data/lib/publish_my_data/render_params/ontology_render_params.rb +0 -41
- data/lib/publish_my_data/render_params/property_render_params.rb +0 -18
- data/lib/publish_my_data/render_params/resource_render_params.rb +0 -17
@@ -1,20 +1,22 @@
|
|
1
1
|
FactoryGirl.define do
|
2
2
|
factory :concept_scheme, class: PublishMyData::ConceptScheme do
|
3
3
|
initialize_with { new(uri,graph_uri) }
|
4
|
-
label 'My Concept Scheme'
|
4
|
+
label 'My Awesome Concept Scheme'
|
5
|
+
modified DateTime.parse('2010-07-01 12:00')
|
6
|
+
data_graph_uri "http://#{PublishMyData.local_domain}/graph/my-topic"
|
5
7
|
ignore do
|
6
|
-
uri {
|
7
|
-
graph_uri { "http://#{PublishMyData.local_domain}/
|
8
|
+
uri { PublishMyData::ConceptScheme.uri_from_slug("my-topic") }
|
9
|
+
graph_uri { "http://#{PublishMyData.local_domain}/graph/my-topic/metadata" }
|
8
10
|
end
|
9
11
|
after(:create) do |cs, evaluator|
|
10
12
|
# set up some concepts
|
11
|
-
c = PublishMyData::Concept.new("http://#{PublishMyData.local_domain}/def/my-topic/concept/my-concept", evaluator.
|
12
|
-
c.label = "
|
13
|
+
c = PublishMyData::Concept.new("http://#{PublishMyData.local_domain}/def/my-topic/concept/my-concept", evaluator.data_graph_uri )
|
14
|
+
c.label = "A concept"
|
13
15
|
c.in_scheme = cs.uri
|
14
16
|
c.save!
|
15
17
|
|
16
|
-
c2 = PublishMyData::Concept.new("http://#{PublishMyData.local_domain}/def/my-topic/concept/my-concept-2", evaluator.
|
17
|
-
c2.label = "
|
18
|
+
c2 = PublishMyData::Concept.new("http://#{PublishMyData.local_domain}/def/my-topic/concept/my-concept-2", evaluator.data_graph_uri )
|
19
|
+
c2.label = "Another concept"
|
18
20
|
c2.in_scheme = cs.uri
|
19
21
|
c2.save!
|
20
22
|
|
@@ -22,22 +24,24 @@ FactoryGirl.define do
|
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
25
|
-
factory :external_concept_scheme, class: PublishMyData::ConceptScheme do
|
27
|
+
factory :external_concept_scheme, class: PublishMyData::ThirdParty::ConceptScheme do
|
26
28
|
initialize_with { new(uri,graph_uri) }
|
27
29
|
label 'My External Concept Scheme'
|
30
|
+
tags ['foo', 'bar', 'baz']
|
31
|
+
data_graph_uri "http://#{PublishMyData.local_domain}/123456abcdef123456"
|
28
32
|
ignore do
|
29
33
|
uri { "http://example.com/def/my-topic/concept-scheme/my-concept-scheme"}
|
30
|
-
graph_uri {
|
34
|
+
graph_uri { "http://#{PublishMyData.local_domain}/123456abcdef123456/metadata" }
|
31
35
|
end
|
32
36
|
after(:create) do |cs, evaluator|
|
33
37
|
# set up some concepts
|
34
|
-
c = PublishMyData::Concept.new("http://example.com/def/my-topic/concept/my-concept", evaluator.
|
35
|
-
c.label = "
|
38
|
+
c = PublishMyData::Concept.new("http://example.com/def/my-topic/concept/my-concept", evaluator.data_graph_uri )
|
39
|
+
c.label = "A concept"
|
36
40
|
c.in_scheme = cs.uri
|
37
41
|
c.save!
|
38
42
|
|
39
|
-
c2 = PublishMyData::Concept.new("http://example.com/def/my-topic/concept/my-concept-2", evaluator.
|
40
|
-
c2.label = "
|
43
|
+
c2 = PublishMyData::Concept.new("http://example.com/def/my-topic/concept/my-concept-2", evaluator.data_graph_uri )
|
44
|
+
c2.label = "Another concept"
|
41
45
|
c2.in_scheme = cs.uri
|
42
46
|
c2.save!
|
43
47
|
|
@@ -4,6 +4,7 @@ FactoryGirl.define do
|
|
4
4
|
title 'My Dataset'
|
5
5
|
description 'A test dataset'
|
6
6
|
modified DateTime.parse('2010-07-01 12:00')
|
7
|
+
data_graph_uri PublishMyData::Dataset.data_graph_uri("my/dataset")
|
7
8
|
ignore do
|
8
9
|
uri { PublishMyData::Dataset.uri_from_slug("my/dataset") }
|
9
10
|
graph_uri { PublishMyData::Dataset.metadata_graph_uri("my/dataset") }
|
@@ -15,6 +16,7 @@ FactoryGirl.define do
|
|
15
16
|
title 'My Other Dataset'
|
16
17
|
description 'Another test dataset'
|
17
18
|
modified DateTime.parse('2010-07-01 12:00')
|
19
|
+
data_graph_uri PublishMyData::Dataset.data_graph_uri("my/other-dataset")
|
18
20
|
ignore do
|
19
21
|
uri { PublishMyData::Dataset.uri_from_slug("my/other-dataset") }
|
20
22
|
graph_uri { PublishMyData::Dataset.metadata_graph_uri("my/other-dataset") }
|
@@ -0,0 +1,9 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :example_resource, class: PublishMyData::ExampleResource do
|
3
|
+
initialize_with { new(uri, graph_uri) }
|
4
|
+
ignore do
|
5
|
+
uri { "http://#{PublishMyData.local_domain}/data/trousers/measurement1" }
|
6
|
+
graph_uri { "http://#{PublishMyData.local_domain}/graph/trousers" }
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -3,49 +3,54 @@ FactoryGirl.define do
|
|
3
3
|
factory :ontology, class: PublishMyData::Ontology do
|
4
4
|
initialize_with { new(uri,graph_uri) }
|
5
5
|
label 'My Ontology'
|
6
|
+
data_graph_uri "http://#{PublishMyData.local_domain}/graph/my-topic"
|
7
|
+
modified DateTime.parse('2010-07-01 12:00')
|
6
8
|
ignore do
|
7
|
-
uri {
|
8
|
-
graph_uri { "http://#{PublishMyData.local_domain}/
|
9
|
+
uri { PublishMyData::Ontology.uri_from_slug("my-topic") }
|
10
|
+
graph_uri { "http://#{PublishMyData.local_domain}/graph/my-topic/metadata" }
|
9
11
|
end
|
10
12
|
after(:create) do |o, evaluator|
|
11
13
|
# set up some classes and props
|
12
|
-
c = PublishMyData::OntologyClass.new("http://#{PublishMyData.local_domain}/def/my-topic/my-class", evaluator.
|
14
|
+
c = PublishMyData::OntologyClass.new("http://#{PublishMyData.local_domain}/def/my-topic/my-class", evaluator.data_graph_uri )
|
13
15
|
c.defined_by = o.uri
|
14
16
|
c.write_predicate(RDF.type, RDF::OWL.Class)
|
15
17
|
c.save!
|
16
18
|
|
17
|
-
c2 = PublishMyData::OntologyClass.new("http://#{PublishMyData.local_domain}/def/my-topic/my-class-2", evaluator.
|
19
|
+
c2 = PublishMyData::OntologyClass.new("http://#{PublishMyData.local_domain}/def/my-topic/my-class-2", evaluator.data_graph_uri )
|
18
20
|
c2.defined_by = o.uri
|
19
21
|
c2.write_predicate(RDF.type, RDF::OWL.Class)
|
20
22
|
c2.save!
|
21
23
|
|
22
|
-
p = PublishMyData::Property.new("http://#{PublishMyData.local_domain}/def/my-topic/my-property", evaluator.
|
24
|
+
p = PublishMyData::Property.new("http://#{PublishMyData.local_domain}/def/my-topic/my-property", evaluator.data_graph_uri)
|
23
25
|
p.defined_by = o.uri
|
24
26
|
p.write_predicate(RDF.type, RDF.Property)
|
25
27
|
p.save!
|
26
28
|
|
27
|
-
p2 = PublishMyData::Property.new("http://#{PublishMyData.local_domain}/def/my-topic/my-property-2", evaluator.
|
29
|
+
p2 = PublishMyData::Property.new("http://#{PublishMyData.local_domain}/def/my-topic/my-property-2", evaluator.data_graph_uri )
|
28
30
|
p2.defined_by = o.uri
|
29
31
|
p2.write_predicate(RDF.type, RDF.Property)
|
30
32
|
p2.save!
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
|
-
factory :external_ontology, class: PublishMyData::Ontology do
|
36
|
+
factory :external_ontology, class: PublishMyData::ThirdParty::Ontology do
|
35
37
|
initialize_with { new(uri,graph_uri) }
|
36
|
-
label 'My Ontology'
|
38
|
+
label 'My External Ontology'
|
39
|
+
tags ['test', 'example']
|
40
|
+
modified DateTime.parse('2010-07-01 12:00')
|
41
|
+
data_graph_uri "http://#{PublishMyData.local_domain}/123456abcdef123456"
|
37
42
|
ignore do
|
38
|
-
uri { "http://example.com/def/my-topic/
|
39
|
-
graph_uri { "http://#{PublishMyData.local_domain}/
|
43
|
+
uri { "http://example.com/def/ontology/my-topic/"}
|
44
|
+
graph_uri { "http://#{PublishMyData.local_domain}/123456abcdef123456/metadata" }
|
40
45
|
end
|
41
46
|
after(:create) do |o, evaluator|
|
42
47
|
# set up some classes and props
|
43
|
-
c = PublishMyData::OntologyClass.new("http://example.com/def/my-topic/my-class", evaluator.
|
48
|
+
c = PublishMyData::OntologyClass.new("http://example.com/def/my-topic/my-class", evaluator.data_graph_uri )
|
44
49
|
c.defined_by = o.uri
|
45
50
|
c.write_predicate(RDF.type, RDF::OWL.Class)
|
46
51
|
c.save!
|
47
52
|
|
48
|
-
p = PublishMyData::Property.new("http://example.com/def/my-topic/my-property", evaluator.
|
53
|
+
p = PublishMyData::Property.new("http://example.com/def/my-topic/my-property", evaluator.data_graph_uri)
|
49
54
|
p.defined_by = o.uri
|
50
55
|
p.write_predicate(RDF.type, RDF.Property)
|
51
56
|
p.save!
|
@@ -45,4 +45,14 @@ FactoryGirl.define do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
factory :rdf_type, class: PublishMyData::Resource do
|
49
|
+
initialize_with { new(uri, graph_uri) }
|
50
|
+
ignore do
|
51
|
+
uri { "http://#{PublishMyData.local_domain}/id/types/observation" }
|
52
|
+
graph_uri { "http://#{PublishMyData.local_domain}/graph/types" }
|
53
|
+
end
|
54
|
+
after(:build) do |res|
|
55
|
+
res.write_predicate(RDF::RDFS.label, 'Observation')
|
56
|
+
end
|
57
|
+
end
|
48
58
|
end
|
@@ -182,8 +182,8 @@ describe 'visiting the sparql endpoint' do
|
|
182
182
|
|
183
183
|
# make some stuff (more results than the page size.
|
184
184
|
(1..30).each do |t|
|
185
|
-
uri = "http://resource#{t.to_s}"
|
186
|
-
r = PublishMyData::Resource.new(uri, "http://graph")
|
185
|
+
uri = "http://example.com/resource#{t.to_s}"
|
186
|
+
r = PublishMyData::Resource.new(uri, "http://example.com/graph")
|
187
187
|
r.label = t.to_s
|
188
188
|
r.save
|
189
189
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
feature 'Viewing resources' do
|
4
|
+
context 'Given a dataset' do
|
5
|
+
given(:dataset) { FactoryGirl.create(:my_dataset) }
|
6
|
+
|
7
|
+
scenario 'Visitor dereferences the URI' do
|
8
|
+
visit dataset.uri
|
9
|
+
page.should have_content dataset.title
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'Given an in-house ontology' do
|
14
|
+
given(:ontology) { FactoryGirl.create(:ontology) }
|
15
|
+
|
16
|
+
scenario 'Visitor dereferences the URI' do
|
17
|
+
visit ontology.uri
|
18
|
+
page.should have_content ontology.title
|
19
|
+
page.should have_content('Classes')
|
20
|
+
page.should have_content ontology.classes.first.label
|
21
|
+
page.should have_content('Properties')
|
22
|
+
page.should have_content ontology.properties.first.label
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'Given an in-house concept scheme' do
|
27
|
+
given(:concept_scheme) { FactoryGirl.create(:concept_scheme) }
|
28
|
+
|
29
|
+
scenario 'Visitor dereferences the URI' do
|
30
|
+
visit concept_scheme.uri
|
31
|
+
page.should have_content concept_scheme.title
|
32
|
+
page.should have_content('Concepts')
|
33
|
+
page.should have_content(concept_scheme.concepts.first.label)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'Given a concept' do
|
38
|
+
given(:concept_scheme) { FactoryGirl.create(:concept_scheme) }
|
39
|
+
given(:concept) { concept_scheme.concepts.first }
|
40
|
+
|
41
|
+
scenario 'Visitor dereferences the URI' do
|
42
|
+
visit concept.uri
|
43
|
+
page.should have_content concept.uri
|
44
|
+
page.should have_content RDF::SKOS.inScheme
|
45
|
+
page.should have_content concept_scheme.uri
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'Given an ontology class' do
|
50
|
+
given(:ontology) { FactoryGirl.create(:ontology) }
|
51
|
+
given(:ontology_class) { ontology.classes.first }
|
52
|
+
|
53
|
+
scenario 'Visitor dereferences the URI' do
|
54
|
+
visit ontology_class.uri
|
55
|
+
page.should have_content ontology_class.uri
|
56
|
+
page.should have_content RDF::RDFS.isDefinedBy
|
57
|
+
page.should have_content ontology.uri
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'Given a property' do
|
62
|
+
given(:ontology) { FactoryGirl.create(:ontology) }
|
63
|
+
given(:ontology_property) { ontology.properties.first }
|
64
|
+
|
65
|
+
scenario 'Visitor dereferences the URI' do
|
66
|
+
visit ontology_property.uri
|
67
|
+
page.should have_content ontology_property.uri
|
68
|
+
page.should have_content RDF::RDFS.isDefinedBy
|
69
|
+
page.should have_content ontology.uri
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'Given an external ontology' do
|
74
|
+
given(:ontology) { FactoryGirl.create(:external_ontology) }
|
75
|
+
|
76
|
+
scenario 'Visitor visits the resource page' do
|
77
|
+
visit "/resource?uri=#{ontology.uri}"
|
78
|
+
page.should have_content ontology.title
|
79
|
+
page.should have_content('Classes')
|
80
|
+
page.should have_content ontology.classes.first.label
|
81
|
+
page.should have_content('Properties')
|
82
|
+
page.should have_content ontology.properties.first.label
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'Given an external concept scheme' do
|
87
|
+
given(:concept_scheme) { FactoryGirl.create(:external_concept_scheme) }
|
88
|
+
|
89
|
+
scenario 'Visitor visits the resource page' do
|
90
|
+
visit "/resource?uri=#{concept_scheme.uri}"
|
91
|
+
page.should have_content concept_scheme.title
|
92
|
+
page.should have_content('Concepts')
|
93
|
+
page.should have_content(concept_scheme.concepts.first.label)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PublishMyData::ConceptScheme do
|
4
|
+
let(:concept_scheme) { FactoryGirl.create(:concept_scheme) }
|
5
|
+
|
6
|
+
it_behaves_like PublishMyData::AllFeatures do
|
7
|
+
let(:resource) { concept_scheme }
|
8
|
+
end
|
9
|
+
|
10
|
+
it_behaves_like 'an in-house vocabulary' do
|
11
|
+
let(:vocabulary) { concept_scheme }
|
12
|
+
let(:vocabulary_resource) { concept_scheme.concepts.first }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#local?' do
|
16
|
+
it 'should be true' do
|
17
|
+
concept_scheme.local?.should be_true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -2,18 +2,121 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module PublishMyData
|
4
4
|
describe Dataset do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
let(:dataset) { FactoryGirl.build(:my_dataset) }
|
6
|
+
|
7
|
+
it_behaves_like PublishMyData::AllFeatures do
|
8
|
+
let(:resource) { dataset }
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#types' do
|
12
|
+
let(:type_one) { 'http://example.com/types/one' }
|
13
|
+
let(:type_two) { 'http://example.com/types/two' }
|
14
|
+
before do
|
15
|
+
r = Resource.new('http://example.com/id/foo', dataset.data_graph_uri)
|
16
|
+
r.rdf_type = type_one
|
17
|
+
r.save!
|
18
|
+
r = Resource.new('http://example.com/id/bar', dataset.data_graph_uri)
|
19
|
+
r.rdf_type = type_two
|
20
|
+
r.save!
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should return resources for the types used in the dataset' do
|
24
|
+
dataset.types.map(&:uri).should == [type_one, type_two]
|
9
25
|
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#type_count' do
|
29
|
+
let(:type_uri) { 'http://example.com/types/one' }
|
10
30
|
|
11
|
-
|
12
|
-
|
31
|
+
before do
|
32
|
+
r = Resource.new('http://example.com/id/foo', dataset.data_graph_uri)
|
33
|
+
r.rdf_type = type_uri
|
34
|
+
r.save!
|
35
|
+
r = Resource.new('http://example.com/id/bar', dataset.data_graph_uri)
|
36
|
+
r.rdf_type = type_uri
|
37
|
+
r.save!
|
38
|
+
end
|
13
39
|
|
14
|
-
|
15
|
-
|
16
|
-
|
40
|
+
it 'should return the resource count for the given type in the dataset' do
|
41
|
+
dataset.type_count(type_uri).should == 2
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#resource_count' do
|
46
|
+
before do
|
47
|
+
r = Resource.new('http://example.com/id/foo', dataset.data_graph_uri)
|
48
|
+
r.rdf_type = 'http://example.com/types/one'
|
49
|
+
r.save!
|
50
|
+
r = Resource.new('http://example.com/id/bar', dataset.data_graph_uri)
|
51
|
+
r.rdf_type = 'http://example.com/types/two'
|
52
|
+
r.save!
|
53
|
+
r = Resource.new('http://example.com/id/baz', dataset.data_graph_uri)
|
54
|
+
r.rdf_type = 'http://example.com/types/three'
|
55
|
+
r.save!
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should return a count of all the resources in the dataset' do
|
59
|
+
dataset.resource_count.should == 3
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#example_resources' do
|
64
|
+
let!(:resource_one) do
|
65
|
+
r = Resource.new('http://example.com/id/foo', dataset.data_graph_uri)
|
66
|
+
r.rdf_type = 'http://example.com/types/one'
|
67
|
+
r.save!
|
68
|
+
r
|
69
|
+
end
|
70
|
+
|
71
|
+
let!(:resource_two) do
|
72
|
+
r = Resource.new('http://example.com/id/bar', dataset.data_graph_uri)
|
73
|
+
r.rdf_type = 'http://example.com/types/two'
|
74
|
+
r.save!
|
75
|
+
r
|
76
|
+
end
|
77
|
+
|
78
|
+
before do
|
79
|
+
r = Resource.new('http://example.com/id/baz', dataset.data_graph_uri)
|
80
|
+
r.rdf_type = 'http://example.com/types/two'
|
81
|
+
r.save!
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should only return a single resource for each type' do
|
85
|
+
dataset.example_resources.count.should == dataset.types.count
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should return an example resource for each type used in the dataset' do
|
89
|
+
dataset.example_resources.map(&:uri).should == [resource_one.uri, resource_two.uri]
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#ontologies' do
|
94
|
+
let(:ontology) { FactoryGirl.create(:ontology) }
|
95
|
+
let(:property) { ontology.properties.first }
|
96
|
+
|
97
|
+
before do
|
98
|
+
r = Resource.new('http://example.com/id/bar', dataset.data_graph_uri)
|
99
|
+
r.write_predicate(property.uri, 'foo')
|
100
|
+
r.save!
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'should return the ontologies which we have data about that have been used in the dataset' do
|
104
|
+
dataset.ontologies.should == [ontology]
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe '#concept_schemes' do
|
109
|
+
let(:concept_scheme) { FactoryGirl.create(:concept_scheme) }
|
110
|
+
let(:concept) { concept_scheme.concepts.first }
|
111
|
+
|
112
|
+
before do
|
113
|
+
r = Resource.new('http://example.com/id/bar', dataset.data_graph_uri)
|
114
|
+
r.write_predicate('http://example.com/is-unrelated-to', concept.uri)
|
115
|
+
r.save!
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'should return the concept schemes which we have data about that have been used in the dataset' do
|
119
|
+
dataset.concept_schemes.should == [concept_scheme]
|
17
120
|
end
|
18
121
|
end
|
19
122
|
|
@@ -39,5 +142,4 @@ module PublishMyData
|
|
39
142
|
end
|
40
143
|
end
|
41
144
|
end
|
42
|
-
end
|
43
|
-
|
145
|
+
end
|