ld4l-open_annotation_rdf 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -6
  3. data/Gemfile +3 -0
  4. data/README.md +5 -0
  5. data/ld4l-open_annotation_rdf.gemspec +4 -8
  6. data/lib/ld4l/open_annotation_rdf.rb +1 -26
  7. data/lib/ld4l/open_annotation_rdf/annotation.rb +28 -30
  8. data/lib/ld4l/open_annotation_rdf/annotation_generic_body.rb +12 -0
  9. data/lib/ld4l/open_annotation_rdf/comment_annotation.rb +3 -6
  10. data/lib/ld4l/open_annotation_rdf/comment_body.rb +4 -4
  11. data/lib/ld4l/open_annotation_rdf/semantic_tag_annotation.rb +3 -6
  12. data/lib/ld4l/open_annotation_rdf/semantic_tag_body.rb +3 -3
  13. data/lib/ld4l/open_annotation_rdf/tag_annotation.rb +3 -5
  14. data/lib/ld4l/open_annotation_rdf/tag_body.rb +7 -7
  15. data/lib/ld4l/open_annotation_rdf/version.rb +1 -1
  16. data/spec/ld4l/open_annotation_rdf/annotation_spec.rb +79 -70
  17. data/spec/ld4l/open_annotation_rdf/comment_annotation_spec.rb +46 -40
  18. data/spec/ld4l/open_annotation_rdf/comment_body_spec.rb +46 -43
  19. data/spec/ld4l/open_annotation_rdf/configuration_spec.rb +5 -5
  20. data/spec/ld4l/open_annotation_rdf/semantic_tag_annotation_spec.rb +46 -42
  21. data/spec/ld4l/open_annotation_rdf/semantic_tag_body_spec.rb +24 -31
  22. data/spec/ld4l/open_annotation_rdf/tag_annotation_spec.rb +46 -42
  23. data/spec/ld4l/open_annotation_rdf/tag_body_spec.rb +28 -35
  24. data/spec/ld4l/open_annotation_rdf_spec.rb +1 -1
  25. data/spec/spec_helper.rb +1 -2
  26. metadata +13 -69
  27. data/lib/ld4l/open_annotation_rdf/vocab/cnt.rb +0 -6
  28. data/lib/ld4l/open_annotation_rdf/vocab/dctypes.rb +0 -5
  29. data/lib/ld4l/open_annotation_rdf/vocab/oa.rb +0 -23
@@ -2,6 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
4
4
 
5
+ after do
6
+ ActiveTriples::Repositories.repositories[LD4L::OpenAnnotationRDF::CommentAnnotation.repository].clear!
7
+ end
8
+
5
9
  subject { LD4L::OpenAnnotationRDF::CommentAnnotation.new }
6
10
 
7
11
  describe 'rdf_subject' do
@@ -21,22 +25,22 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
21
25
 
22
26
  describe 'when changing subject' do
23
27
  before do
24
- subject << RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland'))
25
- subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject)
26
- subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land')
28
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::DC.title, RDF::Literal('Comet in Moominland'))
29
+ subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.isPartOf, subject.rdf_subject)
30
+ subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.relation, 'http://example.org/moomin_land')
27
31
  subject.set_subject! RDF::URI('http://example.org/moomin')
28
32
  end
29
33
 
30
34
  it 'should update graph subjects' do
31
- expect(subject.has_statement?(RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland')))).to be true
35
+ expect(subject.has_statement?(RDF::Statement.new(subject.rdf_subject, RDF::Vocab::DC.title, RDF::Literal('Comet in Moominland')))).to be true
32
36
  end
33
37
 
34
38
  it 'should update graph objects' do
35
- expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject))).to be true
39
+ expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.isPartOf, subject.rdf_subject))).to be true
36
40
  end
37
41
 
38
42
  it 'should leave other uris alone' do
39
- expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land'))).to be true
43
+ expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.relation, 'http://example.org/moomin_land'))).to be true
40
44
  end
41
45
  end
42
46
 
@@ -57,8 +61,8 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
57
61
  # -------------------------------------------------
58
62
 
59
63
  describe 'type' do
60
- it "should be an RDFVocabularies::OA.Annotation" do
61
- expect(subject.type.first.value).to eq RDFVocabularies::OA.Annotation.value
64
+ it "should be an RDF::Vocab::OA.Annotation" do
65
+ expect(subject.type.first.value).to eq RDF::Vocab::OA.Annotation.value
62
66
  end
