bio-publisci 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Rakefile +1 -1
  4. data/examples/prov_dsl.prov +2 -1
  5. data/examples/safe_gen.rb +7 -0
  6. data/examples/visualization/primer.prov +66 -0
  7. data/examples/visualization/prov_viz.rb +140 -0
  8. data/examples/visualization/viz.rb +35 -0
  9. data/features/metadata_steps.rb +2 -4
  10. data/features/orm_steps.rb +4 -4
  11. data/features/reader_steps.rb +1 -1
  12. data/features/store_steps.rb +1 -1
  13. data/features/writer.feature +1 -1
  14. data/features/writer_steps.rb +1 -1
  15. data/lib/bio-publisci.rb +10 -2
  16. data/lib/bio-publisci/analyzer.rb +4 -4
  17. data/lib/bio-publisci/{spira.rb → datacube_model.rb} +4 -5
  18. data/lib/bio-publisci/dataset/ORM/data_cube_orm.rb +12 -12
  19. data/lib/bio-publisci/dataset/ORM/observation.rb +1 -1
  20. data/lib/bio-publisci/dataset/configuration.rb +31 -0
  21. data/lib/bio-publisci/dataset/data_cube.rb +28 -17
  22. data/lib/bio-publisci/dataset/dataset.rb +11 -0
  23. data/lib/bio-publisci/dataset/dataset_for.rb +19 -9
  24. data/lib/bio-publisci/dataset/interactive.rb +1 -1
  25. data/lib/bio-publisci/dsl/config.rb +34 -0
  26. data/lib/bio-publisci/dsl/dataset_dsl.rb +91 -0
  27. data/lib/bio-publisci/dsl/dsl.rb +69 -0
  28. data/lib/bio-publisci/dsl/metadata_dsl.rb +85 -0
  29. data/lib/bio-publisci/{metadata/prov/dsl.rb → dsl/prov_dsl.rb} +30 -6
  30. data/lib/bio-publisci/metadata/generator.rb +323 -0
  31. data/lib/bio-publisci/metadata/metadata.rb +3 -314
  32. data/lib/bio-publisci/metadata/prov/activity.rb +3 -1
  33. data/lib/bio-publisci/metadata/prov/agent.rb +1 -1
  34. data/lib/bio-publisci/metadata/prov/association.rb +2 -2
  35. data/lib/bio-publisci/metadata/prov/config.rb +34 -0
  36. data/lib/bio-publisci/metadata/prov/derivation.rb +7 -2
  37. data/lib/bio-publisci/metadata/prov/element.rb +2 -2
  38. data/lib/bio-publisci/metadata/prov/entity.rb +1 -22
  39. data/lib/bio-publisci/metadata/prov/model/prov_models.rb +8 -9
  40. data/lib/bio-publisci/metadata/prov/plan.rb +1 -1
  41. data/lib/bio-publisci/metadata/prov/prov.rb +23 -21
  42. data/lib/bio-publisci/metadata/prov/role.rb +1 -1
  43. data/lib/bio-publisci/metadata/prov/usage.rb +1 -1
  44. data/lib/bio-publisci/metadata/publisher.rb +25 -0
  45. data/lib/bio-publisci/mixins/dereferencable.rb +1 -1
  46. data/lib/bio-publisci/mixins/registry.rb +27 -0
  47. data/lib/bio-publisci/output.rb +1 -1
  48. data/lib/bio-publisci/parser.rb +1 -1
  49. data/lib/bio-publisci/query/query_helper.rb +14 -14
  50. data/lib/bio-publisci/r_client.rb +5 -5
  51. data/lib/bio-publisci/readers/arff.rb +5 -5
  52. data/lib/bio-publisci/readers/csv.rb +3 -3
  53. data/lib/bio-publisci/readers/dataframe.rb +3 -3
  54. data/lib/bio-publisci/readers/r_cross.rb +4 -4
  55. data/lib/bio-publisci/readers/r_matrix.rb +3 -3
  56. data/lib/bio-publisci/store.rb +3 -3
  57. data/lib/bio-publisci/writers/arff.rb +6 -6
  58. data/lib/bio-publisci/writers/dataframe.rb +5 -5
  59. data/scripts/islet_mlratio.rb +1 -1
  60. data/scripts/scan_islet.rb +1 -1
  61. data/scripts/update_reference.rb +2 -2
  62. data/spec/ORM/data_cube_orm_spec.rb +2 -2
  63. data/spec/ORM/prov_model_spec.rb +19 -0
  64. data/spec/analyzer_spec.rb +7 -7
  65. data/spec/data_cube_spec.rb +13 -13
  66. data/spec/dataset_for_spec.rb +11 -4
  67. data/spec/dsl_spec.rb +90 -0
  68. data/spec/generators/csv_spec.rb +4 -4
  69. data/spec/generators/dataframe_spec.rb +6 -6
  70. data/spec/generators/r_cross_spec.rb +2 -2
  71. data/spec/generators/r_matrix_spec.rb +2 -2
  72. data/spec/metadata/metadata_dsl_spec.rb +68 -0
  73. data/spec/prov/activity_spec.rb +4 -4
  74. data/spec/prov/agent_spec.rb +3 -4
  75. data/spec/prov/association_spec.rb +1 -2
  76. data/spec/prov/config_spec.rb +28 -0
  77. data/spec/prov/derivation_spec.rb +30 -0
  78. data/spec/prov/entity_spec.rb +3 -4
  79. data/spec/prov/role_spec.rb +1 -2
  80. data/spec/prov/usage_spec.rb +1 -2
  81. data/spec/r_builder_spec.rb +3 -3
  82. data/spec/turtle/bacon +20 -4
  83. data/spec/turtle/reference +20 -4
  84. metadata +37 -4
