ld4l-open_annotation_rdf 0.0.9 → 0.0.10
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dead51a1f44d03f97a677dbefc02627755cde61f
|
4
|
+
data.tar.gz: c112a5480577c43081b804fedd85ee2ec26da318
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e0930ad32df385a13d6c6ea9b70c3b2793dcabeefa5d32bd51de3e11d72aeecce613eb5488cd2dd3669f8fa555cc1e683ff2c6ee08b80db9d07518d6cfbb7dc
|
7
|
+
data.tar.gz: 5aa4a659b04fd50778cde628597470700bb75c9bb90a58535b3c81f827811c8b85c6b769ed971f785a1c28206336fe9d2513c0ad4aea62a3c60ed71b25930dc8
|
@@ -23,7 +23,9 @@ module LD4L
|
|
23
23
|
|
24
24
|
# get motivatedBy
|
25
25
|
m = a.get_values(:motivatedBy)
|
26
|
-
|
26
|
+
# TODO: Should m's class be validated? I've seen it be RDF::Vocabulary::Term and RDF::URI. For now, removing the validation.
|
27
|
+
return a unless m.kind_of?(Array) && m.size > 0
|
28
|
+
# return a unless m.kind_of?(Array) && m.size > 0 && (m.first.kind_of?(RDF::Vocabulary::Term) || m.first.kind_of?(RDF::URI)
|
27
29
|
|
28
30
|
# motivatedBy is set
|
29
31
|
m_uri = m.first
|
@@ -4,10 +4,14 @@ module LD4L
|
|
4
4
|
|
5
5
|
@localname_prefix = "sta"
|
6
6
|
|
7
|
+
property :hasBody, :predicate => RDFVocabularies::OA.hasBody, :class_name => LD4L::OpenAnnotationRDF::SemanticTagBody
|
8
|
+
|
9
|
+
|
7
10
|
# USAGE: Use setTerm to set the hasBody property to be the URI of the controlled vocabulary term that
|
8
11
|
# is the annotation.
|
9
12
|
|
10
13
|
# TODO: Should a semantic tag be destroyed when the last annotation referencing the term is destroyed?
|
14
|
+
# TODO: What if other triples have been attached beyond the type?
|
11
15
|
|
12
16
|
##
|
13
17
|
# Set the hasBody property to the URI of the controlled vocabulary term that is the annotation and
|
@@ -173,79 +173,285 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
|
|
173
173
|
LD4L::FoafRDF::Person.new('p4')
|
174
174
|
end
|
175
175
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
176
|
+
context "when annotation body is persisted" do
|
177
|
+
it "should resume an instance of CommentAnnotation and its body" do
|
178
|
+
a_time = Time::now.strftime("%Y-%m-%dT%H:%M:%S.%L%z")
|
179
|
+
ca = LD4L::OpenAnnotationRDF::CommentAnnotation.new('ca_1')
|
180
|
+
ca.hasTarget = RDF::URI("http://example.org/bibref/br3")
|
181
|
+
ca.setComment("This is a comment.")
|
182
|
+
ca.annotatedBy = a_person
|
183
|
+
ca.annotatedAt = a_time
|
184
|
+
ca.persist!
|
185
|
+
expect(ca).to be_persisted
|
186
|
+
uri = ca.rdf_subject
|
187
|
+
|
188
|
+
a = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
189
|
+
expect(a).to be_a_kind_of(LD4L::OpenAnnotationRDF::CommentAnnotation)
|
190
|
+
expect(a.hasTarget.first.rdf_subject.to_s).to eq "http://example.org/bibref/br3"
|
191
|
+
expect(a.annotatedBy.first).to eq a_person
|
192
|
+
expect(a.annotatedAt.first).to eq a_time
|
193
|
+
expect(a.motivatedBy.first).to eq RDFVocabularies::OA.commenting
|
194
|
+
|
195
|
+
b = a.getBody
|
196
|
+
expect(b).to be_a_kind_of(LD4L::OpenAnnotationRDF::CommentBody)
|
197
|
+
expect(b.type).to include RDFVocabularies::DCTYPES.Text
|
198
|
+
expect(b.type).to include RDFVocabularies::CNT.ContentAsText
|
199
|
+
expect(b.content).to eq ["This is a comment."]
|
200
|
+
expect(b.format.first).to eq "text/plain"
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should resume an instance of TagAnnotation and its body" do
|
204
|
+
a_time = Time::now.strftime("%Y-%m-%dT%H:%M:%S.%L%z")
|
205
|
+
ta = LD4L::OpenAnnotationRDF::TagAnnotation.new('ta_2')
|
206
|
+
ta.hasTarget = RDF::URI("http://example.org/bibref/br3")
|
207
|
+
ta.setTag("good")
|
208
|
+
ta.annotatedBy = a_person
|
209
|
+
ta.annotatedAt = a_time
|
210
|
+
ta.persist!
|
211
|
+
expect(ta).to be_persisted
|
212
|
+
uri = ta.rdf_subject
|
213
|
+
|
214
|
+
a = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
215
|
+
expect(a).to be_a_kind_of(LD4L::OpenAnnotationRDF::TagAnnotation)
|
216
|
+
expect(a.hasTarget.first.rdf_subject.to_s).to eq "http://example.org/bibref/br3"
|
217
|
+
expect(a.annotatedBy.first).to eq a_person
|
218
|
+
expect(a.annotatedAt.first).to eq a_time
|
219
|
+
expect(a.motivatedBy.first).to eq RDFVocabularies::OA.tagging
|
220
|
+
|
221
|
+
b = a.getBody
|
222
|
+
expect(b).to be_a_kind_of(LD4L::OpenAnnotationRDF::TagBody)
|
223
|
+
expect(b.type).to include RDFVocabularies::OA.Tag
|
224
|
+
expect(b.type).to include RDFVocabularies::CNT.ContentAsText
|
225
|
+
expect(b.tag).to eq ["good"]
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should resume an instance of SemanticTagAnnotation and its body" do
|
229
|
+
a_time = Time::now.strftime("%Y-%m-%dT%H:%M:%S.%L%z")
|
230
|
+
sta = LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('sta_3')
|
231
|
+
sta.hasTarget = RDF::URI("http://example.org/bibref/br3")
|
232
|
+
sta.setTerm('http://example.org/term/3')
|
233
|
+
sta.annotatedBy = a_person
|
234
|
+
sta.annotatedAt = a_time
|
235
|
+
sta.persist!
|
236
|
+
expect(sta).to be_persisted
|
237
|
+
uri = sta.rdf_subject
|
238
|
+
|
239
|
+
a = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
240
|
+
expect(a).to be_a_kind_of(LD4L::OpenAnnotationRDF::SemanticTagAnnotation)
|
241
|
+
expect(a.hasTarget.first.rdf_subject.to_s).to eq "http://example.org/bibref/br3"
|
242
|
+
expect(a.annotatedBy.first).to eq a_person
|
243
|
+
expect(a.annotatedAt.first).to eq a_time
|
244
|
+
expect(a.motivatedBy.first).to eq RDFVocabularies::OA.tagging
|
245
|
+
|
246
|
+
b = a.getBody
|
247
|
+
expect(b).to be_a_kind_of(LD4L::OpenAnnotationRDF::SemanticTagBody)
|
248
|
+
expect(b.type).to include RDFVocabularies::OA.SemanticTag
|
249
|
+
expect(b.rdf_subject.to_s).to eq('http://example.org/term/3')
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
context "when annotation body is a blank node" do
|
254
|
+
it "should resume an instance of CommentAnnotation and a blank node body" do
|
255
|
+
a_time = Time::now.strftime("%Y-%m-%dT%H:%M:%S.%L%z")
|
256
|
+
ca = LD4L::OpenAnnotationRDF::CommentAnnotation.new('ca_1')
|
257
|
+
ca.hasTarget = RDF::URI("http://example.org/bibref/br3")
|
258
|
+
|
259
|
+
cb = LD4L::OpenAnnotationRDF::CommentBody.new # create body as blank node
|
260
|
+
cb.content = "BLANK NODE COMMENT"
|
261
|
+
cb.format = "text/plain"
|
262
|
+
cb.persist!
|
263
|
+
expect(cb).to be_persisted
|
264
|
+
|
265
|
+
ca.hasBody = cb
|
266
|
+
ca.annotatedBy = a_person
|
267
|
+
ca.annotatedAt = a_time
|
268
|
+
ca.persist!
|
269
|
+
expect(ca).to be_persisted
|
270
|
+
uri = ca.rdf_subject
|
271
|
+
|
272
|
+
a = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
273
|
+
expect(a).to be_a_kind_of(LD4L::OpenAnnotationRDF::CommentAnnotation)
|
274
|
+
expect(a.hasTarget.first.rdf_subject.to_s).to eq "http://example.org/bibref/br3"
|
275
|
+
expect(a.annotatedBy.first).to eq a_person
|
276
|
+
expect(a.annotatedAt.first).to eq a_time
|
277
|
+
expect(a.motivatedBy.first).to eq RDFVocabularies::OA.commenting
|
278
|
+
|
279
|
+
b = a.getBody
|
280
|
+
expect(b).to be_a_kind_of(LD4L::OpenAnnotationRDF::CommentBody)
|
281
|
+
expect(b.type).to include RDFVocabularies::DCTYPES.Text
|
282
|
+
expect(b.type).to include RDFVocabularies::CNT.ContentAsText
|
283
|
+
expect(b.content).to eq ["BLANK NODE COMMENT"]
|
284
|
+
expect(b.format.first).to eq "text/plain"
|
285
|
+
end
|
286
|
+
|
287
|
+
it "should resume an instance of TagAnnotation and a blank node body" do
|
288
|
+
a_time = Time::now.strftime("%Y-%m-%dT%H:%M:%S.%L%z")
|
289
|
+
ta = LD4L::OpenAnnotationRDF::TagAnnotation.new('ta_4')
|
290
|
+
ta.hasTarget = RDF::URI("http://example.org/bibref/br3")
|
291
|
+
ta.annotatedBy = a_person
|
292
|
+
ta.annotatedAt = a_time
|
293
|
+
|
294
|
+
tb = LD4L::OpenAnnotationRDF::TagBody.new # create body as blank node
|
295
|
+
tb.tag = "BLANK_NODE_TAG"
|
296
|
+
tb.persist!
|
297
|
+
expect(tb).to be_persisted
|
298
|
+
|
299
|
+
ta.hasBody = tb
|
300
|
+
ta.persist!
|
301
|
+
expect(ta).to be_persisted
|
302
|
+
uri = ta.rdf_subject
|
303
|
+
|
304
|
+
a = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
305
|
+
expect(a).to be_a_kind_of(LD4L::OpenAnnotationRDF::TagAnnotation)
|
306
|
+
expect(a.hasTarget.first.rdf_subject.to_s).to eq "http://example.org/bibref/br3"
|
307
|
+
expect(a.annotatedBy.first).to eq a_person
|
308
|
+
expect(a.annotatedAt.first).to eq a_time
|
309
|
+
expect(a.motivatedBy.first).to eq RDFVocabularies::OA.tagging
|
310
|
+
|
311
|
+
b = a.getBody
|
312
|
+
expect(b).to be_a_kind_of(LD4L::OpenAnnotationRDF::TagBody)
|
313
|
+
expect(b.type).to include RDFVocabularies::OA.Tag
|
314
|
+
expect(b.type).to include RDFVocabularies::CNT.ContentAsText
|
315
|
+
expect(b.tag).to eq ["BLANK_NODE_TAG"]
|
316
|
+
end
|
317
|
+
|
318
|
+
it "should resume an instance of SemanticTagAnnotation and body object is missing" do
|
319
|
+
|
320
|
+
|
321
|
+
# SKIPPED FOR REWRITE FOR BLANK NODE
|
322
|
+
# pending ("rewrite for blank node")
|
323
|
+
|
324
|
+
|
325
|
+
a_time = Time::now.strftime("%Y-%m-%dT%H:%M:%S.%L%z")
|
326
|
+
sta = LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new('sta_3')
|
327
|
+
sta.hasTarget = RDF::URI("http://example.org/bibref/br3")
|
328
|
+
sta.hasBody = RDF::URI('http://example.org/term/3') # don't create a cooresponding body object
|
329
|
+
sta.annotatedBy = a_person
|
330
|
+
sta.annotatedAt = a_time
|
331
|
+
sta.persist!
|
332
|
+
expect(sta).to be_persisted
|
333
|
+
uri = sta.rdf_subject
|
334
|
+
|
335
|
+
a = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
336
|
+
expect(a).to be_a_kind_of(LD4L::OpenAnnotationRDF::SemanticTagAnnotation)
|
337
|
+
expect(a.hasTarget.first.rdf_subject.to_s).to eq "http://example.org/bibref/br3"
|
338
|
+
expect(a.annotatedBy.first).to eq a_person
|
339
|
+
expect(a.annotatedAt.first).to eq a_time
|
340
|
+
expect(a.motivatedBy.first).to eq RDFVocabularies::OA.tagging
|
341
|
+
|
342
|
+
b = a.getBody
|
343
|
+
expect(b).to be_a_kind_of(LD4L::OpenAnnotationRDF::SemanticTagBody)
|
344
|
+
expect(b.type).to include RDFVocabularies::OA.SemanticTag
|
345
|
+
expect(b.rdf_subject.to_s).to eq('http://example.org/term/3')
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
context "when loading from graph" do
|
350
|
+
context "and has blank node for body" do
|
351
|
+
context "and triples represent a comment annotation" do
|
352
|
+
before(:each) do
|
353
|
+
@anno_url = "http://my_oa_store/COMMENT_ANNO"
|
354
|
+
@comment_value = "This is a comment."
|
355
|
+
ttl = "<#{@anno_url}> a <http://www.w3.org/ns/oa#Annotation>;
|
356
|
+
<http://www.w3.org/ns/oa#hasBody> [
|
357
|
+
a <http://purl.org/dc/dcmitype/Text>,
|
358
|
+
<http://www.w3.org/2011/content#ContentAsText>;
|
359
|
+
<http://www.w3.org/2011/content#chars> \"#{@comment_value}\" ;
|
360
|
+
<http://purl.org/dc/terms/format> \"text/plain\"
|
361
|
+
];
|
362
|
+
<http://www.w3.org/ns/oa#hasTarget> <http://searchworks.stanford.edu/view/666>;
|
363
|
+
<http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#commenting> ."
|
364
|
+
|
365
|
+
anno_graph = RDF::Graph.new.from_ttl ttl
|
366
|
+
r = ActiveTriples::Repositories.repositories[:default]
|
367
|
+
r << anno_graph
|
368
|
+
anno_uri = RDF::URI.new(@anno_url)
|
369
|
+
@comment_anno = LD4L::OpenAnnotationRDF::Annotation.resume(anno_uri)
|
370
|
+
end
|
371
|
+
it "populates LD4L::OpenAnnotationRDF::TagAnnotation properly" do
|
372
|
+
expect(@comment_anno.rdf_subject.to_s).to eq @anno_url
|
373
|
+
expect(@comment_anno).to be_a LD4L::OpenAnnotationRDF::CommentAnnotation
|
374
|
+
expect(@comment_anno.type).to include(RDFVocabularies::OA.Annotation)
|
375
|
+
expect(@comment_anno.motivatedBy).to include(RDFVocabularies::OA.commenting)
|
376
|
+
expect(@comment_anno.hasTarget.first.rdf_subject).to eq RDF::URI.new("http://searchworks.stanford.edu/view/666")
|
377
|
+
end
|
378
|
+
it "populates Tag bodies properly" do
|
379
|
+
body = @comment_anno.hasBody.first
|
380
|
+
expect(body).to be_a LD4L::OpenAnnotationRDF::CommentBody
|
381
|
+
expect(body.content.first).to eq @comment_value
|
382
|
+
expect(body.type).to include(RDFVocabularies::CNT.ContentAsText)
|
383
|
+
expect(body.type).to include(RDFVocabularies::DCTYPES.Text)
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
387
|
+
context "and triples represent a tag annotation" do
|
388
|
+
before(:each) do
|
389
|
+
@anno_url = "http://my_oa_store/TAG_ANNO"
|
390
|
+
@tag_value = "blue"
|
391
|
+
ttl = "<#{@anno_url}> a <http://www.w3.org/ns/oa#Annotation>;
|
392
|
+
<http://www.w3.org/ns/oa#hasBody> [
|
393
|
+
a <http://purl.org/dc/dcmitype/Text>,
|
394
|
+
<http://www.w3.org/2011/content#ContentAsText>,
|
395
|
+
<http://www.w3.org/ns/oa#Tag>;
|
396
|
+
<http://www.w3.org/2011/content#chars> \"#{@tag_value}\" ;
|
397
|
+
<http://purl.org/dc/terms/format> \"text/plain\"
|
398
|
+
];
|
399
|
+
<http://www.w3.org/ns/oa#hasTarget> <http://searchworks.stanford.edu/view/666>;
|
400
|
+
<http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#tagging> ."
|
401
|
+
|
402
|
+
anno_graph = RDF::Graph.new.from_ttl ttl
|
403
|
+
r = ActiveTriples::Repositories.repositories[:default]
|
404
|
+
r << anno_graph
|
405
|
+
anno_uri = RDF::URI.new(@anno_url)
|
406
|
+
@tag_anno = LD4L::OpenAnnotationRDF::Annotation.resume(anno_uri)
|
407
|
+
end
|
408
|
+
it "populates LD4L::OpenAnnotationRDF::TagAnnotation properly" do
|
409
|
+
expect(@tag_anno.rdf_subject.to_s).to eq @anno_url
|
410
|
+
expect(@tag_anno).to be_a LD4L::OpenAnnotationRDF::TagAnnotation
|
411
|
+
expect(@tag_anno.type).to include(RDFVocabularies::OA.Annotation)
|
412
|
+
expect(@tag_anno.motivatedBy).to include(RDFVocabularies::OA.tagging)
|
413
|
+
expect(@tag_anno.hasTarget.first.rdf_subject).to eq RDF::URI.new("http://searchworks.stanford.edu/view/666")
|
414
|
+
end
|
415
|
+
it "populates Tag bodies properly" do
|
416
|
+
body = @tag_anno.hasBody.first
|
417
|
+
expect(body).to be_a LD4L::OpenAnnotationRDF::TagBody
|
418
|
+
expect(body.tag.first).to eq @tag_value
|
419
|
+
expect(body.type).to include(RDFVocabularies::OA.Tag)
|
420
|
+
expect(body.type).to include(RDFVocabularies::CNT.ContentAsText)
|
421
|
+
expect(body.type).to include(RDFVocabularies::DCTYPES.Text)
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
context "and triples represent a semantic tag annotation" do
|
426
|
+
before(:each) do
|
427
|
+
@anno_url = "http://my_oa_store/SEMANTIC_TAG_ANNO"
|
428
|
+
@term_url = "http://example.org/terms/foo"
|
429
|
+
ttl = "<#{@anno_url}> a <http://www.w3.org/ns/oa#Annotation>;
|
430
|
+
<http://www.w3.org/ns/oa#hasBody> <#{@term_url}>;
|
431
|
+
<http://www.w3.org/ns/oa#hasTarget> <http://searchworks.stanford.edu/view/666>;
|
432
|
+
<http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#tagging> ."
|
433
|
+
|
434
|
+
anno_graph = RDF::Graph.new.from_ttl ttl
|
435
|
+
r = ActiveTriples::Repositories.repositories[:default]
|
436
|
+
r << anno_graph
|
437
|
+
anno_uri = RDF::URI.new(@anno_url)
|
438
|
+
@semantic_tag_anno = LD4L::OpenAnnotationRDF::Annotation.resume(anno_uri)
|
439
|
+
end
|
440
|
+
it "populates LD4L::OpenAnnotationRDF::TagAnnotation properly" do
|
441
|
+
expect(@semantic_tag_anno.rdf_subject.to_s).to eq @anno_url
|
442
|
+
expect(@semantic_tag_anno).to be_a LD4L::OpenAnnotationRDF::SemanticTagAnnotation
|
443
|
+
expect(@semantic_tag_anno.type).to include(RDFVocabularies::OA.Annotation)
|
444
|
+
expect(@semantic_tag_anno.motivatedBy).to include(RDFVocabularies::OA.tagging)
|
445
|
+
expect(@semantic_tag_anno.hasTarget.first.rdf_subject).to eq RDF::URI.new("http://searchworks.stanford.edu/view/666")
|
446
|
+
end
|
447
|
+
it "populates Tag bodies properly" do
|
448
|
+
body = @semantic_tag_anno.hasBody.first
|
449
|
+
expect(body.rdf_subject.to_s).to eq @term_url
|
450
|
+
expect(body).to be_a LD4L::OpenAnnotationRDF::SemanticTagBody
|
451
|
+
expect(body.type).to include(RDFVocabularies::OA.SemanticTag)
|
452
|
+
end
|
453
|
+
end
|
454
|
+
end
|
249
455
|
end
|
250
456
|
end
|
251
457
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ld4l-open_annotation_rdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- E. Lynette Rayle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdf
|
@@ -226,3 +226,4 @@ test_files:
|
|
226
226
|
- spec/ld4l/open_annotation_rdf/tag_body_spec.rb
|
227
227
|
- spec/ld4l/open_annotation_rdf_spec.rb
|
228
228
|
- spec/spec_helper.rb
|
229
|
+
has_rdoc:
|