63
67
  end
64
68
 
@@ -172,18 +176,18 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
172
176
 
173
177
  describe 'motivatedBy' do
174
178
  it "should be OA.commenting if we haven't set it" do
175
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.commenting
179
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.commenting
176
180
  end
177
181
 
178
182
  it "should be settable" do
179
- subject.motivatedBy = RDFVocabularies::OA.describing
180
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.describing
183
+ subject.motivatedBy = RDF::Vocab::OA.describing
184
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.describing
181
185
  end
182
186
 
183
187
  it "should be changeable" do
184
- subject.motivatedBy = RDFVocabularies::OA.describing
185
- subject.motivatedBy = RDFVocabularies::OA.classifying
186
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.classifying
188
+ subject.motivatedBy = RDF::Vocab::OA.describing
189
+ subject.motivatedBy = RDF::Vocab::OA.classifying
190
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.classifying
187
191
  end
188
192
  end
189
193
 
@@ -215,7 +219,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
215
219
 
216
220
  context "when it is saved" do
217
221
  before do
218
- subject.motivatedBy = RDFVocabularies::OA.commenting
222
+ subject.motivatedBy = RDF::Vocab::OA.commenting
219
223
  subject.persist!
220
224
  end
221
225
 
@@ -225,7 +229,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
225
229
 
226
230
  context "and then modified" do
227
231
  before do
228
- subject.motivatedBy = RDFVocabularies::OA.tagging
232
+ subject.motivatedBy = RDF::Vocab::OA.tagging
229
233
  end
230
234
 
231
235
  it "should return true" do
@@ -238,7 +242,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
238
242
  end
239
243
 
240
244
  it "should reset the motivatedBy" do
241
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.commenting.to_s
245
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.commenting.to_s
242
246
  end
243
247
 
244
248
  it "should be persisted" do
@@ -260,7 +264,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
260
264
  # Create inmemory repository
261
265
  @repo = RDF::Repository.new
262
266
  ActiveTriples::Repositories.repositories[:default] = @repo
263
- subject.motivatedBy = RDFVocabularies::OA.commenting
267
+ subject.motivatedBy = RDF::Vocab::OA.commenting
264
268
  result
265
269
  end
266
270
 
@@ -274,7 +278,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
274
278
 
275
279
  it "should delete from the repository" do
276
280
  subject.reload
277
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.commenting.to_s
281
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.commenting.to_s
278
282
  subject.motivatedBy = []
279
283
  expect(subject.motivatedBy).to eq []
280
284
  subject.persist!
@@ -301,7 +305,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
301
305
 
302
306
  describe '#destroy!' do
303
307
  before do
304
- subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
308
+ subject << RDF::Statement(RDF::Vocab::DC.LicenseDocument, RDF::Vocab::DC.title, 'LICENSE')
305
309
  end
306
310
 
307
311
  subject { LD4L::OpenAnnotationRDF::CommentAnnotation.new('123') }
@@ -391,29 +395,29 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
391
395
 
392
396
  context 'with unmodeled data' do
393
397
  before do
394
- subject << RDF::Statement(subject.rdf_subject, RDF::DC.contributor, 'Tove Jansson')
395
- subject << RDF::Statement(subject.rdf_subject, RDF::DC.relation, RDF::URI('http://example.org/moomi'))
398
+ subject << RDF::Statement(subject.rdf_subject, RDF::Vocab::DC.contributor, 'Tove Jansson')
399
+ subject << RDF::Statement(subject.rdf_subject, RDF::Vocab::DC.relation, RDF::URI('http://example.org/moomi'))
396
400
  node = RDF::Node.new
397
- subject << RDF::Statement(RDF::URI('http://example.org/moomi'), RDF::DC.relation, node)
398
- subject << RDF::Statement(node, RDF::DC.title, 'bnode')
401
+ subject << RDF::Statement(RDF::URI('http://example.org/moomi'), RDF::Vocab::DC.relation, node)
402
+ subject << RDF::Statement(node, RDF::Vocab::DC.title, 'bnode')
399
403
  end
400
404
 
401
405
  it 'should include data with URIs as attribute names' do
402
- expect(subject.attributes[RDF::DC.contributor.to_s]).to eq ['Tove Jansson']
406
+ expect(subject.attributes[RDF::Vocab::DC.contributor.to_s]).to eq ['Tove Jansson']
403
407
  end
404
408
 
405
409
  it 'should return generic Resources' do