@@ -1,10 +1,10 @@
1
1
  require 'rdf/4store'
2
2
 
3
- begin
4
- require 'spira'
3
+ # begin
4
+ # require 'spira'
5
5
 
6
6
  module PubliSci
7
- module Prov
7
+ class Prov
8
8
  module Model
9
9
  PROV ||= RDF::Vocabulary.new(RDF::URI.new('http://www.w3.org/ns/prov#'))
10
10
 
@@ -51,19 +51,18 @@ module PubliSci
51
51
  has_many :qualifiedAssociation, predicate: PROV.qualifiedAssociation
52
52
  end
53
53
 
54
-
55
54
  class Association < Spira::Base
56
55
  type PROV.Association
57
56
  property :label, predicate: RDF::RDFS.label
58
57
  property :agent, predicate: PROV.agent
59
- property :hadPlan, predicate: PROV.plan
58
+ property :hadPlan, predicate: PROV.hadPlan
60
59
  end
61
60
 
62
61
  class Derivation < Spira::Base
63
62
  type PROV.Derivation
64
63
  property :label, predicate: RDF::RDFS.label
65
64
  property :agent, predicate: PROV.agent
66
- property :hadPlan, predicate: PROV.plan
65
+ property :hadPlan, predicate: PROV.hadPlan
67
66
  end
68
67
 
69
68
  class Plan < Spira::Base
@@ -74,6 +73,6 @@ module PubliSci
74
73
  end
75
74
  end
76
75
  end
77
- rescue LoadError
78
- # puts "spira not installed, ORM unavailable"
79
- end
76
+ # rescue LoadError
77
+ # puts "spira not installed, ORM unavailable"
78
+ # end
@@ -1,5 +1,5 @@
1
1
  module PubliSci
2
- module Prov
2
+ class Prov
3
3
  class Plan
4
4
  include Prov::Element
5
5
 
@@ -1,39 +1,41 @@
1
1
  module PubliSci
2
- module Prov
3
- def self.register(name,object)
4
- # puts "register #{name} #{object} #{associations.size}"
5
- name = name.to_sym if name
2
+ class Prov
3
+ extend PubliSci::Registry
4
+
5
+ def self.configuration
6
+ @config ||= Configuration.new
7
+ end
8
+
9
+ def self.symbol_for(object)
6
10
  if object.is_a? Agent
7
- sub = :agents
11
+ :agents
8
12
  elsif object.is_a? Entity
