ld4l-open_annotation_rdf 0.1.0 → 0.2.0

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.
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
@@ -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::SemanticTagBody' do
7
4
 
5
+ after do
6
+ ActiveTriples::Repositories.repositories[LD4L::OpenAnnotationRDF::CommentAnnotation.repository].clear!
7
+ end
8
+
8
9
  subject { LD4L::OpenAnnotationRDF::SemanticTagBody.new }
9
10
 
10
11
  describe 'rdf_subject' do
@@ -24,22 +25,22 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' 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,9 +63,9 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
62
63
  describe 'type' do
63
64
  it "should be set to text and astext 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 1
67
- expect(expected_results).to include RDFVocabularies::OA.SemanticTag
68
+ expect(expected_results).to include RDF::Vocab::OA.SemanticTag
68
69
  end
69
70
  end
70
71
 
@@ -96,7 +97,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
96
97
  end
97
98
 
98
99
  context "when terms exist in the repository" do
99
- before(:all) do
100
+ before do
100
101
  # Create inmemory repository
101
102
  sta = LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('http://example.org/sta1')
102
103
  sta.setTerm(RDF::URI("http://example.org/EXISTING_term"))
@@ -107,11 +108,6 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
107
108
  stb = LD4L::OpenAnnotationRDF::SemanticTagBody.new('http://example.org/UNUSED_term')
108
109
  stb.persist!
109
110
  end
110
- after(:all) do
111
- LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('http://example.org/sta1').destroy!
112
- LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('http://example.org/sta2').destroy!
113
- LD4L::OpenAnnotationRDF::SemanticTagBody.new('http://example.org/UNUSED_term').destroy!
114
- end
115
111
 
116
112
  context "and term is passed as string URI" do
117
113
  it "should find annotations using the term" do
@@ -173,7 +169,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
173
169
  end
174
170
 
175
171
  context "when terms exist in the repository" do
176
- before(:all) do
172
+ before do
177
173
  # Create inmemory repository
178
174
  sta = LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('http://example.org/sta1')
179
175
  sta.setTerm(RDF::URI("http://example.org/EXISTING_term"))
@@ -184,11 +180,6 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
184
180
  stb = LD4L::OpenAnnotationRDF::SemanticTagBody.new('http://example.org/UNUSED_term')
185
181
  stb.persist!
186
182
  end
187
- after(:all) do
188
- LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('http://example.org/sta1').destroy!
189
- LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('http://example.org/sta2').destroy!
190
- LD4L::OpenAnnotationRDF::SemanticTagBody.new('http://example.org/UNUSED_term').destroy!
191
- end
192
183
 
193
184
  context "and term is passed as string URI" do
194
185
  it "should not destroy if used by any annotations" do
@@ -302,7 +293,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
302
293
 
303
294
  describe '#destroy!' do
304
295
  before do
305
- subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
296
+ subject << RDF::Statement(RDF::Vocab::DC.LicenseDocument, RDF::Vocab::DC.title, 'LICENSE')
306
297
  end
307
298
 
308
299
  subject { LD4L::OpenAnnotationRDF::SemanticTagBody.new('456')}
@@ -341,18 +332,18 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
341
332
  before do
342
333
  class DummyPerson < ActiveTriples::Resource
343
334
  configure :type => RDF::URI('http://example.org/Person')
344
- property :foafname, :predicate => RDF::FOAF.name
345
- property :publications, :predicate => RDF::FOAF.publications, :class_name => 'DummyDocument'
346
- property :knows, :predicate => RDF::FOAF.knows, :class_name => DummyPerson
335
+ property :foafname, :predicate => RDF::Vocab::FOAF.name
336
+ property :publications, :predicate => RDF::Vocab::FOAF.publications, :class_name => 'DummyDocument'
337
+ property :knows, :predicate => RDF::Vocab::FOAF.knows, :class_name => DummyPerson
347
338
  end
348
339
 
349
340
  class DummyDocument < ActiveTriples::Resource
350
341
  configure :type => RDF::URI('http://example.org/Document')
351
- property :title, :predicate => RDF::DC.title
352
- property :creator, :predicate => RDF::DC.creator, :class_name => 'DummyPerson'
342
+ property :title, :predicate => RDF::Vocab::DC.title
343
+ property :creator, :predicate => RDF::Vocab::DC.creator, :class_name => 'DummyPerson'
353
344
  end