406
- expect(subject.attributes[RDF::DC.relation.to_s].first).to be_a ActiveTriples::Resource
410
+ expect(subject.attributes[RDF::Vocab::DC.relation.to_s].first).to be_a ActiveTriples::Resource
407
411
  end
408
412
 
409
413
  it 'should build deep data for Resources' do
410
- expect(subject.attributes[RDF::DC.relation.to_s].first.get_values(RDF::DC.relation).
411
- first.get_values(RDF::DC.title)).to eq ['bnode']
414
+ expect(subject.attributes[RDF::Vocab::DC.relation.to_s].first.get_values(RDF::Vocab::DC.relation).
415
+ first.get_values(RDF::Vocab::DC.title)).to eq ['bnode']
412
416
  end
413
417
 
414
418
  it 'should include deep data in serializable_hash' do
415
- expect(subject.serializable_hash[RDF::DC.relation.to_s].first.get_values(RDF::DC.relation).
416
- first.get_values(RDF::DC.title)).to eq ['bnode']
419
+ expect(subject.serializable_hash[RDF::Vocab::DC.relation.to_s].first.get_values(RDF::Vocab::DC.relation).
420
+ first.get_values(RDF::Vocab::DC.title)).to eq ['bnode']
417
421
  end
418
422
  end
419
423
 
@@ -490,13 +494,13 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
490
494
 
491
495
  describe 'editing the graph' do
492
496
  it 'should write properties when statements are added' do
493
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.motivatedBy, 'commenting')
497
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.motivatedBy, 'commenting')
494
498
  expect(subject.motivatedBy).to include 'commenting'
495
499
  end
496
500
 
497
501
  it 'should delete properties when statements are removed' do
498
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.annotatedBy, 'John Smith')
499
- subject.delete RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.annotatedBy, 'John Smith')
502
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.annotatedBy, 'John Smith')
503
+ subject.delete RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.annotatedBy, 'John Smith')
500
504
  expect(subject.annotatedBy).to eq []
501
505
  end
502
506
  end
@@ -505,18 +509,18 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
505
509
  before do
506
510
  class DummyPerson < ActiveTriples::Resource
507
511
  configure :type => RDF::URI('http://example.org/Person')
508
- property :foafname, :predicate => RDF::FOAF.name
509
- property :publications, :predicate => RDF::FOAF.publications, :class_name => 'DummyDocument'
510
- property :knows, :predicate => RDF::FOAF.knows, :class_name => DummyPerson
512
+ property :foafname, :predicate => RDF::Vocab::FOAF.name
513
+ property :publications, :predicate => RDF::Vocab::FOAF.publications, :class_name => 'DummyDocument'
514
+ property :knows, :predicate => RDF::Vocab::FOAF.knows, :class_name => DummyPerson
511
515
  end
512
516
 
513
517
  class DummyDocument < ActiveTriples::Resource
514
518
  configure :type => RDF::URI('http://example.org/Document')
515
- property :title, :predicate => RDF::DC.title
516
- property :creator, :predicate => RDF::DC.creator, :class_name => 'DummyPerson'
519
+ property :title, :predicate => RDF::Vocab::DC.title
520
+ property :creator, :predicate => RDF::Vocab::DC.creator, :class_name => 'DummyPerson'
517
521
  end
518
522
 
519
- LD4L::OpenAnnotationRDF::CommentAnnotation.property :item, :predicate => RDF::DC.relation, :class_name => DummyDocument
523
+ LD4L::OpenAnnotationRDF::CommentAnnotation.property :item, :predicate => RDF::Vocab::DC.relation, :class_name => DummyDocument
520
524
  end
521
525
 
522
526
  subject { LD4L::OpenAnnotationRDF::CommentAnnotation.new }
@@ -569,8 +573,10 @@ END
569
573
  document1.creator = [person1, person2]
570
574
  document2.creator = person1
571
575
  person1.knows = person2
576
+ person2.knows = person1
572
577
  subject.item = [document1]
573
- expect(subject.item.first.creator.first.knows.first.foafname).to eq ['Bob']
578
+ expect(subject.item.first.creator.first.knows.first.foafname)
579
+ .to satisfy { |names| ['Alice', 'Bob'].include? names.first }
574
580
  end
575
581
  end
576
582
  end
@@ -1,10 +1,11 @@
1
1
  require 'spec_helper'
2
- require 'ld4l/open_annotation_rdf/vocab/dctypes'
3
- require 'ld4l/open_annotation_rdf/vocab/oa'
4
-
5
2
 