9
- sub = :entities
13
+ :entities
10
14
  elsif object.is_a? Activity
11
- sub = :activities
15
+ :activities
12
16
  elsif object.is_a? Association
13
- sub = :associations
17
+ :associations
14
18
  elsif object.is_a? Plan
15
- sub = :plans
16
- else
17
- sub = object.class.to_s.split('::').last.downcase.to_sym
18
- # raise "UnknownElement: unkown object type for #{object}"
19
- end
20
- if name
21
- (registry[sub] ||= {})[name] = object
19
+ :plans
22
20
  else
23
- (registry[sub] ||= []) << object
21
+ false
24
22
  end
25
23
  end
26
24
 
27
- def self.registry
28
- @registry ||= {}
29
- end
30
25
 
31
26
  def self.run(string)
27
+ sing =DSL::Instance.new
32
28
  if File.exists? string
33
- DSL::Singleton.new.instance_eval(IO.read(string),string)
29
+ sing.instance_eval(IO.read(string),string)
34
30
  else
35
- DSL::Singleton.new.instance_eval(string)
31
+ sing.instance_eval(string)
36
32
  end
33
+ sing.output
34
+ end
35
+
36
+ def self.reset_settings
37
+ Configuration.defaults.map{|k,v| configuration.send("#{k}=",v)}
38
+ @base_url=nil
37
39
  end
38
40
 
39
41
  def self.agents
@@ -1,5 +1,5 @@
1
1
  module PubliSci
2
- module Prov
2
+ class Prov
3
3
  class Role
4
4
  # attr_writer :comment
5
5
 
@@ -1,5 +1,5 @@
1
1
  module PubliSci
2
- module Prov
2
+ class Prov
3
3
  class Usage
4
4
  include Prov::Element
5
5
 
@@ -0,0 +1,25 @@
1
+ module PubliSci
2
+ class Metadata
3
+ class Publisher
4
+
5
+ def uri(uri=nil)
6
+ if uri
7
+ @uri = uri
8
+ else
9
+ @uri
10
+ end
11
+ end
12
+ alias_method :url, :uri
13
+
14
+ def label(label=nil)
15
+ if label
16
+ @label = label
17
+ else
18
+ @label
19
+ end
20
+ end
21
+ alias_method :name, :label
22
+
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  module PubliSci
2
- module Prov
2
+ class Prov
3
3
  module Dereferencable
4
4
  def dereference
5
5
  self.map{|x|
@@ -0,0 +1,27 @@
1
+ module PubliSci
2
+ module Registry
3
+ def register(name,object)
4
+ # puts "register #{name} #{object} #{associations.size}"
5
+ name = name.to_sym if name
6
+ if symbol_for(object)
7
+ sub = symbol_for(object)
8
+ else
9
+ sub = object.class.to_s.split('::').last.downcase.to_sym
10
+ end
11
+ if name
12
+ (registry[sub] ||= {})[name] = object
13
+ else
14
+ (registry[sub] ||= []) << object
15
+ end
16
+ end
17
+
18
+ def registry
19
+ @registry ||= {}
20
+ end
21
+
22
+ #should be overridden
23
+ def symbol_for(object)
24
+ false
25
+ end
26
+ end
27
+ end
@@ -1,4 +1,4 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Reader
3
3
  module Output
4
4
  def output(string, options={},append=false)
@@ -1,4 +1,4 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Parser
3
3
 
4
4
  def is_uri?(string)
@@ -16,7 +16,7 @@ module RDF
16
16
  end
17
17
  end
18
18
 
19
- module R2RDF
19
+ module PubliSci
20
20
  #.gsub(/^\s+/,'')
21
21
  module Query
22
22
  def vocabulary
@@ -30,19 +30,19 @@ module R2RDF
30
30
  }
31
31
  end
32
32
 
33
-
33
+
34
34
 
35
35
  # def execute_internal(query,repo)
36
36
  # SPARQL.execute(query,repo)
37
37
  # end
38
38
 
39
39
  def execute(string,store,type=:fourstore)
