Class: CamTool::ProvJSONtoRGL

Inherits:
ProvJSONParser show all
Defined in:
lib/camtool/provjson_to_rgl.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ProvJSONParser

#parse_json, #prefix, #read_json_file, #read_log_file, #relation

Constructor Details

#initializeProvJSONtoRGL

Returns a new instance of ProvJSONtoRGL.



12
13
14
15
16
# File 'lib/camtool/provjson_to_rgl.rb', line 12

def initialize
  @dg = RGL::DirectedAdjacencyGraph.new # initialise the graph structure
  @map = Hash.new
  @edges = Hash.new
end

Instance Attribute Details

#dgObject (readonly)

Returns the value of attribute dg.



8
9
10
# File 'lib/camtool/provjson_to_rgl.rb', line 8

def dg
  @dg
end

#edgesObject (readonly)

Returns the value of attribute edges.



10
11
12
# File 'lib/camtool/provjson_to_rgl.rb', line 10

def edges
  @edges
end

#mapObject (readonly)

Returns the value of attribute map.



9
10
11
# File 'lib/camtool/provjson_to_rgl.rb', line 9

def map
  @map
end

Instance Method Details

#activity(k, v) ⇒ Object



22
23
24
# File 'lib/camtool/provjson_to_rgl.rb', line 22

def activity k, v
  @map[k] = v
end

#agent(k, v) ⇒ Object



26
27
28
# File 'lib/camtool/provjson_to_rgl.rb', line 26

def agent k, v
  @map[k] = v
end

#entity(k, v) ⇒ Object



18
19
20
# File 'lib/camtool/provjson_to_rgl.rb', line 18

def entity k, v
  @map[k] = v
end

#informationObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/camtool/provjson_to_rgl.rb', line 56

def information
  str = "Graph:\n"
  if @dg.directed?
    str += "directed\n"
  else
    str += "not directed\n"
  end

  if @dg.acyclic?
    str += "acyclic\n"
  else
    str += "not acyclic\n"
  end

  str += @dg.num_edges.to_s() +" edges.\n"
  str += @dg.num_vertices.to_s() +" vertices.\n"
  str += (@dg.num_edges.to_f/@dg.num_vertices).to_s() + " edges/vertices ratio.\n"
end

#jpgObject



84
85
86
# File 'lib/camtool/provjson_to_rgl.rb', line 84

def jpg
  @dg.write_to_graphic_file('jpg')
end

#list(types) ⇒ Object



92
93
94
95
96
97
98
99
100
101
# File 'lib/camtool/provjson_to_rgl.rb', line 92

def list types
  a = @dg.topsort_iterator.to_a
  a_type = types.split(',')
  a.each do |v|
    if a_type.include?(@map[v]['prov:type']) || types.nil?
      puts v + ' ' + @map[v]['prov:label'] unless @map[v]['prov:label'].nil?
      puts v + ' no label' unless !@map[v]['prov:label'].nil?
    end
  end
end

#pngObject



88
89
90
# File 'lib/camtool/provjson_to_rgl.rb', line 88

def png
  @dg.write_to_graphic_file('png')
end

#svgObject



80
81
82
# File 'lib/camtool/provjson_to_rgl.rb', line 80

def svg
  @dg.write_to_graphic_file('svg')
end

#used(k, v) ⇒ Object



30
31
32
33
# File 'lib/camtool/provjson_to_rgl.rb', line 30

def used k, v
  @dg.add_edge v['prov:activity'], v['prov:entity']
  @edges[v['prov:activity']+v['prov:entity']] = v
end

#validateObject



75
76
77
78
# File 'lib/camtool/provjson_to_rgl.rb', line 75

def validate
  abort 'Graph is not directed!' unless @dg.directed?
  abort 'Graph is not acyclic!' unless @dg.acyclic?
end

#wasAssociatedWith(k, v) ⇒ Object



50
51
52
53
54
# File 'lib/camtool/provjson_to_rgl.rb', line 50

def wasAssociatedWith k, v
  @dg.add_edge v['prov:activity'], v['prov:agent']
  @edges[v['prov:activity']+v['prov:agent']] = v
  @dg.add_edge v['prov:agent'], v['prov:plan'] unless !v.key? 'prov:plan'
end

#wasDerivedFrom(k, v) ⇒ Object



40
41
42
43
# File 'lib/camtool/provjson_to_rgl.rb', line 40

def wasDerivedFrom k, v
  @dg.add_edge v['prov:generatedEntity'], v['prov:usedEntity']
  @edges[v['prov:generatedEntity']+v['prov:usedEntity']] = v
end

#wasGeneratedBy(k, v) ⇒ Object



35
36
37
38
# File 'lib/camtool/provjson_to_rgl.rb', line 35

def wasGeneratedBy k, v
  @dg.add_edge v['prov:entity'], v['prov:activity']
  @edges[v['prov:entity']+v['prov:activity']] = v
end

#wasInformedBy(k, v) ⇒ Object



45
46
47
48
# File 'lib/camtool/provjson_to_rgl.rb', line 45

def wasInformedBy k, v
  @dg.add_edge v['prov:informed'], v['prov:informant']
  @edges[v['prov:informed']+v['prov:informant']] = v
end