6
3
  describe 'LD4L::OpenAnnotationRDF::CommentBody' do
7
4
 
5
+ after do
6
+ ActiveTriples::Repositories.repositories[LD4L::OpenAnnotationRDF::CommentAnnotation.repository].clear!
7
+ end
8
+
8
9
  subject { LD4L::OpenAnnotationRDF::CommentBody.new }
9
10
 
10
11
  describe 'rdf_subject' do
@@ -24,22 +25,22 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
24
25
 
25
26
  describe 'when changing subject' do
26
27
  before do
27
- subject << RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland'))
28
- subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject)
29
- subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land')
28
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::DC.title, RDF::Literal('Comet in Moominland'))
29
+ subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.isPartOf, subject.rdf_subject)
30
+ subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.relation, 'http://example.org/moomin_land')
30
31
  subject.set_subject! RDF::URI('http://example.org/moomin')
31
32
  end
32
33
 
33
34
  it 'should update graph subjects' do
34
- expect(subject.has_statement?(RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland')))).to be true
35
+ expect(subject.has_statement?(RDF::Statement.new(subject.rdf_subject, RDF::Vocab::DC.title, RDF::Literal('Comet in Moominland')))).to be true
35
36
  end
36
37
 
37
38
  it 'should update graph objects' do
38
- expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject))).to be true
39
+ expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.isPartOf, subject.rdf_subject))).to be true
39
40
  end
40
41
 
41
42
  it 'should leave other uris alone' do
42
- expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land'))).to be true
43
+ expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.relation, 'http://example.org/moomin_land'))).to be true
43
44
  end
44
45
  end
45
46
 
@@ -62,57 +63,57 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
62
63
  describe 'type' do
63
64
  it "should be set to text and ContentAsText from new" do
64
65
  expected_results = subject.type
65
- expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
66
+ expected_results = expected_results.to_a if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
66
67
  expect(expected_results.size).to eq 2
67
- expect(expected_results).to include RDFVocabularies::DCTYPES.Text
68
- expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
68
+ expect(expected_results).to include RDF::Vocab::DCMIType.Text
69
+ expect(expected_results).to include RDF::Vocab::CNT.ContentAsText
69
70
  end
70
71
 
71
72
  it "should be settable" do
72
- subject.type = RDFVocabularies::DCTYPES.Text
73
+ subject.type = RDF::Vocab::DCMIType.Text
73
74
  expected_results = subject.type
74
- expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
75
+ expected_results = expected_results.to_a if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
75
76
  expect(expected_results.size).to eq 1
76
- expect(expected_results).to include RDFVocabularies::DCTYPES.Text
77
+ expect(expected_results).to include RDF::Vocab::DCMIType.Text
77
78
  end
78
79
 
79
80
  it "should be settable to multiple values" do
80
- t = [RDFVocabularies::DCTYPES.Text, RDFVocabularies::CNT.ContentAsText]
81
+ t = [RDF::Vocab::DCMIType.Text, RDF::Vocab::CNT.ContentAsText]
81
82
  subject.set_value(:type,t)
82
83
  expected_results = subject.type
83
- expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
84
+ expected_results = expected_results.to_a if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
84
85
  expect(expected_results.size).to eq 2
85
- expect(expected_results).to include RDFVocabularies::DCTYPES.Text
86
- expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
86
+ expect(expected_results).to include RDF::Vocab::DCMIType.Text
87
+ expect(expected_results).to include RDF::Vocab::CNT.ContentAsText
87
88
  end
88
89
 
89
90
  it "should be changeable" do
90
- subject.type = RDFVocabularies::DCTYPES.Text
91
- subject.type = RDFVocabularies::CNT.ContentAsText
91
+ subject.type = RDF::Vocab::DCMIType.Text
92
+ subject.type = RDF::Vocab::CNT.ContentAsText
92
93
  expected_results = subject.type
93
- expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
94
+ expected_results = expected_results.to_a if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
94
95
  expect(expected_results.size).to eq 1
95
- expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
96
+ expect(expected_results).to include RDF::Vocab::CNT.ContentAsText
96
97
  end
97
98
 
98
99
  it "should be changeable for multiple values" do
99
- t = [RDFVocabularies::DCTYPES.Text, RDFVocabularies::CNT.ContentAsText]
100
+ t = [RDF::Vocab::DCMIType.Text, RDF::Vocab::CNT.ContentAsText]
100
101
  subject.set_value(:type,t)
