bel 0.3.0.beta1-x64-mingw32
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/INSTALL.md +19 -0
- data/INSTALL_RUBY.md +107 -0
- data/LICENSE +191 -0
- data/README.md +319 -0
- data/bel.gemspec +67 -0
- data/bin/bel2rdf +134 -0
- data/bin/bel_compare +177 -0
- data/bin/bel_parse +60 -0
- data/bin/bel_rdfschema +72 -0
- data/bin/bel_summarize +86 -0
- data/bin/bel_upgrade +175 -0
- data/bin/bel_upgrade_term +163 -0
- data/ext/mri/bel-ast.c +221 -0
- data/ext/mri/bel-ast.h +82 -0
- data/ext/mri/bel-node-stack.c +83 -0
- data/ext/mri/bel-node-stack.h +26 -0
- data/ext/mri/bel-parse-statement.c +122296 -0
- data/ext/mri/bel-parse-term.c +117670 -0
- data/ext/mri/bel-parser.c +91 -0
- data/ext/mri/bel-parser.h +13 -0
- data/ext/mri/bel-token.c +161 -0
- data/ext/mri/bel-token.h +58 -0
- data/ext/mri/bel-tokenize-term.c +391 -0
- data/ext/mri/extconf.rb +8 -0
- data/ext/mri/libbel.c +5 -0
- data/ext/mri/libbel.def +26 -0
- data/lib/bel.rb +17 -0
- data/lib/bel/completion.rb +53 -0
- data/lib/bel/completion_rule.rb +236 -0
- data/lib/bel/language.rb +1052 -0
- data/lib/bel/namespace.rb +323 -0
- data/lib/bel/quoting.rb +29 -0
- data/lib/bel/rdf.rb +314 -0
- data/lib/bel/script.rb +239632 -0
- data/lib/features.rb +21 -0
- data/lib/libbel.rb +201 -0
- data/lib/libbel.so +0 -0
- data/lib/util.rb +125 -0
- metadata +269 -0
data/bel.gemspec
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'bel'
|
3
|
+
spec.version = '0.3.0.beta1'
|
4
|
+
spec.summary = '''
|
5
|
+
Process BEL with ruby.
|
6
|
+
'''.gsub(%r{^\s+}, ' ').gsub(%r{\n}, '')
|
7
|
+
spec.description = '''
|
8
|
+
The BEL gem allows the reading, writing,
|
9
|
+
and processing of BEL (Biological Expression
|
10
|
+
Language) with a natural DSL.
|
11
|
+
'''.gsub(%r{^\s+}, ' ').gsub(%r{\n}, '')
|
12
|
+
spec.license = 'Apache-2.0'
|
13
|
+
spec.authors = [
|
14
|
+
'Anthony Bargnesi',
|
15
|
+
'Natalie Catlett',
|
16
|
+
'Nick Bargnesi',
|
17
|
+
'William Hayes'
|
18
|
+
]
|
19
|
+
spec.email = [
|
20
|
+
'abargnesi@selventa.com',
|
21
|
+
'ncatlett@selventa.com',
|
22
|
+
'nbargnesi@selventa.com',
|
23
|
+
'whayes@selventa.com'
|
24
|
+
]
|
25
|
+
spec.files = [
|
26
|
+
Dir.glob("lib/**/*.rb"),
|
27
|
+
Dir.glob("ext/**/*.{c,h,def}"),
|
28
|
+
__FILE__,
|
29
|
+
'LICENSE',
|
30
|
+
'INSTALL.md',
|
31
|
+
'INSTALL_RUBY.md',
|
32
|
+
'README.md'
|
33
|
+
].flatten!
|
34
|
+
spec.executables = Dir.glob('bin/*').map(&File.method(:basename))
|
35
|
+
spec.homepage = 'https://github.com/OpenBEL/bel.rb'
|
36
|
+
spec.rdoc_options = [
|
37
|
+
'--title', 'BEL Ruby Documentation',
|
38
|
+
'--main', 'README.md',
|
39
|
+
'--line-numbers',
|
40
|
+
'--exclude', 'lib/bel/script.rb',
|
41
|
+
'README.md',
|
42
|
+
'INSTALL.md',
|
43
|
+
'INSTALL_RUBY.md',
|
44
|
+
'LICENSE'
|
45
|
+
]
|
46
|
+
|
47
|
+
spec.extensions << 'ext/mri/extconf.rb'
|
48
|
+
spec.required_ruby_version = '>= 1.9.2'
|
49
|
+
|
50
|
+
# runtime
|
51
|
+
spec.add_dependency 'ffi', '~> 1.9'
|
52
|
+
|
53
|
+
# test rdf functionality
|
54
|
+
spec.add_development_dependency 'uuid', '~> 2.3'
|
55
|
+
spec.add_development_dependency 'addressable', '~> 2.3'
|
56
|
+
spec.add_development_dependency 'rdf', '~> 1.1'
|
57
|
+
|
58
|
+
# development gems
|
59
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
60
|
+
spec.add_development_dependency 'rake', '~> 10.4'
|
61
|
+
spec.add_development_dependency 'rake-compiler', '~> 0.9'
|
62
|
+
spec.add_development_dependency 'rspec', '~> 3.2'
|
63
|
+
spec.add_development_dependency 'yard', '~> 0.8'
|
64
|
+
spec.add_development_dependency 'rdoc', '~> 4.2'
|
65
|
+
end
|
66
|
+
# vim: ts=2 sw=2:
|
67
|
+
# encoding: utf-8
|
data/bin/bel2rdf
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# bel2rdf: Convert BEL to RDF triples.
|
3
|
+
#
|
4
|
+
# From BEL file
|
5
|
+
# usage: bel2rdf -b file.bel
|
6
|
+
#
|
7
|
+
# From file
|
8
|
+
# usage: bel2rdf --bel [FILE]
|
9
|
+
#
|
10
|
+
# From standard in
|
11
|
+
# usage: echo "<BEL DOCUMENT STRING>" | bel2rdf
|
12
|
+
#
|
13
|
+
# Format option
|
14
|
+
# usage: bel2rdf --bel [FILE] --format [ntriples | nquads | turtle]
|
15
|
+
|
16
|
+
require 'bel'
|
17
|
+
require 'optparse'
|
18
|
+
require 'set'
|
19
|
+
require 'open-uri'
|
20
|
+
|
21
|
+
# setup and parse options
|
22
|
+
options = {
|
23
|
+
format: 'ntriples',
|
24
|
+
schema: false
|
25
|
+
}
|
26
|
+
OptionParser.new do |opts|
|
27
|
+
opts.banner = '''Converts BEL statements to RDF triples.
|
28
|
+
Usage: bel2rdf --bel [FILE]'''
|
29
|
+
|
30
|
+
opts.on('-b', '--bel FILE', 'BEL file to convert. STDIN (standard in) can also be used for BEL content.') do |bel|
|
31
|
+
options[:bel] = bel
|
32
|
+
end
|
33
|
+
|
34
|
+
opts.on('-f', '--format FORMAT', 'RDF file format.') do |format|
|
35
|
+
options[:format] = format.downcase
|
36
|
+
end
|
37
|
+
|
38
|
+
opts.on('-s', '--[no-]schema', 'Write BEL RDF schema?') do |schema|
|
39
|
+
options[:schema] = schema
|
40
|
+
end
|
41
|
+
end.parse!
|
42
|
+
|
43
|
+
# option guards
|
44
|
+
unless options[:bel] or not STDIN.tty?
|
45
|
+
$stderr.puts "No bel content provided. Either use --bel option or STDIN (standard in). Use -h / --help for details."
|
46
|
+
exit 1
|
47
|
+
end
|
48
|
+
if options[:bel] and not File.exists? options[:bel]
|
49
|
+
$stderr.puts "No file for bel, #{options[:bel]}"
|
50
|
+
exit 1
|
51
|
+
end
|
52
|
+
unless ['ntriples', 'nquads', 'turtle'].include? options[:format]
|
53
|
+
$stderr.puts "Format was not one of: ntriples, nquads, or turtle"
|
54
|
+
exit 1
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
class Main
|
59
|
+
include BEL::Language
|
60
|
+
|
61
|
+
def initialize(content, writer)
|
62
|
+
BEL::Script.parse(content).find_all { |obj|
|
63
|
+
obj.is_a? Statement
|
64
|
+
}.each do |stmt|
|
65
|
+
triples = stmt.to_rdf[1]
|
66
|
+
triples.each do |triple|
|
67
|
+
writer << triple
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class Serializer
|
74
|
+
attr_reader :writer
|
75
|
+
|
76
|
+
def initialize(stream, format)
|
77
|
+
rdf_writer = find_writer(format)
|
78
|
+
@writer = rdf_writer.new($stdout, {
|
79
|
+
:stream => stream
|
80
|
+
}
|
81
|
+
)
|
82
|
+
end
|
83
|
+
|
84
|
+
def <<(trpl)
|
85
|
+
@writer.write_statement(RDF::Statement(*trpl))
|
86
|
+
end
|
87
|
+
|
88
|
+
def done
|
89
|
+
@writer.write_epilogue
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def find_writer(format)
|
95
|
+
case format
|
96
|
+
when 'nquads'
|
97
|
+
BEL::RDF::RDF::NQuads::Writer
|
98
|
+
when 'turtle'
|
99
|
+
begin
|
100
|
+
require 'rdf/turtle'
|
101
|
+
BEL::RDF::RDF::Turtle::Writer
|
102
|
+
rescue LoadError
|
103
|
+
$stderr.puts """Turtle format not supported.
|
104
|
+
Install the 'rdf-turtle' gem."""
|
105
|
+
raise
|
106
|
+
end
|
107
|
+
when 'ntriples'
|
108
|
+
BEL::RDF::RDF::NTriples::Writer
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# create writer for format
|
114
|
+
rdf_writer = ::Serializer.new(true, options[:format])
|
115
|
+
|
116
|
+
# first write schema if desired
|
117
|
+
if options[:schema]
|
118
|
+
BEL::RDF::vocabulary_rdf.each do |trpl|
|
119
|
+
rdf_writer << trpl
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
# read bel content
|
124
|
+
content =
|
125
|
+
if options[:bel]
|
126
|
+
File.open(options[:bel]).read
|
127
|
+
else
|
128
|
+
$stdin.read
|
129
|
+
end
|
130
|
+
|
131
|
+
# parse and write rdf
|
132
|
+
Main.new(content, rdf_writer)
|
133
|
+
# vim: ts=2 sw=2:
|
134
|
+
# encoding: utf-8
|
data/bin/bel_compare
ADDED
@@ -0,0 +1,177 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# vim: ts=2 sw=2
|
3
|
+
|
4
|
+
require 'optparse'
|
5
|
+
require 'bel'
|
6
|
+
include BEL::Language
|
7
|
+
include BEL::Namespace
|
8
|
+
|
9
|
+
USAGE = "Usage: #{File.basename(__FILE__)} [options] [file] [file]"
|
10
|
+
|
11
|
+
options = {}
|
12
|
+
OptionParser.new do |opts|
|
13
|
+
opts.banner = USAGE
|
14
|
+
|
15
|
+
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
16
|
+
options[:verbose] = v
|
17
|
+
end
|
18
|
+
opts.on_tail("-h", "--help", "Show usage and options") do
|
19
|
+
puts opts
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end.parse!
|
23
|
+
|
24
|
+
if ARGV.length != 2
|
25
|
+
$stderr.puts "Need to specify two BEL files."
|
26
|
+
$stderr.puts USAGE
|
27
|
+
exit 1
|
28
|
+
end
|
29
|
+
|
30
|
+
def fetch_groups(bel)
|
31
|
+
groups = {}
|
32
|
+
active_group = nil
|
33
|
+
BEL::Script.parse(bel) do |obj|
|
34
|
+
if obj.is_a? BEL::Language::StatementGroup
|
35
|
+
active_group = obj
|
36
|
+
end
|
37
|
+
if obj.is_a? BEL::Language::UnsetStatementGroup
|
38
|
+
groups[obj.name] = active_group
|
39
|
+
end
|
40
|
+
end
|
41
|
+
groups
|
42
|
+
end
|
43
|
+
|
44
|
+
threads = []
|
45
|
+
first_groups = {}
|
46
|
+
second_groups = {}
|
47
|
+
threads << Thread.new {
|
48
|
+
first_groups.update(fetch_groups(File.read(ARGV[0])))
|
49
|
+
}
|
50
|
+
|
51
|
+
threads << Thread.new {
|
52
|
+
second_groups.update(fetch_groups(File.read(ARGV[1])))
|
53
|
+
}
|
54
|
+
|
55
|
+
threads.each { |t| t.join }
|
56
|
+
|
57
|
+
group_diff = second_groups.length - first_groups.length
|
58
|
+
if group_diff == 0
|
59
|
+
puts "Equal number of statement groups."
|
60
|
+
elsif group_diff > 0
|
61
|
+
puts "Second file has #{group_diff} more statement groups."
|
62
|
+
else
|
63
|
+
puts "Second file has #{group_diff.abs} less statement groups."
|
64
|
+
end
|
65
|
+
|
66
|
+
first_statements = first_groups.values.
|
67
|
+
map {|group| group.statements.map {|s| s.to_bel} }.flatten
|
68
|
+
puts "First file has #{first_statements.length} statements."
|
69
|
+
second_statements = second_groups.values.
|
70
|
+
map {|group| group.statements.map {|s| s.to_bel}}.flatten
|
71
|
+
puts "Second file has #{second_statements.length} statements."
|
72
|
+
|
73
|
+
# statement groups in 1st, but not 2nd
|
74
|
+
first_groups.each do |name,first|
|
75
|
+
second = second_groups[name]
|
76
|
+
if not second
|
77
|
+
puts "#{name}, in 1st but not 2nd."
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# statement groups in 2nd, but not 1st
|
82
|
+
second_groups.each do |name,second|
|
83
|
+
first = first_groups[name]
|
84
|
+
if not first
|
85
|
+
puts "#{name}, in 2nd but not 1st."
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# differences between statement group intersection
|
90
|
+
first_groups.each do |name,first|
|
91
|
+
second = second_groups[name]
|
92
|
+
if second
|
93
|
+
first_stmt = first.statements ? first.statements.map {|s| s.to_bel } : []
|
94
|
+
second_stmt = second.statements ? second.statements.map {|s| s.to_bel } : []
|
95
|
+
if first_stmt == second_stmt
|
96
|
+
if options[:verbose]
|
97
|
+
puts "#{name}, both contain zero statements" if first_stmt.empty?
|
98
|
+
puts "#{name}, both contain #{first_stmt.length} statements"
|
99
|
+
end
|
100
|
+
else
|
101
|
+
puts "#{name}:"
|
102
|
+
if options[:verbose]
|
103
|
+
puts " 1st contains #{first_stmt.length} statements"
|
104
|
+
puts " 2nd contains #{second_stmt.length} statements"
|
105
|
+
puts " common to both, #{(first_stmt & second_stmt).length}"
|
106
|
+
puts (first_stmt & second_stmt).map {|stmt| stmt.to_s}.join("\n ").prepend(" ")
|
107
|
+
end
|
108
|
+
|
109
|
+
ab = first_stmt - second_stmt
|
110
|
+
puts " statements only in 1st, #{ab.length} (1st - 2nd)"
|
111
|
+
if ab.length > 0
|
112
|
+
puts ab.map {|stmt| stmt.to_s}.join("\n ").prepend(" ")
|
113
|
+
end
|
114
|
+
|
115
|
+
ba = second_stmt - first_stmt
|
116
|
+
puts " statements only in 2nd, #{ba.length} (2nd - 1st)"
|
117
|
+
if ba.length > 0
|
118
|
+
puts ba.map {|stmt| stmt.to_s}.join("\n ").prepend(" ")
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
first_terms = first_groups.values.
|
125
|
+
map { |group| group.statements }.flatten.
|
126
|
+
map { |stmt|
|
127
|
+
l = [stmt.subject.to_bel]
|
128
|
+
if stmt.simple?
|
129
|
+
l << stmt.object.to_bel
|
130
|
+
elsif stmt.nested?
|
131
|
+
l << stmt.object.subject.to_bel
|
132
|
+
l << stmt.object.object.to_bel
|
133
|
+
end
|
134
|
+
l
|
135
|
+
}.flatten.uniq.
|
136
|
+
sort {|term1,term2| term1.to_s <=> term2.to_s}
|
137
|
+
second_terms = second_groups.values.
|
138
|
+
map { |group| group.statements }.flatten.
|
139
|
+
map { |stmt|
|
140
|
+
l = [stmt.subject.to_bel]
|
141
|
+
if stmt.simple?
|
142
|
+
l << stmt.object.to_bel
|
143
|
+
elsif stmt.nested?
|
144
|
+
l << stmt.object.subject.to_bel
|
145
|
+
l << stmt.object.object.to_bel
|
146
|
+
end
|
147
|
+
l
|
148
|
+
}.flatten.uniq.
|
149
|
+
sort {|term1,term2| term1.to_s <=> term2.to_s}
|
150
|
+
|
151
|
+
# statements
|
152
|
+
puts "Statements:"
|
153
|
+
ab = first_statements - second_statements
|
154
|
+
puts " only in 1st, #{ab.length} (1st - 2nd)"
|
155
|
+
if ab.length > 0
|
156
|
+
puts ab.map {|t| t.to_s}.join("\n ").prepend(" ")
|
157
|
+
end
|
158
|
+
|
159
|
+
ba = second_statements - first_statements
|
160
|
+
puts " only in 2nd, #{ba.length} (2nd - 1st)"
|
161
|
+
if ba.length > 0
|
162
|
+
puts ba.map {|t| t.to_s}.join("\n ").prepend(" ")
|
163
|
+
end
|
164
|
+
|
165
|
+
# terms
|
166
|
+
puts "Terms:"
|
167
|
+
ab = first_terms - second_terms
|
168
|
+
puts " only in 1st, #{ab.length} (1st - 2nd)"
|
169
|
+
if ab.length > 0
|
170
|
+
puts ab.map {|t| t.to_s}.join("\n ").prepend(" ")
|
171
|
+
end
|
172
|
+
|
173
|
+
ba = second_terms - first_terms
|
174
|
+
puts " only in 2nd, #{ba.length} (2nd - 1st)"
|
175
|
+
if ba.length > 0
|
176
|
+
puts ba.map {|t| t.to_s}.join("\n ").prepend(" ")
|
177
|
+
end
|
data/bin/bel_parse
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# bel_parse: Show parsed objects from BEL content for debugging purposes.
|
3
|
+
#
|
4
|
+
# From BEL file
|
5
|
+
# usage: bel_parse -b file.bel
|
6
|
+
#
|
7
|
+
# From standard in
|
8
|
+
# usage: echo "<BEL DOCUMENT STRING>" | bel_parse
|
9
|
+
|
10
|
+
require 'bel'
|
11
|
+
require 'optparse'
|
12
|
+
|
13
|
+
# additive String helpers
|
14
|
+
class String
|
15
|
+
def rjust_relative(distance, string)
|
16
|
+
rjust(distance - string.size + size)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# setup and parse options
|
21
|
+
options = {}
|
22
|
+
OptionParser.new do |opts|
|
23
|
+
opts.banner = "Usage: bel_parse [options] [.bel file]"
|
24
|
+
opts.on('-b', '--bel FILE', 'BEL file to parse. STDIN (standard in) can also be used for BEL content.') do |bel|
|
25
|
+
options[:bel] = bel
|
26
|
+
end
|
27
|
+
end.parse!
|
28
|
+
|
29
|
+
# option guards
|
30
|
+
unless options[:bel] or not STDIN.tty?
|
31
|
+
$stderr.puts "No bel content provided. Either use --bel option or STDIN (standard in). Use -h / --help for details."
|
32
|
+
exit 1
|
33
|
+
end
|
34
|
+
|
35
|
+
if options[:bel] and not File.exists? options[:bel]
|
36
|
+
$stderr.puts "No file for bel, #{options[:bel]}"
|
37
|
+
exit 1
|
38
|
+
end
|
39
|
+
|
40
|
+
# read bel content
|
41
|
+
content =
|
42
|
+
if options[:bel]
|
43
|
+
File.open(options[:bel]).read
|
44
|
+
else
|
45
|
+
$stdin.read
|
46
|
+
end
|
47
|
+
|
48
|
+
class Main
|
49
|
+
|
50
|
+
def initialize(content)
|
51
|
+
BEL::Script.parse(content) do |obj|
|
52
|
+
object_desc = obj.class.name.split('::').last
|
53
|
+
object_desc << obj.to_bel.rjust_relative(25, object_desc)
|
54
|
+
puts object_desc
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
Main.new(content)
|
59
|
+
# vim: ts=2 sw=2:
|
60
|
+
# encoding: utf-8
|
data/bin/bel_rdfschema
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# bel_rdfschema: Dump RDF schema for BEL.
|
3
|
+
# usage: bel_rdfschema --format [ntriples | nquads | turtle]
|
4
|
+
|
5
|
+
require 'bel'
|
6
|
+
require 'optparse'
|
7
|
+
require 'set'
|
8
|
+
require 'open-uri'
|
9
|
+
|
10
|
+
options = {
|
11
|
+
format: 'ntriples'
|
12
|
+
}
|
13
|
+
OptionParser.new do |opts|
|
14
|
+
opts.banner = '''Dumps RDF schema for BEL.
|
15
|
+
Usage: bel_rdfschema'''
|
16
|
+
|
17
|
+
opts.on('-f', '--format FORMAT', 'RDF file format.') do |format|
|
18
|
+
options[:format] = format.downcase
|
19
|
+
end
|
20
|
+
end.parse!
|
21
|
+
|
22
|
+
unless ['ntriples', 'nquads', 'turtle'].include? options[:format]
|
23
|
+
$stderr.puts "Format was not one of: ntriples, nquads, or turtle"
|
24
|
+
exit 1
|
25
|
+
end
|
26
|
+
|
27
|
+
class Serializer
|
28
|
+
attr_reader :writer
|
29
|
+
|
30
|
+
def initialize(stream, format)
|
31
|
+
rdf_writer = find_writer(format)
|
32
|
+
@writer = rdf_writer.new($stdout, {
|
33
|
+
:stream => stream
|
34
|
+
}
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
def <<(trpl)
|
39
|
+
@writer.write_statement(RDF::Statement(*trpl))
|
40
|
+
end
|
41
|
+
|
42
|
+
def done
|
43
|
+
@writer.write_epilogue
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def find_writer(format)
|
49
|
+
case format
|
50
|
+
when 'nquads'
|
51
|
+
BEL::RDF::RDF::NQuads::Writer
|
52
|
+
when 'turtle'
|
53
|
+
begin
|
54
|
+
require 'rdf/turtle'
|
55
|
+
BEL::RDF::RDF::Turtle::Writer
|
56
|
+
rescue LoadError
|
57
|
+
$stderr.puts """Turtle format not supported.
|
58
|
+
Install the 'rdf-turtle' gem."""
|
59
|
+
raise
|
60
|
+
end
|
61
|
+
when 'ntriples'
|
62
|
+
BEL::RDF::RDF::NTriples::Writer
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
@rdf_writer = ::Serializer.new(true, options[:format])
|
68
|
+
BEL::RDF::vocabulary_rdf.each do |trpl|
|
69
|
+
@rdf_writer << trpl
|
70
|
+
end
|
71
|
+
# vim: ts=2 sw=2:
|
72
|
+
# encoding: utf-8
|