40
- if type == :graph || store.is_a?(RDF::Graph) || store.is_a?(RDF::Repository)
40
+ if type == :graph || store.is_a?(RDF::Graph) || store.is_a?(RDF::Repository)
41
41
  sparql = SPARQL::Client.new(store)
42
- elsif store.is_a? R2RDF::Store
43
- sparql = SPARQL::Client.new(store.url+"/sparql/")
42
+ elsif store.is_a? PubliSci::Store
43
+ sparql = SPARQL::Client.new(store.url+"/sparql/")
44
44
  elsif type == :fourstore
45
- sparql = SPARQL::Client.new(store+"/sparql/")
45
+ sparql = SPARQL::Client.new(store+"/sparql/")
46
46
  end
47
47
  sparql.query(string)
48
48
  end
@@ -62,13 +62,13 @@ module R2RDF
62
62
 
63
63
  # def prefixes
64
64
  # <<-EOF
65
- # PREFIX ns: <http://www.rqtl.org/ns/#>
66
- # PREFIX qb: <http://purl.org/linked-data/cube#>
67
- # PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
68
- # PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
69
- # PREFIX prop: <http://www.rqtl.org/dc/properties/>
65
+ # PREFIX ns: <http://www.rqtl.org/ns/#>
66
+ # PREFIX qb: <http://purl.org/linked-data/cube#>
67
+ # PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
68
+ # PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
69
+ # PREFIX prop: <http://www.rqtl.org/dc/properties/>
70
70
  # PREFIX cs: <http://www.rqtl.org/dc/cs/>
71
- # PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
71
+ # PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
72
72
 
73
73
  # EOF
74
74
  # end