101
102
  expected_results = subject.type
102
- expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
103
+ expected_results = expected_results.to_a if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
103
104
  expect(expected_results.size).to eq 2
104
- expect(expected_results).to include RDFVocabularies::DCTYPES.Text
105
- expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
105
+ expect(expected_results).to include RDF::Vocab::DCMIType.Text
106
+ expect(expected_results).to include RDF::Vocab::CNT.ContentAsText
106
107
 
107
108
  t = subject.get_values(:type).to_a
108
- t[0] = RDFVocabularies::OA.Tag # dummy type for testing
109
- t[1] = RDFVocabularies::OA.SemanticTag # dummy type for testing
109
+ t[0] = RDF::Vocab::OA.Tag # dummy type for testing
110
+ t[1] = RDF::Vocab::OA.SemanticTag # dummy type for testing
110
111
  subject.set_value(:type,t)
111
112
  expected_results = subject.type
112
- expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
113
+ expected_results = expected_results.to_a if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
113
114
  expect(expected_results.size).to eq 2
114
- expect(expected_results).to include RDFVocabularies::OA.Tag
115
- expect(expected_results).to include RDFVocabularies::OA.SemanticTag
115
+ expect(expected_results).to include RDF::Vocab::OA.Tag
116
+ expect(expected_results).to include RDF::Vocab::OA.SemanticTag
116
117
  end
117
118
  end
118
119
 
@@ -259,7 +260,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
259
260
 
260
261
  describe '#destroy!' do
261
262
  before do
262
- subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
263
+ subject << RDF::Statement(RDF::Vocab::DC.LicenseDocument, RDF::Vocab::DC.title, 'LICENSE')
263
264
  end
264
265
 
265
266
  subject { LD4L::OpenAnnotationRDF::CommentBody.new('456')}
@@ -296,13 +297,13 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
296
297
 
297
298
  describe 'editing the graph' do
298
299
  it 'should write properties when statements are added' do
299
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'Great book!')
300
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::CNT.chars, 'Great book!')
300
301
  expect(subject.content).to include 'Great book!'
301
302
  end
302
303
 
303
304
  it 'should delete properties when statements are removed' do
304
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'Great book!')
305
- subject.delete RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'Great book!')
305
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::CNT.chars, 'Great book!')
306
+ subject.delete RDF::Statement.new(subject.rdf_subject, RDF::Vocab::CNT.chars, 'Great book!')
306
307
  expect(subject.content).to eq []
307
308
  end
308
309
  end
@@ -311,18 +312,18 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
311
312
  before do
312
313
  class DummyPerson < ActiveTriples::Resource
313
314
  configure :type => RDF::URI('http://example.org/Person')
314
- property :foafname, :predicate => RDF::FOAF.name
315
- property :publications, :predicate => RDF::FOAF.publications, :class_name => 'DummyDocument'
316
- property :knows, :predicate => RDF::FOAF.knows, :class_name => DummyPerson
315
+ property :foafname, :predicate => RDF::Vocab::FOAF.name
316
+ property :publications, :predicate => RDF::Vocab::FOAF.publications, :class_name => 'DummyDocument'
317
+ property :knows, :predicate => RDF::Vocab::FOAF.knows, :class_name => DummyPerson
317
318
  end
318
319
 
319
320
  class DummyDocument < ActiveTriples::Resource
320
321
  configure :type => RDF::URI('http://example.org/Document')
321
- property :title, :predicate => RDF::DC.title
322
- property :creator, :predicate => RDF::DC.creator, :class_name => 'DummyPerson'
322
+ property :title, :predicate => RDF::Vocab::DC.title
323
+ property :creator, :predicate => RDF::Vocab::DC.creator, :class_name => 'DummyPerson'
323
324
  end
324
325
 
325
- LD4L::OpenAnnotationRDF::CommentBody.property :item, :predicate => RDF::DC.relation, :class_name => DummyDocument
326
+ LD4L::OpenAnnotationRDF::CommentBody.property :item, :predicate => RDF::Vocab::DC.relation, :class_name => DummyDocument
326
327
  end
327
328
 
328
329
  subject { LD4L::OpenAnnotationRDF::CommentBody.new }
@@ -375,8 +376,10 @@ END
375
376
  document1.creator = [person1, person2]
376
377
  document2.creator = person1
377
378
  person1.knows = person2
379
+ person2.knows = person1
378
380
  subject.item = [document1]
