rdf_to_graphviz 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rdf_to_graphviz.rb +71 -33
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d034053d07e3c2b2ba03da99377ec812de05c0c3
|
4
|
+
data.tar.gz: 7bd2d44c16cf159e6a797e3cf1c6750b9ad89d06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 758beb446cddfbc695b70d559ea5c7b7b97fef44feb470130bd77dbe877680a0b480651890c204c79128599e3946e919d6b96c3afc1b15f6e986836140f5d709
|
7
|
+
data.tar.gz: 2f2392a5ab8dbd8523024df116c716765f7a2879f6d6b340ddc283ef0bf474f5c8b6e89b6775828410808599a5c1b961cff10644077b47a25670a290460e6113
|
data/lib/rdf_to_graphviz.rb
CHANGED
@@ -4,6 +4,9 @@ require 'linkeddata'
|
|
4
4
|
# Require 'sparql' gem
|
5
5
|
require 'sparql'
|
6
6
|
|
7
|
+
# Require 'ruby-graphviz' gem
|
8
|
+
require 'ruby-graphviz'
|
9
|
+
|
7
10
|
class RdfToGraphviz
|
8
11
|
|
9
12
|
def term_name(statement)
|
@@ -31,11 +34,9 @@ class RdfToGraphviz
|
|
31
34
|
# @option options [TrueClass] :is_literal_object_uniq - default = true
|
32
35
|
# @return [String] - contain representation of RDF::Graph in Graphviz dot
|
33
36
|
#
|
34
|
-
def rdf_graph_to_dot(rdf_graph, options = {})
|
35
|
-
txt_dot = ""
|
36
37
|
|
37
|
-
|
38
|
-
options[:
|
38
|
+
def build_graph(rdf_graph, options = {})
|
39
|
+
options[:graph_type] ||= :digraph
|
39
40
|
options[:subject_shape] ||= "doublecircle"
|
40
41
|
options[:object_shape] ||= "circle"
|
41
42
|
options[:literal_object_shape] ||= "rectangle"
|
@@ -43,43 +44,80 @@ class RdfToGraphviz
|
|
43
44
|
options[:object_color] ||= "blue"
|
44
45
|
options[:predicate_color] ||= "black"
|
45
46
|
options[:is_literal_object_uniq] = true if options[:is_literal_object_uniq].nil?
|
46
|
-
|
47
|
-
|
47
|
+
nodes = []
|
48
48
|
n=0
|
49
|
-
|
50
|
-
if options[:digraph] == true
|
51
|
-
txt_dot << "\ndigraph digraph_1 {"
|
52
|
-
else
|
53
|
-
txt_dot << "\ngraph graph_1 {"
|
54
|
-
end
|
55
|
-
|
49
|
+
graph = GraphViz.new( :G, :type => options[:graph_type] )
|
56
50
|
rdf_graph.each_statement do |statement|
|
51
|
+
s = graph.add_nodes( term_name(statement[0]), {:shape => options[:subject_shape], :color => options[:subject_color] })
|
52
|
+
nodes << term_name(statement[0])
|
57
53
|
|
58
|
-
|
59
|
-
|
54
|
+
if statement[2].literal? then
|
55
|
+
if options[:is_literal_object_uniq] == true
|
56
|
+
o = graph.add_nodes( statement[2].to_s, {:shape => options[:literal_object_shape]})
|
57
|
+
else
|
58
|
+
o = graph.add_nodes( "o"+n.to_s, {:label => statement[2].to_s, :shape => options[:literal_object_shape]})
|
59
|
+
n += 1
|
60
|
+
end
|
61
|
+
else
|
62
|
+
# unless nodes.include?( statement[2] )
|
63
|
+
o = graph.add_nodes( term_name(statement[2]), {:shape => options[:object_shape], :color => options[:object_color]})
|
64
|
+
# end
|
65
|
+
end
|
66
|
+
# Create an edge between the two nodes
|
67
|
+
|
68
|
+
graph.add_edges( s, o, {:label => statement[1].pname, :color => options[:predicate_color] } )
|
69
|
+
|
70
|
+
end
|
71
|
+
nodes.each do |nd|
|
72
|
+
graph.add_nodes( nd, {:shape => options[:subject_shape], :color => options[:subject_color] })
|
73
|
+
end
|
74
|
+
# graph.output( :png => "res_graph.png" )
|
75
|
+
graph
|
76
|
+
end
|
60
77
|
|
61
|
-
txt_dot << "\n\"#{s}\"[label=\"#{s}\", color=#{options[:subject_color]}, shape=#{options[:subject_shape]}];"
|
62
78
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
79
|
+
##
|
80
|
+
# rdf_graph_to_dot(rdf_graph, options = {}) generate simple dot graph from RDF::Graph
|
81
|
+
# @param [RDF::Graph] rdf_graph
|
82
|
+
# @param [Hash{Symbol => Object}] options
|
83
|
+
# @option options [TrueClass] :digraph - default = true - if true, graph has a direction
|
84
|
+
# @option options [String] :subject_shape - default = doublecircle
|
85
|
+
# @option options [String] :object_shape - default = circle
|
86
|
+
# @option options [String] :literal_object_shape - default = rectangle
|
87
|
+
# @option options [String] :subject_color - default = red
|
88
|
+
# @option options [String] :object_color - default = blue
|
89
|
+
# @option options [String] :predicate_color - default = black
|
90
|
+
# @option options [TrueClass] :is_literal_object_uniq - default = true
|
91
|
+
# @return [String] - contain representation of RDF::Graph in Graphviz dot
|
92
|
+
#
|
93
|
+
def rdf_graph_to_dot(rdf_graph, options = {})
|
94
|
+
build_graph(rdf_graph, options).to_s
|
95
|
+
end
|
67
96
|
|
68
|
-
txt_dot << "\n#{"\"o"+n.to_s}\"[label=\"#{o}\", shape=#{options[:literal_object_shape]}];"
|
69
|
-
|
70
|
-
o = "o"+n.to_s
|
71
|
-
n += 1
|
72
|
-
end
|
73
|
-
else
|
74
|
-
txt_dot << "\n\"#{o}\"[label=\"#{o}\", color=#{options[:object_color]}, shape=#{options[:object_shape]}];"
|
75
|
-
end
|
76
97
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
98
|
+
##
|
99
|
+
# rdf_graph_to_dot(rdf_graph, options = {}) generate simple dot graph from RDF::Graph
|
100
|
+
# @param [RDF::Graph] rdf_graph
|
101
|
+
# @param [Hash{Symbol => Object}] options
|
102
|
+
# @option options [TrueClass] :digraph - default = true - if true, graph has a direction
|
103
|
+
# @option options [String] :subject_shape - default = doublecircle
|
104
|
+
# @option options [String] :object_shape - default = circle
|
105
|
+
# @option options [String] :literal_object_shape - default = rectangle
|
106
|
+
# @option options [String] :subject_color - default = red
|
107
|
+
# @option options [String] :object_color - default = blue
|
108
|
+
# @option options [String] :predicate_color - default = black
|
109
|
+
# @option options [TrueClass] :is_literal_object_uniq - default = true
|
110
|
+
# @option options [String] :format - default = :png
|
111
|
+
# @option options [String] :file_name - default = "res_graph.png"
|
112
|
+
# @return [nil]
|
113
|
+
#
|
114
|
+
def save_rdf_graph_as(rdf_graph, options = {})
|
115
|
+
options[:format] ||= :png
|
116
|
+
options[:file_name] ||= "res_graph.png"
|
117
|
+
g = build_graph(rdf_graph, options)
|
118
|
+
g.output( options[:format] => options[:file_name] )
|
81
119
|
end
|
82
120
|
|
83
|
-
private :term_name
|
121
|
+
private :term_name, :build_graph
|
84
122
|
|
85
123
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf_to_graphviz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WiDu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: linkeddata
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ruby-graphviz
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
description: "Gem translate RDF::Graph to Graphviz Dot format.\n\tRequire: linkeddata
|
42
56
|
& sparql gems. It's not compatible with 0.0.0.2!"
|
43
57
|
email: wdulek@gmail.com
|