354
345
 
355
- LD4L::OpenAnnotationRDF::SemanticTagBody.property :item, :predicate => RDF::DC.relation, :class_name => DummyDocument
346
+ LD4L::OpenAnnotationRDF::SemanticTagBody.property :item, :predicate => RDF::Vocab::DC.relation, :class_name => DummyDocument
356
347
  end
357
348
 
358
349
  subject { LD4L::OpenAnnotationRDF::SemanticTagBody.new }
@@ -405,8 +396,10 @@ END
405
396
  document1.creator = [person1, person2]
406
397
  document2.creator = person1
407
398
  person1.knows = person2
399
+ person2.knows = person1
408
400
  subject.item = [document1]
409
- expect(subject.item.first.creator.first.knows.first.foafname).to eq ['Bob']
401
+ expect(subject.item.first.creator.first.knows.first.foafname)
402
+ .to satisfy { |names| ['Alice', 'Bob'].include? names.first }
410
403
  end
411
404
  end
412
405
  end
@@ -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::TagAnnotation' do
6
4
 
5
+ after do
6
+ ActiveTriples::Repositories.repositories[LD4L::OpenAnnotationRDF::CommentAnnotation.repository].clear!
7
+ end
8
+
7
9
  subject { LD4L::OpenAnnotationRDF::TagAnnotation.new }
8
10
 
9
11
  describe 'rdf_subject' do
@@ -23,22 +25,22 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' 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::TagAnnotation' 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
 
@@ -273,18 +275,18 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
273
275
 
274
276
  describe 'motivatedBy' do
275
277
  it "should be OA.tagging if we haven't set it" do
276
- expect(subject.motivatedBy.first).to eq RDFVocabularies::OA.tagging
278
+ expect(subject.motivatedBy.first).to eq RDF::Vocab::OA.tagging
277
279
  end
278
280
 
279
281
  it "should be settable" do
280
- subject.motivatedBy = RDFVocabularies::OA.describing
281
- expect(subject.motivatedBy.first).to eq RDFVocabularies::OA.describing
282
+ subject.motivatedBy = RDF::Vocab::OA.describing
283
+ expect(subject.motivatedBy.first).to eq RDF::Vocab::OA.describing
282
284
  end
283
285
 
284
286
  it "should be changeable" do
285
- subject.motivatedBy = RDFVocabularies::OA.describing
286
- subject.motivatedBy = RDFVocabularies::OA.classifying
287
- expect(subject.motivatedBy.first).to eq RDFVocabularies::OA.classifying
287
+ subject.motivatedBy = RDF::Vocab::OA.describing
288
+ subject.motivatedBy = RDF::Vocab::OA.classifying
289
+ expect(subject.motivatedBy.first).to eq RDF::Vocab::OA.classifying
288
290
  end
289
291
  end
290
292
 
@@ -316,7 +318,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
316
318
 
317
319
  context "when it is saved" do
318
320
  before do
319
- subject.motivatedBy = RDFVocabularies::OA.commenting
321
+ subject.motivatedBy = RDF::Vocab::OA.commenting
320
322
  subject.persist!
321
323
  end
322
324
 
@@ -326,7 +328,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
326
328
 
327
329
  context "and then modified" do
328
330
  before do
329
- subject.motivatedBy = RDFVocabularies::OA.tagging
331
+ subject.motivatedBy = RDF::Vocab::OA.tagging
330
332
  end
331
333
 
332
334
  it "should return true" do
@@ -339,7 +341,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
339
341
  end
340
342
 
341
343
  it "should reset the motivatedBy" do
342
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.commenting.to_s
344
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.commenting.to_s
343
345
  end
344
346
 
345
347
  it "should be persisted" do
@@ -361,7 +363,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
361
363
  # Create inmemory repository
362
364
  @repo = RDF::Repository.new
363
365
  ActiveTriples::Repositories.repositories[:default] = @repo
364
- subject.motivatedBy = RDFVocabularies::OA.commenting
366
+ subject.motivatedBy = RDF::Vocab::OA.commenting
365
367
  result
366
368
  end
367
369
 
@@ -375,7 +377,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
375
377
 
376
378
  it "should delete from the repository" do