379
- expect(subject.item.first.creator.first.knows.first.foafname).to eq ['Bob']
381
+ expect(subject.item.first.creator.first.knows.first.foafname)
382
+ .to satisfy { |names| ['Alice', 'Bob'].include? names.first }
380
383
  end
381
384
  end
382
385
  end
@@ -7,7 +7,7 @@ describe 'LD4L::OpenAnnotationRDF' do
7
7
  context "when base_uri is not configured" do
8
8
  before do
9
9
  class DummyAnnotation < LD4L::OpenAnnotationRDF::Annotation
10
- configure :type => RDFVocabularies::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
10
+ configure :type => RDF::Vocab::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
11
11
  end
12
12
  end
13
13
  after do
@@ -24,7 +24,7 @@ describe 'LD4L::OpenAnnotationRDF' do
24
24
  config.base_uri = "http://localhost/test_slash/"
25
25
  end
26
26
  class DummyAnnotation < LD4L::OpenAnnotationRDF::Annotation
27
- configure :type => RDFVocabularies::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
27
+ configure :type => RDF::Vocab::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
28
28
  end
29
29
  end
30
30
  after do
@@ -43,7 +43,7 @@ describe 'LD4L::OpenAnnotationRDF' do
43
43
  config.base_uri = "http://localhost/test_no_slash"
44
44
  end
45
45
  class DummyAnnotation < LD4L::OpenAnnotationRDF::Annotation
46
- configure :type => RDFVocabularies::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
46
+ configure :type => RDF::Vocab::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
47
47
  end
48
48
  end
49
49
  after do
@@ -86,7 +86,7 @@ describe 'LD4L::OpenAnnotationRDF' do
86
86
  context "when minter is nil" do
87
87
  before do
88
88
  class DummyAnnotation < LD4L::OpenAnnotationRDF::Annotation
89
- configure :type => RDFVocabularies::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
89
+ configure :type => RDF::Vocab::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
90
90
  end
91
91
  end
92
92
  after do
@@ -108,7 +108,7 @@ describe 'LD4L::OpenAnnotationRDF' do
108
108
  config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
109
109
  end
110
110
  class DummyAnnotation < LD4L::OpenAnnotationRDF::Annotation
111
- configure :type => RDFVocabularies::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
111
+ configure :type => RDF::Vocab::OA.Annotation, :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri, :repository => :default
112
112
  end
113
113
  end
114
114
  after do
@@ -1,9 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- # TODO: Uses CommentBody as the annotation body, which is wrong. Should be URI into controlled vocabulary.
4
-
5
3
  describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
6
4
 
5
+ after do
6
+ ActiveTriples::Repositories.repositories[LD4L::OpenAnnotationRDF::CommentAnnotation.repository].clear!
7
+ end
8
+
7
9
  subject { LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new }
8
10
 
9
11
  describe 'rdf_subject' do
@@ -23,22 +25,22 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
23
25
 
24
26
  describe 'when changing subject' do
25
27
  before do
26
- subject << RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland'))
27
- subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject)
28
- subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land')
28
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::DC.title, RDF::Literal('Comet in Moominland'))
29
+ subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.isPartOf, subject.rdf_subject)
30
+ subject << RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.relation, 'http://example.org/moomin_land')
29
31
  subject.set_subject! RDF::URI('http://example.org/moomin')
30
32
  end
31
33
 
32
34
  it 'should update graph subjects' do
33
- expect(subject.has_statement?(RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland')))).to be true
35
+ expect(subject.has_statement?(RDF::Statement.new(subject.rdf_subject, RDF::Vocab::DC.title, RDF::Literal('Comet in Moominland')))).to be true
34
36
  end
35
37
 
36
38
  it 'should update graph objects' do
37
- expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.isPartOf, subject.rdf_subject))).to be true
39
+ expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.isPartOf, subject.rdf_subject))).to be true
38
40
  end
39
41
 
40
42
  it 'should leave other uris alone' do
41
- expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::DC.relation, 'http://example.org/moomin_land'))).to be true
43
+ expect(subject.has_statement?(RDF::Statement.new(RDF::URI('http://example.org/moomin_comics'), RDF::Vocab::DC.relation, 'http://example.org/moomin_land'))).to be true
42
44
  end
43
45
  end
44
46
 
@@ -59,8 +61,8 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
59
61
  # -------------------------------------------------
60
62
 
61
63
  describe 'type' do
