bel 0.4.0.beta.8 → 0.4.0.beta.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bel/translate.rb +1 -1
- data/lib/bel/translator/plugins/rdf/monkey_patch.rb +167 -63
- data/lib/bel/translator/plugins/rdf/translator.rb +1 -1
- data/lib/bel/translator/plugins/rdf/writer.rb +27 -7
- data/lib/bel/translator/plugins/xbel/translator.rb +1 -1
- data/lib/bel/version.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2439b3403f830ef0c8117b3bd1ed9ef6cd589c4
|
4
|
+
data.tar.gz: 9a5279406ef99030abb59b2b4f19960d03b43b18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8acf51e5234ecdb58206b761451dda5437097eec73c0200ae165985cffbc5bdf27bf3eef7931dad3bfbb48affdacf75a72fbb4e4e1d24d45ce9a39ee99ea4592
|
7
|
+
data.tar.gz: f003e2105ad90a3eae32872b6c58b97a310ea3ec035cd3a82f1af1f2af56c4930c5a0117a1df6d12b0321116222b06c8ceb8572e17c42fb0f48da39aac892d2b
|
data/lib/bel/translate.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'bel/evidence_model'
|
1
2
|
require_relative 'uuid'
|
2
3
|
|
3
4
|
module BEL::Translator::Plugins
|
@@ -5,6 +6,7 @@ module BEL::Translator::Plugins
|
|
5
6
|
module Rdf
|
6
7
|
|
7
8
|
# OpenClass to contribute RDF functionality to BEL Model.
|
9
|
+
|
8
10
|
class ::BEL::Namespace::NamespaceDefinition
|
9
11
|
|
10
12
|
def to_uri
|
@@ -18,43 +20,38 @@ module BEL::Translator::Plugins
|
|
18
20
|
|
19
21
|
class ::BEL::Model::Parameter
|
20
22
|
|
23
|
+
CONCEPT_ENCODING = {
|
24
|
+
:G => BEL::RDF::BELV.GeneConcept,
|
25
|
+
:R => BEL::RDF::BELV.RNAConcept,
|
26
|
+
:P => BEL::RDF::BELV.ProteinConcept,
|
27
|
+
:M => BEL::RDF::BELV.MicroRNAConcept,
|
28
|
+
:C => BEL::RDF::BELV.ComplexConcept,
|
29
|
+
:B => BEL::RDF::BELV.BiologicalProcessConcept,
|
30
|
+
:A => BEL::RDF::BELV.AbundanceConcept,
|
31
|
+
:O => BEL::RDF::BELV.PathologyConcept,
|
32
|
+
}
|
33
|
+
|
21
34
|
def to_uri
|
22
35
|
@ns.to_rdf_vocabulary[URI::encode(@value)]
|
23
36
|
end
|
24
37
|
|
25
|
-
def to_rdf
|
38
|
+
def to_rdf(graph_name = nil)
|
26
39
|
uri = to_uri
|
27
40
|
encodings = ['A'].concat(@enc.to_s.each_char.to_a).uniq
|
28
41
|
if block_given?
|
29
|
-
encodings.map { |enc| concept_statement(enc, uri) }.each do |stmt|
|
42
|
+
encodings.map { |enc| concept_statement(enc, uri, graph_name) }.each do |stmt|
|
30
43
|
yield stmt
|
31
44
|
end
|
32
45
|
else
|
33
|
-
encodings.map { |enc| concept_statement(enc, uri)}
|
46
|
+
encodings.map { |enc| concept_statement(enc, uri, graph_name)}
|
34
47
|
end
|
35
48
|
end
|
36
49
|
|
37
50
|
private
|
38
51
|
|
39
|
-
def concept_statement(encoding_character, uri)
|
40
|
-
|
41
|
-
|
42
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.GeneConcept)
|
43
|
-
when 'R'
|
44
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.RNAConcept)
|
45
|
-
when 'P'
|
46
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.ProteinConcept)
|
47
|
-
when 'M'
|
48
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.MicroRNAConcept)
|
49
|
-
when 'C'
|
50
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.ComplexConcept)
|
51
|
-
when 'B'
|
52
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.BiologicalProcessConcept)
|
53
|
-
when 'A'
|
54
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.AbundanceConcept)
|
55
|
-
when 'O'
|
56
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.PathologyConcept)
|
57
|
-
end
|
52
|
+
def concept_statement(encoding_character, uri, graph_name = nil)
|
53
|
+
encoding = CONCEPT_ENCODING.fetch(encoding_character.to_sym, BEL::RDF::BELV.AbundanceConcept)
|
54
|
+
::RDF::Statement(uri, ::RDF.type, encoding, :graph_name => graph_name)
|
58
55
|
end
|
59
56
|
end
|
60
57
|
|
@@ -100,21 +97,21 @@ module BEL::Translator::Plugins
|
|
100
97
|
end
|
101
98
|
end
|
102
99
|
|
103
|
-
def to_rdf
|
100
|
+
def to_rdf(graph_name = nil)
|
104
101
|
uri = to_uri
|
105
102
|
statements = []
|
106
103
|
|
107
104
|
# rdf:type
|
108
105
|
type = rdf_type
|
109
|
-
statements <<
|
110
|
-
statements <<
|
106
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, BEL::RDF::BELV.Term, :graph_name => graph_name)
|
107
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, type, :graph_name => graph_name)
|
111
108
|
fx = @fx.respond_to?(:short_form) ? @fx.short_form : @fx.to_s.to_sym
|
112
109
|
if BEL::RDF::ACTIVITY_TYPE.include? fx
|
113
|
-
statements <<
|
110
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasActivityType, BEL::RDF::ACTIVITY_TYPE[fx], :graph_name => graph_name)
|
114
111
|
end
|
115
112
|
|
116
113
|
# rdfs:label
|
117
|
-
statements <<
|
114
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDFS.label, to_s.force_encoding('UTF-8'), :graph_name => graph_name)
|
118
115
|
|
119
116
|
# special proteins (does not recurse into pmod)
|
120
117
|
if [:p, :proteinAbundance].include?(fx)
|
@@ -132,22 +129,22 @@ module BEL::Translator::Plugins
|
|
132
129
|
mod_string = pmod.arguments.map(&:to_s).join(',')
|
133
130
|
mod_type = BEL::RDF::MODIFICATION_TYPE.find {|k,v| mod_string.start_with? k}
|
134
131
|
mod_type = (mod_type ? mod_type[1] : BEL::RDF::BELV.Modification)
|
135
|
-
statements <<
|
132
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasModificationType, mod_type, :graph_name => graph_name)
|
136
133
|
last = pmod.arguments.last.to_s
|
137
134
|
if last.match(/^\d+$/)
|
138
|
-
statements <<
|
135
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasModificationPosition, last.to_i, :graph_name => graph_name)
|
139
136
|
end
|
140
137
|
# link root protein abundance as hasChild
|
141
138
|
root_param = @arguments.find{|x| x.is_a? ::BEL::Model::Parameter}
|
142
139
|
(root_id, root_statements) = ::BEL::Model::Term.new(:p, [root_param]).to_rdf
|
143
|
-
statements <<
|
140
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasChild, root_id, :graph_name => graph_name)
|
144
141
|
statements += root_statements
|
145
142
|
return [uri, statements]
|
146
143
|
elsif @arguments.find{|x| x.is_a? ::BEL::Model::Term and BEL::RDF::PROTEIN_VARIANT.include? x.fx}
|
147
144
|
# link root protein abundance as hasChild
|
148
145
|
root_param = @arguments.find{|x| x.is_a? ::BEL::Model::Parameter}
|
149
146
|
(root_id, root_statements) = ::BEL::Model::Term.new(:p, [root_param]).to_rdf
|
150
|
-
statements <<
|
147
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasChild, root_id, :graph_name => graph_name)
|
151
148
|
statements += root_statements
|
152
149
|
return [uri, statements]
|
153
150
|
end
|
@@ -158,17 +155,17 @@ module BEL::Translator::Plugins
|
|
158
155
|
x.is_a? ::BEL::Model::Parameter and x.ns != nil
|
159
156
|
}.each do |param|
|
160
157
|
concept_uri = param.ns.to_uri + param.value.to_s
|
161
|
-
statements <<
|
158
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasConcept, BEL::RDF::RDF::URI(URI.encode(concept_uri)), :graph_name => graph_name)
|
162
159
|
end
|
163
160
|
|
164
161
|
# BEL::RDF::BELV.hasChild]
|
165
162
|
@arguments.find_all{|x| x.is_a? ::BEL::Model::Term}.each do |child|
|
166
163
|
(child_id, child_statements) = child.to_rdf
|
167
|
-
statements <<
|
164
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasChild, child_id, :graph_name => graph_name)
|
168
165
|
statements += child_statements
|
169
166
|
end
|
170
167
|
|
171
|
-
|
168
|
+
[uri, statements]
|
172
169
|
end
|
173
170
|
end
|
174
171
|
|
@@ -176,9 +173,6 @@ module BEL::Translator::Plugins
|
|
176
173
|
|
177
174
|
def to_uri
|
178
175
|
case
|
179
|
-
when subject_only?
|
180
|
-
tid = @subject.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
181
|
-
BEL::RDF::BELR[URI::encode(tid)]
|
182
176
|
when simple?
|
183
177
|
sub_id = @subject.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
184
178
|
obj_id = @object.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
@@ -206,17 +200,21 @@ module BEL::Translator::Plugins
|
|
206
200
|
nrel = @object.relationship.to_s
|
207
201
|
end
|
208
202
|
BEL::RDF::BELR[URI::encode("#{sub_id}_#{rel}_#{nsub_id}_#{nrel}_#{nobj_id}")]
|
203
|
+
else
|
204
|
+
# Interpret as subject only BEL statement.
|
205
|
+
tid = @subject.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
206
|
+
BEL::RDF::BELR[URI::encode(tid)]
|
209
207
|
end
|
210
208
|
end
|
211
209
|
|
212
|
-
def to_rdf
|
213
|
-
uri
|
210
|
+
def to_rdf(graph_name = nil)
|
211
|
+
uri = to_uri
|
214
212
|
statements = []
|
215
213
|
|
216
214
|
case
|
217
215
|
when subject_only?
|
218
216
|
(sub_uri, sub_statements) = @subject.to_rdf
|
219
|
-
statements <<
|
217
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasSubject, sub_uri, :graph_name => graph_name)
|
220
218
|
statements += sub_statements
|
221
219
|
when simple?
|
222
220
|
(sub_uri, sub_statements) = @subject.to_rdf
|
@@ -226,9 +224,9 @@ module BEL::Translator::Plugins
|
|
226
224
|
statements += obj_statements
|
227
225
|
|
228
226
|
rel = BEL::RDF::RELATIONSHIP_TYPE[@relationship.to_s]
|
229
|
-
statements <<
|
230
|
-
statements <<
|
231
|
-
statements <<
|
227
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasSubject, sub_uri, :graph_name => graph_name)
|
228
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasObject, obj_uri, :graph_name => graph_name)
|
229
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasRelationship, rel, :graph_name => graph_name)
|
232
230
|
when nested?
|
233
231
|
(sub_uri, sub_statements) = @subject.to_rdf
|
234
232
|
(nsub_uri, nsub_statements) = @object.subject.to_rdf
|
@@ -241,25 +239,25 @@ module BEL::Translator::Plugins
|
|
241
239
|
nuri = BEL::RDF::BELR["#{strip_prefix(nsub_uri)}_#{nrel}_#{strip_prefix(nobj_uri)}"]
|
242
240
|
|
243
241
|
# inner
|
244
|
-
statements <<
|
245
|
-
statements <<
|
246
|
-
statements <<
|
242
|
+
statements << ::RDF::Statement.new(nuri, BEL::RDF::BELV.hasSubject, nsub_uri, :graph_name => graph_name)
|
243
|
+
statements << ::RDF::Statement.new(nuri, BEL::RDF::BELV.hasObject, nobj_uri, :graph_name => graph_name)
|
244
|
+
statements << ::RDF::Statement.new(nuri, BEL::RDF::BELV.hasRelationship, nrel, :graph_name => graph_name)
|
247
245
|
|
248
246
|
# outer
|
249
|
-
statements <<
|
250
|
-
statements <<
|
251
|
-
statements <<
|
247
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasSubject, sub_uri, :graph_name => graph_name)
|
248
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasObject, nuri, :graph_name => graph_name)
|
249
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasRelationship, rel, :graph_name => graph_name)
|
252
250
|
end
|
253
251
|
|
254
252
|
# common statement triples
|
255
|
-
statements <<
|
256
|
-
statements <<
|
253
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, BEL::RDF::BELV.Statement, :graph_name => graph_name)
|
254
|
+
statements << ::RDF::Statement.new(uri, ::RDF::RDFS.label, to_s.force_encoding('UTF-8'), :graph_name => graph_name)
|
257
255
|
|
258
256
|
# evidence
|
259
257
|
evidence = BEL::RDF::BELE[Rdf.generate_uuid]
|
260
|
-
statements <<
|
261
|
-
statements <<
|
262
|
-
statements <<
|
258
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::RDF.type, BEL::RDF::BELV.Evidence, :graph_name => graph_name)
|
259
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasEvidence, evidence, :graph_name => graph_name)
|
260
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasStatement, uri, :graph_name => graph_name)
|
263
261
|
|
264
262
|
# citation
|
265
263
|
citation = @annotations.delete('Citation')
|
@@ -267,11 +265,7 @@ module BEL::Translator::Plugins
|
|
267
265
|
value = citation.value.map{|x| x.gsub('"', '')}
|
268
266
|
if citation and value[0] == 'PubMed'
|
269
267
|
pid = value[2]
|
270
|
-
statements << [
|
271
|
-
evidence,
|
272
|
-
BEL::RDF::BELV.hasCitation,
|
273
|
-
BEL::RDF::PUBMED[pid]
|
274
|
-
]
|
268
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasCitation, BEL::RDF::PUBMED[pid], :graph_name => graph_name)
|
275
269
|
end
|
276
270
|
end
|
277
271
|
|
@@ -279,23 +273,23 @@ module BEL::Translator::Plugins
|
|
279
273
|
evidence_text = @annotations.delete('Evidence')
|
280
274
|
if evidence_text
|
281
275
|
value = evidence_text.value.gsub('"', '').force_encoding('UTF-8')
|
282
|
-
statements <<
|
276
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasEvidenceText, value, :graph_name => graph_name)
|
283
277
|
end
|
284
278
|
|
285
279
|
# annotations
|
286
|
-
@annotations.each do |
|
280
|
+
@annotations.each do |_, anno|
|
287
281
|
name = anno.name.gsub('"', '')
|
288
282
|
|
289
283
|
if BEL::RDF::const_defined? name
|
290
284
|
annotation_scheme = BEL::RDF::const_get name
|
291
285
|
[anno.value].flatten.map{|x| x.gsub('"', '')}.each do |val|
|
292
286
|
value_uri = BEL::RDF::RDF::URI(URI.encode(annotation_scheme + val.to_s))
|
293
|
-
statements <<
|
287
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasAnnotation, value_uri, :graph_name => graph_name)
|
294
288
|
end
|
295
289
|
end
|
296
290
|
end
|
297
291
|
|
298
|
-
|
292
|
+
[uri, statements]
|
299
293
|
end
|
300
294
|
|
301
295
|
private
|
@@ -308,5 +302,115 @@ module BEL::Translator::Plugins
|
|
308
302
|
end
|
309
303
|
end
|
310
304
|
end
|
305
|
+
|
306
|
+
class ::BEL::Model::Evidence
|
307
|
+
|
308
|
+
def to_uri
|
309
|
+
BEL::RDF::BELE[Rdf.generate_uuid]
|
310
|
+
end
|
311
|
+
|
312
|
+
def to_rdf
|
313
|
+
uri = to_uri
|
314
|
+
statement_uri, statements = bel_statement.to_rdf(uri)
|
315
|
+
|
316
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, BEL::RDF::BELV.Evidence, :graph_name => uri)
|
317
|
+
statements << ::RDF::Statement.new(statement_uri, BEL::RDF::BELV.hasEvidence, uri, :graph_name => uri)
|
318
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasStatement, statement_uri, :graph_name => uri)
|
319
|
+
|
320
|
+
annotations = bel_statement.annotations
|
321
|
+
|
322
|
+
# citation
|
323
|
+
citation = annotations.delete('Citation')
|
324
|
+
if citation
|
325
|
+
value = citation.value.map{|x| x.gsub('"', '')}
|
326
|
+
if citation and value[0] == 'PubMed'
|
327
|
+
pid = value[2]
|
328
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasCitation, BEL::RDF::PUBMED[pid], :graph_name => uri)
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
# evidence
|
333
|
+
evidence_text = annotations.delete('Evidence')
|
334
|
+
if evidence_text
|
335
|
+
value = evidence_text.value.gsub('"', '').force_encoding('UTF-8')
|
336
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasEvidenceText, value, :graph_name => uri)
|
337
|
+
end
|
338
|
+
|
339
|
+
# annotations
|
340
|
+
annotations.each do |_, anno|
|
341
|
+
name = anno.name.gsub('"', '')
|
342
|
+
|
343
|
+
if BEL::RDF::const_defined? name
|
344
|
+
annotation_scheme = BEL::RDF::const_get name
|
345
|
+
[anno.value].flatten.map{|x| x.gsub('"', '')}.each do |val|
|
346
|
+
value_uri = BEL::RDF::RDF::URI(URI.encode(annotation_scheme + val.to_s))
|
347
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasAnnotation, value_uri, :graph_name => uri)
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
[uri, statements]
|
353
|
+
end
|
354
|
+
|
355
|
+
def to_void_dataset(void_dataset_uri)
|
356
|
+
document_header = self.metadata[:document_header]
|
357
|
+
return nil if !document_header || !document_header.is_a?(Hash)
|
358
|
+
|
359
|
+
triples = ::RDF::Repository.new
|
360
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF.type, ::RDF::VOID.Dataset)
|
361
|
+
|
362
|
+
name = version = nil
|
363
|
+
document_header.each do |property, value|
|
364
|
+
case property
|
365
|
+
when /name/i
|
366
|
+
name = value.to_s
|
367
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.title, name)
|
368
|
+
when /description/i
|
369
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.description, value.to_s)
|
370
|
+
when /version/i
|
371
|
+
version = value.to_s
|
372
|
+
when /copyright/i
|
373
|
+
waiver = RDF::Vocabulary.new('http://vocab.org/waiver/terms/').waiver
|
374
|
+
|
375
|
+
value = value.to_s
|
376
|
+
uri = RDF::URI(value)
|
377
|
+
value = if uri.valid?
|
378
|
+
uri
|
379
|
+
else
|
380
|
+
value
|
381
|
+
end
|
382
|
+
triples << ::RDF::Statement.new(void_dataset_uri, waiver, value)
|
383
|
+
when /authors/i
|
384
|
+
if value.respond_to?(:each)
|
385
|
+
value.each do |v|
|
386
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.creator, v.to_s)
|
387
|
+
end
|
388
|
+
else
|
389
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.creator, value.to_s)
|
390
|
+
end
|
391
|
+
when /licenses/i
|
392
|
+
value = value.to_s
|
393
|
+
uri = RDF::URI(value)
|
394
|
+
value = if uri.valid?
|
395
|
+
uri
|
396
|
+
else
|
397
|
+
value
|
398
|
+
end
|
399
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.license, value)
|
400
|
+
when /contactinfo/i
|
401
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.publisher, :publisher)
|
402
|
+
triples << ::RDF::Statement.new(:publisher, ::RDF.type, ::RDF::FOAF.Person)
|
403
|
+
triples << ::RDF::Statement.new(:publisher, ::RDF::FOAF.mbox, value.to_s)
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
if name && version
|
408
|
+
identifier = "#{name}/#{version}"
|
409
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.identifier, identifier)
|
410
|
+
end
|
411
|
+
|
412
|
+
triples
|
413
|
+
end
|
414
|
+
end
|
311
415
|
end
|
312
416
|
end
|
@@ -20,7 +20,7 @@ module BEL::Translator::Plugins
|
|
20
20
|
|
21
21
|
def write(objects, writer = StringIO.new, options = {})
|
22
22
|
# format = options[:format] || :ntriples
|
23
|
-
rdf_writer = Writer::RDFYielder.new(writer, :nquads)
|
23
|
+
rdf_writer = Writer::RDFYielder.new(writer, :nquads, options)
|
24
24
|
|
25
25
|
objects.each do |evidence|
|
26
26
|
rdf_writer << evidence
|
@@ -9,17 +9,37 @@ module BEL::Translator::Plugins
|
|
9
9
|
|
10
10
|
Rdf = ::BEL::Translator::Plugins::Rdf
|
11
11
|
|
12
|
-
def initialize(io, format)
|
13
|
-
rdf_writer
|
14
|
-
@writer
|
12
|
+
def initialize(io, format, options = {})
|
13
|
+
rdf_writer = find_writer(format)
|
14
|
+
@writer = rdf_writer.new(io, { :stream => true })
|
15
|
+
|
16
|
+
if options[:void_dataset_uri]
|
17
|
+
void_dataset_uri = options.delete(:void_dataset_uri)
|
18
|
+
void_dataset_uri = RDF::URI(void_dataset_uri)
|
19
|
+
unless void_dataset_uri.valid?
|
20
|
+
raise ArgumentError.new 'void_dataset_uri is not a valid URI'
|
21
|
+
end
|
22
|
+
@void_dataset_uri = void_dataset_uri
|
23
|
+
else
|
24
|
+
@void_dataset_uri = nil
|
25
|
+
end
|
26
|
+
@wrote_dataset = false
|
15
27
|
end
|
16
28
|
|
17
29
|
def <<(evidence)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
30
|
+
if !@wrote_dataset && @void_dataset_uri
|
31
|
+
void_dataset_triples = evidence.to_void_dataset(@void_dataset_uri)
|
32
|
+
if void_dataset_triples && void_dataset_triples.respond_to?(:each)
|
33
|
+
void_dataset_triples.each do |void_triple|
|
34
|
+
@writer.write_statement(void_triple)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
evidence_uri, statements = evidence.to_rdf
|
39
|
+
statements.each do |statement|
|
40
|
+
@writer.write_statement(statement)
|
22
41
|
end
|
42
|
+
@writer.write_statement(RDF::Statement.new(@void_dataset_uri, RDF::DC.hasPart, evidence_uri))
|
23
43
|
end
|
24
44
|
|
25
45
|
def done
|
data/lib/bel/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0.beta.
|
4
|
+
version: 0.4.0.beta.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Bargnesi
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2015-12-
|
14
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,4 +207,3 @@ signing_key:
|
|
207
207
|
specification_version: 4
|
208
208
|
summary: Process BEL with ruby.
|
209
209
|
test_files: []
|
210
|
-
has_rdoc:
|