377
379
  subject.reload
378
- expect(subject.motivatedBy.first.to_s).to eq RDFVocabularies::OA.commenting.to_s
380
+ expect(subject.motivatedBy.first.to_s).to eq RDF::Vocab::OA.commenting.to_s
379
381
  subject.motivatedBy = []
380
382
  expect(subject.motivatedBy).to eq []
381
383
  subject.persist!
@@ -403,7 +405,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
403
405
 
404
406
  describe '#destroy!' do
405
407
  before do
406
- subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
408
+ subject << RDF::Statement(RDF::Vocab::DC.LicenseDocument, RDF::Vocab::DC.title, 'LICENSE')
407
409
  end
408
410
 
409
411
  subject { LD4L::OpenAnnotationRDF::TagAnnotation.new('123') }
@@ -494,29 +496,29 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
494
496
 
495
497
  context 'with unmodeled data' do
496
498
  before do
497
- subject << RDF::Statement(subject.rdf_subject, RDF::DC.contributor, 'Tove Jansson')
498
- subject << RDF::Statement(subject.rdf_subject, RDF::DC.relation, RDF::URI('http://example.org/moomi'))
499
+ subject << RDF::Statement(subject.rdf_subject, RDF::Vocab::DC.contributor, 'Tove Jansson')
500
+ subject << RDF::Statement(subject.rdf_subject, RDF::Vocab::DC.relation, RDF::URI('http://example.org/moomi'))
499
501
  node = RDF::Node.new
500
- subject << RDF::Statement(RDF::URI('http://example.org/moomi'), RDF::DC.relation, node)
501
- subject << RDF::Statement(node, RDF::DC.title, 'bnode')
502
+ subject << RDF::Statement(RDF::URI('http://example.org/moomi'), RDF::Vocab::DC.relation, node)
503
+ subject << RDF::Statement(node, RDF::Vocab::DC.title, 'bnode')
502
504
  end
503
505
 
504
506
  it 'should include data with URIs as attribute names' do
505
- expect(subject.attributes[RDF::DC.contributor.to_s]).to eq ['Tove Jansson']
507
+ expect(subject.attributes[RDF::Vocab::DC.contributor.to_s]).to eq ['Tove Jansson']
506
508
  end
507
509
 
508
510
  it 'should return generic Resources' do
509
- expect(subject.attributes[RDF::DC.relation.to_s].first).to be_a ActiveTriples::Resource
511
+ expect(subject.attributes[RDF::Vocab::DC.relation.to_s].first).to be_a ActiveTriples::Resource
510
512
  end
511
513
 
512
514
  it 'should build deep data for Resources' do
513
- expect(subject.attributes[RDF::DC.relation.to_s].first.get_values(RDF::DC.relation).
514
- first.get_values(RDF::DC.title)).to eq ['bnode']
515
+ expect(subject.attributes[RDF::Vocab::DC.relation.to_s].first.get_values(RDF::Vocab::DC.relation).
516
+ first.get_values(RDF::Vocab::DC.title)).to eq ['bnode']
515
517
  end
516
518
 
517
519
  it 'should include deep data in serializable_hash' do
518
- expect(subject.serializable_hash[RDF::DC.relation.to_s].first.get_values(RDF::DC.relation).
519
- first.get_values(RDF::DC.title)).to eq ['bnode']
520
+ expect(subject.serializable_hash[RDF::Vocab::DC.relation.to_s].first.get_values(RDF::Vocab::DC.relation).
521
+ first.get_values(RDF::Vocab::DC.title)).to eq ['bnode']
520
522
  end
521
523
  end
522
524
 
@@ -593,13 +595,13 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
593
595
 
594
596
  describe 'editing the graph' do
595
597
  it 'should write properties when statements are added' do
596
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.motivatedBy, 'commenting')
598
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.motivatedBy, 'commenting')
597
599
  expect(subject.motivatedBy).to include 'commenting'
598
600
  end
599
601
 
600
602
  it 'should delete properties when statements are removed' do
601
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.annotatedBy, 'John Smith')
602
- subject.delete RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.annotatedBy, 'John Smith')
603
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.annotatedBy, 'John Smith')
604
+ subject.delete RDF::Statement.new(subject.rdf_subject, RDF::Vocab::OA.annotatedBy, 'John Smith')
603
605
  expect(subject.annotatedBy).to eq []