62
- it "should be an RDFVocabularies::OA.Annotation" do
63
- expect(subject.type.first.value).to eq RDFVocabularies::OA.Annotation.value
64
+ it "should be an RDF::Vocab::OA.Annotation" do
65
+ expect(subject.type.first.value).to eq RDF::Vocab::OA.Annotation.value
64
66
  end
65
67
  end
66
68
 
@@ -221,18 +223,18 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
221
223
 
222
224
  describe 'motivatedBy' do
223
225
  it "should be OA.tagging if we haven't set it" do
224
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.tagging
226
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.tagging
225
227
  end
226
228
 
227
229
  it "should be settable" do
228
- subject.motivatedBy = RDFVocabularies::OA.describing
229
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.describing
230
+ subject.motivatedBy = RDF::Vocab::OA.describing
231
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.describing
230
232
  end
231
233
 
232
234
  it "should be changeable" do
233
- subject.motivatedBy = RDFVocabularies::OA.describing
234
- subject.motivatedBy = RDFVocabularies::OA.classifying
235
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.classifying
235
+ subject.motivatedBy = RDF::Vocab::OA.describing
236
+ subject.motivatedBy = RDF::Vocab::OA.classifying
237
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.classifying
236
238
  end
237
239
  end
238
240
 
@@ -264,7 +266,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
264
266
 
265
267
  context "when it is saved" do
266
268
  before do
267
- subject.motivatedBy = RDFVocabularies::OA.commenting
269
+ subject.motivatedBy = RDF::Vocab::OA.commenting
268
270
  subject.persist!
269
271
  end
270
272
 
@@ -274,7 +276,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
274
276
 
275
277
  context "and then modified" do
276
278
  before do
277
- subject.motivatedBy = RDFVocabularies::OA.tagging
279
+ subject.motivatedBy = RDF::Vocab::OA.tagging
278
280
  end
279
281
 
280
282
  it "should return true" do
@@ -287,7 +289,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
287
289
  end
288
290
 
289
291
  it "should reset the motivatedBy" do
290
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.commenting.to_s
292
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.commenting.to_s
291
293
  end
292
294
 
293
295
  it "should be persisted" do
@@ -309,7 +311,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
309
311
  # Create inmemory repository
310
312
  @repo = RDF::Repository.new
311
313
  ActiveTriples::Repositories.repositories[:default] = @repo
312
- subject.motivatedBy = RDFVocabularies::OA.commenting
314
+ subject.motivatedBy = RDF::Vocab::OA.commenting
313
315
  result
314
316
  end
315
317
 
@@ -323,7 +325,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
323
325
 
324
326
  it "should delete from the repository" do
325
327
  subject.reload
326
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.commenting.to_s
328
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.commenting.to_s
327
329
  subject.motivatedBy = []
328
330
  expect(subject.motivatedBy).to eq []
329
331
  subject.persist!
@@ -351,7 +353,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
351
353
 
352
354
  describe '#destroy!' do
353
355
  before do
354
- subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
356
+ subject << RDF::Statement(RDF::Vocab::DC.LicenseDocument, RDF::Vocab::DC.title, 'LICENSE')
355
357
  end
356
358
 
357
359
  subject { LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('123') }
@@ -441,29 +443,29 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
441
443
 
442
444
  context 'with unmodeled data' do
443
445
  before do
444
- subject << RDF::Statement(subject.rdf_subject, RDF::DC.contributor, 'Tove Jansson')
445
- subject << RDF::Statement(subject.rdf_subject, RDF::DC.relation, RDF::URI('http://example.org/moomi'))
446
+ subject << RDF::Statement(subject.rdf_subject, RDF::Vocab::DC.contributor, 'Tove Jansson')
447
+ subject << RDF::Statement(subject.rdf_subject, RDF::Vocab::DC.relation, RDF::URI('http://example.org/moomi'))
446
448
  node = RDF::Node.new
447
- subject << RDF::Statement(RDF::URI('http://example.org/moomi'), RDF::DC.relation, node)
448
- subject << RDF::Statement(node, RDF::DC.title, 'bnode')
449
+ subject << RDF::Statement(RDF::URI('http://example.org/moomi'), RDF::Vocab::DC.relation, node)
450
+ subject << RDF::Statement(node, RDF::Vocab::DC.title, 'bnode')
449
451
  end
450
452
 
451
453
  it 'should include data with URIs as attribute names' do