@@ -109,6 +109,6 @@ SELECT DISTINCT ?label WHERE {
109
109
  end
110
110
 
111
111
  class QueryHelper
112
- include R2RDF::Query
113
- end
112
+ include PubliSci::Query
113
+ end
114
114
  end
@@ -1,6 +1,6 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Rconnect
3
-
3
+
4
4
  def connect(address=nil)
5
5
  if address
6
6
  Rserve::Connection.new(address)
@@ -22,12 +22,12 @@ module R2RDF
22
22
  connection.eval("ls()")
23
23
  end
24
24
 
25
- end
25
+ end
26
26
 
27
27
  class Client
28
- include R2RDF::Rconnect
28
+ include PubliSci::Rconnect
29
29
  attr :R
30
-
30
+
31
31
  def initialize(auto=true, loc=Dir.home)
32
32
  @R = connect
33
33
  @loc = loc
@@ -1,15 +1,15 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Reader
3
3
  class ARFF
4
- include R2RDF::Dataset::DataCube
4
+ include PubliSci::Dataset::DataCube
5
5
  def generate_n3(arff, options={})
6
- arff = IO.read(arff) if File.exist? arff
6
+ arff = IO.read(arff) if File.exist? arff
7
7
  options[:no_labels] = true # unless options[:no_labels] == nil
8
8
  @options = options
9
9
  comps = components(arff)
10
10
  obs = data(arff, comps.keys)
11
11
  repl = generate(comps.reject{|c| comps[c][:codes]}.keys, comps.select{|c| comps[c][:codes]}.keys, comps.select{|c| comps[c][:codes]}.keys, obs, (1..obs.first[1].size).to_a, relation(arff), options)
12
-
12
+
13
13
  end
14
14
 
15
15
  def relation(arff)
@@ -52,7 +52,7 @@ module R2RDF
52
52
  # [@options[:row_label]]
53
53
  # else
54
54
  # ["refRow"]
55
- # end
55
+ # end
56
56
  # end
57
57
 
58
58
  # def measures
@@ -1,8 +1,8 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Reader
3
3
  class CSV
4
- include R2RDF::Dataset::DataCube
5
- include R2RDF::Interactive
4
+ include PubliSci::Dataset::DataCube
5
+ include PubliSci::Interactive
6
6
 
7
7
  def automatic(file=nil,dataset_name=nil,options={},interactive=true)
8
8
  #to do
@@ -1,8 +1,8 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Reader
3
3
  class Dataframe
4
- include R2RDF::Dataset::DataCube
5
- include R2RDF::Reader::Output
4
+ include PubliSci::Dataset::DataCube
5
+ include PubliSci::Reader::Output
6
6
 
7
7
  # def initialize(var)
8
8
  # @var = var
@@ -1,8 +1,8 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Reader
3
3
  class RCross
4
- include R2RDF::Dataset::DataCube
5
- include R2RDF::Reader::Output
4
+ include PubliSci::Dataset::DataCube
5
+ include PubliSci::Reader::Output
6
6
 
7
7
  def generate_n3(client, var, outfile_base, options={})
8
8
  meas = measures(client,var,options)
@@ -42,7 +42,7 @@ module R2RDF
42
42
  str = prefixes(var,options)
43
43
  str << data_structure_definition(meas,dim,codes,var,options)
44
44
  str << dataset(var,options)
45
- component_specifications(meas, dim, var, options).map{ |c| str << c }
45
+ component_specifications(meas, dim, codes, var, options).map{ |c| str << c }
46
46
  measure_properties(meas,var,options).map{|m| str << m}
47
47
 
48
48
  str
@@ -1,7 +1,7 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Reader
3
3
  class RMatrix
4
- include R2RDF::Dataset::DataCube
4
+ include PubliSci::Dataset::DataCube
5
5
 
6
6
  #NOTE; this is pretty much hard coded for Karl's application right now, and doesn't
7
7
  # do any dimension or code generation. Since its a set of LOD scores indexed by dimension
@@ -76,7 +76,7 @@ module R2RDF
76
76
  str = prefixes(var, options)
77
77
  str << data_structure_definition(meas,[],codes,outvar,options)
78
78
  str << dataset(outvar,options)
79
- component_specifications(meas, dim, var, options).map{ |c| str << c }
79
+ component_specifications(meas, dim, codes, var, options).map{ |c| str << c }
80
80
  measure_properties(meas,var,options).map{|m| str << m}
81
81
 
82
82
  str
@@ -1,7 +1,7 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  # handles connection and messaging to/from the triple store
3
3
  class Store
4
- include R2RDF::Query
4
+ include PubliSci::Query
5
5
 
6
6
  def defaults
7
7
  {
@@ -27,7 +27,7 @@ module R2RDF
27
27
  end
28
28
 
29
29
  def add_all(dir, graph, pattern=nil)
30
- pattern = /.+\.ttl/ if pattern == :turtle || pattern == :ttl
30
+ pattern = /.+\.ttl/ if pattern == :turtle || pattern == :ttl
31
31
 
32
32
  files = Dir.entries(dir) - %w(. ..)
33
33
  files = files.grep(pattern) if pattern.is_a? Regexp
@@ -1,9 +1,9 @@
1
- module R2RDF
1
+ module PubliSci
2
2
  module Writer
3
3
  class ARFF
4
- include R2RDF::Query
5
- include R2RDF::Parser
6
- include R2RDF::Analyzer
4
+ include PubliSci::Query
5
+ include PubliSci::Parser
6
+ include PubliSci::Analyzer
7
7
 
8
8
  def build_arff(relation, attributes, data, source)
9
9
  str = <<-EOS
@@ -11,7 +11,7 @@ module R2RDF
11
11
  %
12
12
  % 2. Sources:
13
13
  % (a) Generated from RDF source #{source}
14
- %
14
+ %
15
15
  @RELATION #{relation}
16
16
 
17
17
  EOS
@@ -30,7 +30,7 @@ EOS
30
30
  puts "loading #{turtle_file}" if verbose
31
31
  repo = RDF::Repository.load(turtle_file)
32
32
  puts "loaded #{repo.size} statements into temporary repo" if verbose
33
-
33
+
34
34
  dims = execute_from_file("dimensions.rq",repo,:graph).to_h.map{|d| [d[:dimension].to_s, d[:label].to_s]}
35
35
  meas = execute_from_file("measures.rq",repo,:graph).to_h.map{|m| [m[:measure].to_s, m[:label].to_s]}
36
36
  relation = execute_from_file("dataset.rq",repo,:graph).to_h.first[:label].to_s