604
606
  end
605
607
  end
@@ -608,18 +610,18 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
608
610
  before do
609
611
  class DummyPerson < ActiveTriples::Resource
610
612
  configure :type => RDF::URI('http://example.org/Person')
611
- property :foafname, :predicate => RDF::FOAF.name
612
- property :publications, :predicate => RDF::FOAF.publications, :class_name => 'DummyDocument'
613
- property :knows, :predicate => RDF::FOAF.knows, :class_name => DummyPerson
613
+ property :foafname, :predicate => RDF::Vocab::FOAF.name
614
+ property :publications, :predicate => RDF::Vocab::FOAF.publications, :class_name => 'DummyDocument'
615
+ property :knows, :predicate => RDF::Vocab::FOAF.knows, :class_name => DummyPerson
614
616
  end
615
617
 
616
618
  class DummyDocument < ActiveTriples::Resource
617
619
  configure :type => RDF::URI('http://example.org/Document')
618
- property :title, :predicate => RDF::DC.title
619
- property :creator, :predicate => RDF::DC.creator, :class_name => 'DummyPerson'
620
+ property :title, :predicate => RDF::Vocab::DC.title
621
+ property :creator, :predicate => RDF::Vocab::DC.creator, :class_name => 'DummyPerson'
620
622
  end
621
623
 
622
- LD4L::OpenAnnotationRDF::TagAnnotation.property :item, :predicate => RDF::DC.relation, :class_name => DummyDocument
624
+ LD4L::OpenAnnotationRDF::TagAnnotation.property :item, :predicate => RDF::Vocab::DC.relation, :class_name => DummyDocument
623
625
  end
624
626
 
625
627
  subject { LD4L::OpenAnnotationRDF::TagAnnotation.new }
@@ -672,8 +674,10 @@ END
672
674
  document1.creator = [person1, person2]
673
675
  document2.creator = person1
674
676
  person1.knows = person2
677
+ person2.knows = person1
675
678
  subject.item = [document1]
676
- expect(subject.item.first.creator.first.knows.first.foafname).to eq ['Bob']
679
+ expect(subject.item.first.creator.first.knows.first.foafname)
680
+ .to satisfy { |names| ['Alice', 'Bob'].include? names.first }
677
681
  end
678
682
  end
679
683
  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::TagBody' do
7
4
 
5
+ after do
6
+ ActiveTriples::Repositories.repositories[LD4L::OpenAnnotationRDF::CommentAnnotation.repository].clear!
7
+ end
8
+
8
9
  subject { LD4L::OpenAnnotationRDF::TagBody.new }
9
10
 
10
11
  describe 'rdf_subject' do
@@ -24,22 +25,22 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' 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,10 +63,10 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
62
63
  describe 'type' do
63
64
  it "should be set to text and astext 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::OA.Tag
68
- expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
68
+ expect(expected_results).to include RDF::Vocab::OA.Tag
69
+ expect(expected_results).to include RDF::Vocab::CNT.ContentAsText
69
70
  end
70
71
  end
71
72
 
@@ -107,7 +108,7 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
107
108
  end
108
109
 
109
110
  context "when tags exist in the repository" do
110
- before(:all) do
111
+ before do
111
112
  # Create inmemory repository
112
113
  ta = LD4L::OpenAnnotationRDF::TagAnnotation.new('http://example.org/ta1')
113
114
  ta.setTag('EXISTING_tag')
@@ -119,11 +120,6 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
119
120
  tb.tag = 'UNUSED_tag'
120
121
  tb.persist!
121
122
  end
122
- after(:all) do
123
- LD4L::OpenAnnotationRDF::TagAnnotation.new('http://example.org/ta1').destroy!
124
- LD4L::OpenAnnotationRDF::TagAnnotation.new('http://example.org/ta2').destroy!
125
- LD4L::OpenAnnotationRDF::TagBody.new('http://example.org/UNUSED_tag').destroy!
126
- end
127
123
 
128
124
  it "should find annotations using a tag" do
129
125
  annotations = LD4L::OpenAnnotationRDF::TagBody.annotations_using('EXISTING_tag')
@@ -165,7 +161,7 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
165
161
  end
166
162
 
167
163
  context "when tags exist in the repository" do