452
- expect(subject.attributes[RDF::DC.contributor.to_s]).to eq ['Tove Jansson']
454
+ expect(subject.attributes[RDF::Vocab::DC.contributor.to_s]).to eq ['Tove Jansson']
453
455
  end
454
456
 
455
457
  it 'should return generic Resources' do
456
- expect(subject.attributes[RDF::DC.relation.to_s].first).to be_a ActiveTriples::Resource
458
+ expect(subject.attributes[RDF::Vocab::DC.relation.to_s].first).to be_a ActiveTriples::Resource
457
459
  end
458
460
 
459
461
  it 'should build deep data for Resources' do
460
- expect(subject.attributes[RDF::DC.relation.to_s].first.get_values(RDF::DC.relation).
461
- first.get_values(RDF::DC.title)).to eq ['bnode']
462
+ expect(subject.attributes[RDF::Vocab::DC.relation.to_s].first.get_values(RDF::Vocab::DC.relation).
463
+ first.get_values(RDF::Vocab::DC.title)).to eq ['bnode']
462
464
  end
463
465
 
464
466
  it 'should include deep data in serializable_hash' do
465
- expect(subject.serializable_hash[RDF::DC.relation.to_s].first.get_values(RDF::DC.relation).
466
- first.get_values(RDF::DC.title)).to eq ['bnode']
467
+ expect(subject.serializable_hash[RDF::Vocab::DC.relation.to_s].first.get_values(RDF::Vocab::DC.relation).
468
+ first.get_values(RDF::Vocab::DC.title)).to eq ['bnode']
467
469
  end
468
470
  end
469
471
 
@@ -540,13 +542,13 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
540
542
 
541
543
  describe 'editing the graph' do
542
544
  it 'should write properties when statements are added' do
543
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.motivatedBy, 'commenting')
545
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.motivatedBy, 'commenting')
544
546
  expect(subject.motivatedBy).to include 'commenting'
545
547
  end
546
548
 
547
549
  it 'should delete properties when statements are removed' do
548
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.annotatedBy, 'John Smith')
549
- subject.delete RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.annotatedBy, 'John Smith')
550
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.annotatedBy, 'John Smith')
551
+ subject.delete RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.annotatedBy, 'John Smith')
550
552
  expect(subject.annotatedBy).to eq []
551
553
  end
552
554
  end
@@ -555,18 +557,18 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
555
557
  before do
556
558
  class DummyPerson < ActiveTriples::Resource
557
559
  configure :type => RDF::URI('http://example.org/Person')
558
- property :foafname, :predicate => RDF::FOAF.name
559
- property :publications, :predicate => RDF::FOAF.publications, :class_name => 'DummyDocument'
560
- property :knows, :predicate => RDF::FOAF.knows, :class_name => DummyPerson
560
+ property :foafname, :predicate => RDF::Vocab::FOAF.name
561
+ property :publications, :predicate => RDF::Vocab::FOAF.publications, :class_name => 'DummyDocument'
562
+ property :knows, :predicate => RDF::Vocab::FOAF.knows, :class_name => DummyPerson
561
563
  end
562
564
 
563
565
  class DummyDocument < ActiveTriples::Resource
564
566
  configure :type => RDF::URI('http://example.org/Document')
565
- property :title, :predicate => RDF::DC.title
566
- property :creator, :predicate => RDF::DC.creator, :class_name => 'DummyPerson'
567
+ property :title, :predicate => RDF::Vocab::DC.title
568
+ property :creator, :predicate => RDF::Vocab::DC.creator, :class_name => 'DummyPerson'
567
569
  end
568
570
 
569
- LD4L::OpenAnnotationRDF::SemanticTagAnnotation.property :item, :predicate => RDF::DC.relation, :class_name => DummyDocument
571
+ LD4L::OpenAnnotationRDF::SemanticTagAnnotation.property :item, :predicate => RDF::Vocab::DC.relation, :class_name => DummyDocument
570
572
  end
571
573
 
572
574
  subject { LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new }
@@ -619,8 +621,10 @@ END
619
621
  document1.creator = [person1, person2]
620
622
  document2.creator = person1
621
623
  person1.knows = person2
624
+ person2.knows = person1
622
625
  subject.item = [document1]
623
- expect(subject.item.first.creator.first.knows.first.foafname).to eq ['Bob']
626
+ expect(subject.item.first.creator.first.knows.first.foafname)
627
+ .to satisfy { |names| ['Alice', 'Bob'].include? names.first }
624
628
  end
625
629
  end
626
630
  end