wf4ever-rosrs-client 0.1.1 → 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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -225,6 +225,20 @@ module ROSRS
225
225
  end
226
226
  end
227
227
 
228
+ def check_research_object(ro_uri)
229
+ code, reason = do_request_follow_redirect("GET", ro_uri,
230
+ :accept => "application/rdf+xml")
231
+
232
+ case code
233
+ when 200
234
+ true
235
+ when 404
236
+ false
237
+ else
238
+ error(code, "Error checking for RO #{ro_uri}: #{code} #{reason}")
239
+ end
240
+ end
241
+
228
242
  # ---------------------
229
243
  # Resource manipulation
230
244
  # ---------------------
@@ -468,16 +482,30 @@ module ROSRS
468
482
  # Enumerate annnotation URIs associated with a resource
469
483
  # (or all annotations for an RO)
470
484
  #
471
- # Returns an array of annotation URIs
472
- def get_annotation_stub_uris(ro_uri, resource_uri=nil)
485
+ # Returns an array of annotation statements
486
+ def get_annotation_statements(ro_uri, resource_uri=nil)
473
487
  manifesturi, manifest = get_manifest(ro_uri)
474
- stuburis = []
475
- manifest.query(:object => RDF::URI(resource_uri)) do |stmt|
488
+ statements = []
489
+
490
+ resource_uri = RDF::URI.parse(ro_uri).join(RDF::URI.parse(resource_uri)) if ro_uri
491
+
492
+ manifest.query(:object => resource_uri) do |stmt|
476
493
  if [RDF::AO.annotatesResource,RDF::RO.annotatesAggregatedResource].include?(stmt.predicate)
477
- stuburis << stmt.subject
494
+ statements << stmt
478
495
  end
479
496
  end
480
- stuburis
497
+ statements
498
+ end
499
+
500
+ ##
501
+ # Enumerate annnotation URIs associated with a resource
502
+ # (or all annotations for an RO)
503
+ #
504
+ # Returns an array of annotation URIs
505
+ def get_annotation_stub_uris(ro_uri, resource_uri=nil)
506
+ get_annotation_statements(ro_uri, resource_uri).map do |statement|
507
+ statement.subject
508
+ end
481
509
  end
482
510
 
483
511
  ##
@@ -510,6 +538,37 @@ module ROSRS
510
538
  body_uris.uniq
511
539
  end
512
540
 
541
+ ##
542
+ # Retrieve RDF graphs of all annnotations associated with a resource
543
+ # (or all annotations for an RO)
544
+ #
545
+ # Returns graph of merged annotations
546
+ def get_annotation_graphs(ro_uri, resource_uri=nil)
547
+ annotation_graphs = []
548
+ get_annotation_statements(ro_uri, resource_uri).each do |annotation_statement|
549
+ auri = annotation_statement.subject
550
+ resuri = annotation_statement.object
551
+ code, reason, headers, buri, bodytext = do_request_follow_redirect("GET", auri, {})
552
+ if code == 200
553
+ content_type = headers['content-type'].split(';', 2)[0].strip.downcase
554
+ if ANNOTATION_CONTENT_TYPES.include?(content_type)
555
+ bodyformat = ANNOTATION_CONTENT_TYPES[content_type]
556
+ annotation_graphs << {
557
+ :stub => auri,
558
+ :resource_uri => resuri,
559
+ :body_uri => buri,
560
+ :body => ROSRS::RDFGraph.new.load_data(bodytext, bodyformat)
561
+ }
562
+ else
563
+ warn("Warning: #{buri} has unrecognized content-type: #{content_type}")
564
+ end
565
+ else
566
+ error(code, "Failed to GET #{buri}: #{code} #{reason}")
567
+ end
568
+ end
569
+ annotation_graphs
570
+ end
571
+
513
572
  ##
514
573
  # Build RDF graph of all annnotations associated with a resource
515
574
  # (or all annotations for an RO)
@@ -669,4 +728,4 @@ module ROSRS
669
728
  end
670
729
 
671
730
  end
672
- end
731
+ end
@@ -1,5 +1,5 @@
1
1
  # Test suite for ROSRS_Session
2
- require 'helper'
2
+ require File.dirname(__FILE__) + '/helper'
3
3
 
4
4
 
5
5
  class TestAbstractInteraction < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
1
  # Test suite for ROSRS_Session
2
- require 'helper'
2
+ require File.dirname(__FILE__) + '/helper'
3
3
 
4
4
 
5
5
  class TestROSRSSession < Test::Unit::TestCase
@@ -23,6 +23,19 @@ class TestROSRSSession < Test::Unit::TestCase
23
23
  def setup
24
24
  @rouri = nil
25
25
  @rosrs = ROSRS::Session.new(Config.rosrs_api_uri, Config.authorization)
26
+
27
+ if VERSION < "1.9.1"
28
+ StringIO.class_eval do
29
+ def readpartial(*args)
30
+ result = read(*args)
31
+ if result.nil?
32
+ raise EOFError
33
+ else
34
+ result
35
+ end
36
+ end
37
+ end
38
+ end
26
39
  end
27
40
 
28
41
  def teardown
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wf4ever-rosrs-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -150,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  segments:
152
152
  - 0
153
- hash: -1897620124833097638
153
+ hash: -726066348641982817
154
154
  required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  none: false
156
156
  requirements: