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
@@ -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