class CamTool::ProvJSONtoRGL

Attributes

dg[R]
edges[R]
map[R]

Public Class Methods

new() click to toggle source
# 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

Public Instance Methods

activity(k, v) click to toggle source
# File lib/camtool/provjson_to_rgl.rb, line 22
def activity k, v
  @map[k] = v
end
agent(k, v) click to toggle source
# File lib/camtool/provjson_to_rgl.rb, line 26
def agent k, v
  @map[k] = v
end
entity(k, v) click to toggle source
# File lib/camtool/provjson_to_rgl.rb, line 18
def entity k, v
  @map[k] = v
end
information() click to toggle source
# 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
jpg() click to toggle source
# File lib/camtool/provjson_to_rgl.rb, line 84
def jpg
  @dg.write_to_graphic_file('jpg')
end
list(types) click to toggle source
# 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|
    next unless !@map[v].nil?
    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
png() click to toggle source
# File lib/camtool/provjson_to_rgl.rb, line 88
def png
  @dg.write_to_graphic_file('png')
end
svg() click to toggle source
# File lib/camtool/provjson_to_rgl.rb, line 80
def svg
  @dg.write_to_graphic_file('svg')
end
used(k, v) click to toggle source
# 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
validate() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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