168
- before(:all) do
164
+ before do
169
165
  # Create inmemory repository
170
166
  ta = LD4L::OpenAnnotationRDF::TagAnnotation.new('http://example.org/ta1')
171
167
  ta.setTag('EXISTING_tag')
@@ -177,11 +173,6 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
177
173
  tb.tag = 'UNUSED_tag'
178
174
  tb.persist!
179
175
  end
180
- after(:all) do
181
- LD4L::OpenAnnotationRDF::TagAnnotation.new('http://example.org/ta1').destroy!
182
- LD4L::OpenAnnotationRDF::TagAnnotation.new('http://example.org/ta2').destroy!
183
- LD4L::OpenAnnotationRDF::TagBody.new('http://example.org/UNUSED_tag').destroy!
184
- end
185
176
 
186
177
  it "should not find non-existent tag" do
187
178
  expect( LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value('NONEXISTING_tag') ).to be_nil
@@ -307,7 +298,7 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
307
298
 
308
299
  describe '#destroy!' do
309
300
  before do
310
- subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
301
+ subject << RDF::Statement(RDF::Vocab::DC.LicenseDocument, RDF::Vocab::DC.title, 'LICENSE')
311
302
  end
312
303
 
313
304
  subject { LD4L::OpenAnnotationRDF::TagBody.new('456')}
@@ -344,13 +335,13 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
344
335
 
345
336
  describe 'editing the graph' do
346
337
  it 'should write properties when statements are added' do
347
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'good')
338
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::CNT.chars, 'good')
348
339
  expect(subject.tag).to include 'good'
349
340
  end
350
341
 
351
342
  it 'should delete properties when statements are removed' do
352
- subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'good')
353
- subject.delete RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'good')
343
+ subject << RDF::Statement.new(subject.rdf_subject, RDF::Vocab::CNT.chars, 'good')
344
+ subject.delete RDF::Statement.new(subject.rdf_subject, RDF::Vocab::CNT.chars, 'good')
354
345
  expect(subject.tag).to eq []
355
346
  end
356
347
  end
@@ -359,18 +350,18 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
359
350
  before do
360
351
  class DummyPerson < ActiveTriples::Resource
361
352
  configure :type => RDF::URI('http://example.org/Person')
362
- property :foafname, :predicate => RDF::FOAF.name
363
- property :publications, :predicate => RDF::FOAF.publications, :class_name => 'DummyDocument'
364
- property :knows, :predicate => RDF::FOAF.knows, :class_name => DummyPerson
353
+ property :foafname, :predicate => RDF::Vocab::FOAF.name
354
+ property :publications, :predicate => RDF::Vocab::FOAF.publications, :class_name => 'DummyDocument'
355
+ property :knows, :predicate => RDF::Vocab::FOAF.knows, :class_name => DummyPerson
365
356
  end
366
357
 
367
358
  class DummyDocument < ActiveTriples::Resource
368
359
  configure :type => RDF::URI('http://example.org/Document')
369
- property :title, :predicate => RDF::DC.title
370
- property :creator, :predicate => RDF::DC.creator, :class_name => 'DummyPerson'
360
+ property :title, :predicate => RDF::Vocab::DC.title
361
+ property :creator, :predicate => RDF::Vocab::DC.creator, :class_name => 'DummyPerson'
371
362
  end
372
363
 
373
- LD4L::OpenAnnotationRDF::TagBody.property :item, :predicate => RDF::DC.relation, :class_name => DummyDocument
364
+ LD4L::OpenAnnotationRDF::TagBody.property :item, :predicate => RDF::Vocab::DC.relation, :class_name => DummyDocument
374
365
  end
375
366
 
376
367
  subject { LD4L::OpenAnnotationRDF::TagBody.new }
@@ -423,8 +414,10 @@ END
423
414
  document1.creator = [person1, person2]
424
415
  document2.creator = person1
425
416
  person1.knows = person2
417
+ person2.knows = person1
426
418
  subject.item = [document1]
427
- expect(subject.item.first.creator.first.knows.first.foafname).to eq ['Bob']
419
+ expect(subject.item.first.creator.first.knows.first.foafname)
420
+ .to satisfy { |names| ['Alice', 'Bob'].include? names.first }
428
421
  end
429
422
  end
430
423
  end